데이터베이스 기본 키, 외래 키

MIN·2025년 3월 23일

weekly

목록 보기
11/31

Primary key

정의

  • 테이블에서 각 행을 유일하게 식별가능한 고유한 값을 가지고있는 속성이다.
    (기본 키 설정을 하게되면 해당 컬럼은 중복될 수 없다.(null값도 포함)

특징

  • 말 그대로 식별이 가능해야 하기 때문에 값이 두 개 이상 존재할 수 없음
  • 한 테이블에 하나만 존재
model User {
  id    Int    @id @default(autoincrement())  
  name  String               
  email String unique                        
}

네임은 겹치더라도 id라는 고유 값이 존재하면 유저들을 식별할 수 있게 된다.

Foreign key

정의

  • 다른 테이블의 생성된 primary key(기본 키)를 참조할 수 있는 속성이다.
    (참조된 값이 없는 데이터를 삽입할 수 없고 참조된 데이터가 삭제, 변경될 때의 동작을 제어할 수도 있다.
  • 테이블 간의 관계를 정의하는 역할이다.
  • CASCADE 옵션
    • ON DELETE Cascade: 참조된 기본 키가 삭제되면 해당 외래 키가 있는 행도 함께 삭제된다.
    • ON UPDATE Cascade: 기본 키 값이 변경되면 외래 키 값 자동으로 업데이트된다.
model Order {
  id          Int     @id @default(autoincrement()) 
  userId      Int
  productName String  
  user        User    @relation(fields: [userId], references: [id], onDelete: Cascade)
}
  • @relation: 두 테이블 간의 관계(연결)를 정의
  • fields: [userId]: 현재 테이블(Order)에서 외래 키(Foreign Key)
  • references: [id]: 다른 테이블(User)에서 참조할 기본 키(Primary Key)

정리
• 기본 키 한 테이블에 하나만 존재하지만 외래 키는 여러 개 존재할 수 있다.
• 외래 키 무결성을 유지하기 위해 ON DELETE CASCADE 같은 동작을 설정 가능하다.

0개의 댓글