조합키 (복합키)
두 개 이상의 컬럼을 PK 로 지정하는 것.
테이블에 한 개의 PK 만 존재할 수 있지만 조합키를 사용하면 두 개 이상의 컬럼을 하나의 PK 로 사용할 수 있다.
📁 조합키 예시
조합키 예시를 위한 테이블을 CREATE 한다.
-- 조합키
CREATE TABLE TBL_FLOWER(
FLOWER_NAME VARCHAR2(1000),
FLOWER_COLOR VARCHAR2(1000),
FLOWER_PRICE NUMBER,
CONSTRAINT PK_FLOWER PRIMARY KEY(FLOWER_NAME, FLOWER_COLOR)
);
아래 코드를 보면 FLOWER_NAME 과 FLOEWR_COLOR 을 PK_FLOWER 이란 이름을 붙여 하나의 PK 로 선언해두었다.
CONSTRAINT PK_FLOWER PRIMARY KEY(FLOWER_NAME, FLOWER_COLOR)
조합키를 사용하면 아래와 같은 쿼리문을 작성할 수 있다.
INSERT INTO TBL_FLOWER
VALUES('장미', '검정', 5000);
INSERT INTO TBL_FLOWER
VALUES('장미', '빨강', 5000);
INSERT INTO TBL_FLOWER
VALUES('튤립', '빨강', 4500);
분명 FLOWER_NAME 과 FLOWER_COLOR 가 PK 로 선언되어있었지만
두 컬럼이 하나의 PK 로 묶여있기 때문에 '장미' 와 '빨강' 이 겹쳐도 오류가 나지 않는다.
📌 오류 CASE
다음과 같은 케이스는 오류가 난다.
INSERT INTO TBL_FLOWER
VALUES('장미', '검정', 5000);
INSERT INTO TBL_FLOWER
VALUES('장미', '빨강', 5000);
INSERT INTO TBL_FLOWER
VALUES('튤립', '빨강', 4500);
INSERT INTO TBL_FLOWER
VALUES('튤립', '빨강', 1500); -- 오류! 조합키 2개의 컬럼이 모두 일치함.
PK 로 묶어둔 2개의 컬럼의 값이 일치하기 때문에 위의 코드는 오류가 난다.
'📁 Language > 🛢️ SQL' 카테고리의 다른 글
[SQL] 모델링(기획) 단계 메모 (0) | 2024.03.21 |
---|---|
[SQL] 무결성 (0) | 2024.03.21 |
[SQL] 제약 조건 (PK, FK, UK, NOT NULL, CHECK) (0) | 2024.03.21 |
[SQL] DDL (CREATE, ALTER, DROP, TRUNCATE) (0) | 2024.03.20 |
[SQL] DML (SELECT, INSERT, UPDATE, DELETE) (0) | 2024.03.20 |