기타/🚪 DB

MySQL/MariaDB # PRIMARY KEY, UNIQUE KEY, FOREIGN KEY

둥굴둥굴둥굴레차 2021. 7. 30. 16:08

 

PRIMARY KEY (PK, 기본키)

테이블에서 대표되는 key / 테이블의 식별자 역할
  1. 중복을 허용하지 않는다. (Unique)
  2. NULL값을 허용하지 않는다. (NOT NULL)
  3. 테이블에 하나만 설정할 수 있다.
    이 속성을 통해 다른 테이블과 연관관계(Join)를 가진다.

 


 

[참고] PRIMARY KEY가 복수일 수는 없지만 PRIMARY KEY를 구성하는 칼럼은 복수일 수 있다.

 

아래는 PRIMARY KEY를 구성하는 칼럼을 복수로 만든 쿼리문이다.

CREATE TABLE sample(
	product_a CHAR(10),
	product_b CHAR(10),
	product_c CHAR(10) NOT NULL,
	product_d CHAR(10) NOT NULL,
	CONSTRAINT PRIMARY KEY (product_a, product_b)
	);

 

 

따라서 이렇게 테이블로 보았을 땐 PK값이 "2개인 것처럼" 보인다.

 

 



UNIQUE KEY

  1. 중복을 허용하지 않는다. (Unique)
     - 따라서 무결성 체크에 사용된다.
     - 해당 칼럼의 입력값 각각이 모두 유일하다는 것을 보장.
  2. NULL값을 허한다. (NULL)
  3. 한 개의 테이블 안에서 여러 개에 지정이 가능하다.

 

 

FOREIGN KEY (FK)

Join 등으로 다른 테이블과 연관관계를 맺을 경우 다른 테이블의 PK값을 참조하는 칼럼

제약조건으로서의 역할도 한다.

 

  • RESTRICT
    FK 관계를 맺고 있는 데이터 ROW의 수정 또는 삭제를 막는다.

  • CASCADE
    FK 관계를 맺을 때 가장 흔하게 접할 수 있는 옵션
    FK와 관계를 맺은 상대 PK를 직접 연결해서 DELETE 또는 UPDATE 시 상대 Key 값도 삭제 또는 갱신시킨다.
    이때에는 Trigger가 발생하지 않으니 주의하자.

  • SET NULL
    논리적 관계상 부모의 테이블.
    즉 참조되는 테이블의 값이 변경 또는 삭제될 때 자식 테이블의 값을 NULL로 만든다.
    UPDATE 쿼리로 인해 SET NULL 이 허용된 경우에만 동작한다.

  • NO ACTION
    RESTRICT 옵션과 동작이 같지만, 체크를 뒤로 미룬다.

  • SET DEFAULT
    변경 또는 삭제 시에 값을 DEFAULT 값으로 세팅한다.

 

 


 

🔽 Reference

 

2개 이상의 다중 컬럼으로 기본키 지정하기

개발 업무를 하려면 필수적으로 ERD를 보게 되는데, 그냥 어렴풋이 넘겨짚었던 개념을 이제서야 정리한다. DB테이블의 Properties 또는 ERD를 보면 아래 예제처럼 2개 이상의 칼럼이 Primary Key로 지정

hoon93.tistory.com

 

MySQL 에서 사용하는 Key 의 정의와 종류들에 대하여

RDB 를 포스팅할 때 가장 먼저 정리해야 하는 부분인데 다소 순서가 밀렸다... 이번 포스팅에서는 Database 를 다루는 데 있어서 가장 기본적인 Table 의 Key 에 대해 정리한다. Database 에서 Key 의 의미

jins-dev.tistory.com