인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Bumang님의 프로필 이미지

작성한 질문수

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

Column 옵션 탐구

@Column({unique: true})와 @PrimaryColumn()의 차이

작성

·

22

0

3:23 (nickname에 unique: true 적용)

다름이 아니라 중복을 허용하지 않을 때 @Column({ unique: true })를 해도 되지만 @PrimaryColumn()을 해도 되지 않나해서 여쭤봅니다!

혼자 리서치해본 바로는 PrimaryColumn은 식별자로써 쓰일 수 있으면 쓰고 @Column({ unique: true})는 식별자로 쓰진 않아도 될 때 적용한다는 얘기를 들었습니다.

그런데 식별자가 많아서 나쁠건 없지 않나? 싶기도 하고 nickname을 식별자로 쓸 가능성도 있으면 좋을거 같기도 해서 PrimaryColumn으로 해도 괜찮을거 같다는 생각이 들었습니다.

PrimaryColumn이 한 테이블에 너무 여러개 존재하면 안 좋다거나 그런 컨벤션이 있는 것일까요?

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

말씀하신대로 PrimaryColumn은 정의상 "식별자"입니다.

"식별자가 많아서 나쁠게 없다"라고 하셨지만 이건 나쁜게 맞습니다.

정확히 어떤 값이 어떤 필드로 구분되는지 모르기 때문이죠.

일반적으로 "식별자"는 데이터베이스 개념이 아니더라도 단 하나의 유니크한 조합으로 설정합니다.

그래서 테이블에서 여러 칼럼을 동시에 Primary로 잡게되면 각각이 식별자가 되는게 아니라 해당 필드들의 "조합"이 식별자가 됩니다.

감사합니다!

Bumang님의 프로필 이미지

작성한 질문수

질문하기