반응형
기본키(Primary Key)
-값 중복을 허용하지 않는다. 식별키이다.
-NULL값을 허용하지 않는다.
-테이블에서 한 개만 생성 가능하다.
유니크키(Unique Key, Unique Index)
-값 중복을 허용하지 않는다.
-NULL값을 허용한다.
-테이블에서 여러 개 생성 가능하다.
"테이블은 오직 하나의 기본키(PK)를 가질 수 있다."
이는 여러 개의 기본키는 생성할 수 없다는 것을 의미한다.
아래의 ERD 테이블을 보자. 게시글을 읽은 사람들을 저장하기 위한 테이블이다.
board_no 와 user_id 2개의 컬럼을 기본키로 설정할 수 있는 것을 확인할 수 있다.
(예시를 위해 두 컬럼을 PK로 설정하였으나, 실제로는 UNIQUE INDEX로 설정하는 것을 권장한다.)
즉, 기본키는 단 하나의 컬럼에만 설정할 수 있다는 의미가 아니다.
컬럼에 각각 PK를 설정하는 것은 불가능하지만,
여러 컬럼을 묶어서 하나의 PK로 설정하는 것은 가능하다.
DDL로 테이블을 생성할 시에는 아래와 같이 실행해야 한다.
반응형
-- 게시글 수신확인
CREATE TABLE `cm_board_read_list` (
`board_no` FLOAT NOT NULL COMMENT '글번호', -- 글번호
`user_id` VARCHAR(20) NOT NULL COMMENT '사용자아이디', -- 사용자아이디
`read_date` TIMESTAMP NOT NULL COMMENT '읽은일시' -- 읽은일시
)
COMMENT '게시글 수신확인';
-- 게시글 수신확인
ALTER TABLE `cm_board_read_list`
ADD CONSTRAINT `PK_cm_board_read_list` -- 게시글 수신확인 기본키
PRIMARY KEY (
`board_no`, -- 글번호
`user_id` -- 사용자아이디
);
컬럼에 대해서 기본키로 설정할지 유니크키로 설정하지는 사용자의 선택에 문제이긴하다.
주민등록번호 같은 고유번호, 게시글 번호 같은 일련번호 등 유일한 값에 기본키 설정을 하는 경우가 다수이다.
그 외에 중복 값을 허용하고 싶지 않고 index를 설정하고 싶은 컬럼에 유니크키(unique index)를 설정한다.
반응형
'DataBase > Mysql' 카테고리의 다른 글
[ mysql ] with recursive 문법 (+ 프로그래머스 특정 세대의 대장균 찾기) (0) | 2024.04.09 |
---|---|
[ mysql ] join using 과 on 차이(각각 어디에 적절한가?) (0) | 2023.05.24 |
[ mysql ] 예시로 보는 인덱스 (Index) 개념 완전 이해하기 (0) | 2023.01.05 |
[ mysql ] select insert 문법 + duplicate key 기본키 중복 해결 (1) | 2021.12.08 |
[ mysql ] merge update insert (0) | 2020.06.16 |