기본키(Primary Key)는 여러 개 사용할 수 없습니다. 하지만 기본키를 여러 개가 필요 경우가 있습니다. 예를 들어 "매년도에 전체 학생의 행사 참여에 관한 테이블을 만들 때" 학생과 년도의 정보를 묶어서 사용해야 합니다.
어떻게 해야 하는가?
우선 기본키는 주민등록번호와 같이 테이블의 각 행을 고유하게 식별하는 역할을 합니다. 해당 역할을 수행하기 위해 NULL 값을 가져서는 안 되며 각 열을 구분할 수 있어야 합니다.
또한 기본키는 더불어 최소성을 가져 각 테이블에 한 개만 둘 수 있습니다.
CREATE TABLE TEMPDB (
student_num VARCHAR(12) PRIMARY KEY,
year INT PRIMARY KEY,
activity VARCHAR(100),
note VARCHAR(100)
);
위의 방식으로 테이블을 만드는 경우에 에러를 발생합니다. 이는 기본키의 정의에 맞지 않기 때문입니다. 여기서 여러 칼럼을 기본키로 사용하기 위해서는 복합키를 사용하여야 합니다.
복합키
복합키는 기본키를 구성하는 칼럼을 여러 개 지정하여, 테이블의 각 행을 고유하게 식별하는 역할을 합니다. 여러 개를 사용하는 경우 자연스럽게 럼 순서가 정해지며 설계 시 중복이 적은 순서대로 적는 것이 필요합니다.
CREATE TABLE TEMPDB (
student_num VARCHAR(12),
year INT,
activity VARCHAR(100),
note VARCHAR(100),
CONSTRAINT stu_recordPK PRIMARY KEY(year, student_num)
/*CONSTRAINT 키이름 PRIMARY KEY(사용컬럼)*/
);
여기서 일반적으로 왼쪽부터 중복 적은 럼부터 순서대로 컬럼을작성하여 속도를 살려보도록 합시다. 인덱스를 활용하여 속도를 개선할 수도 있습니다. 해당 경우에는 적절히 바꾸어보도록 합니다..
학번 | 년도 |
201721 | 2022 |
2023 | |
201722 | 2023 |
201723 | 2023 |
일반적으로 사용할 때
년도 | 학번 |
2023 | 201721 |
201722 | |
201723 | |
2022 | 201721 |
인덱스를 사용할 때
마지막으로
DB 성능도 중요하고 안정적인 부분도 필요한데 해당 부분에 대하여 더 많은 학습을 하고 나중에 기술하도록 하겠습니다.
'컴퓨터 > MySQL' 카테고리의 다른 글
MySQL (10) - Transaction(트랜잭션)에 대하여 알아보자 (0) | 2023.03.23 |
---|---|
MySQL (9) - 내장함수를 이용하여 글자를 다뤄보자 (0) | 2023.03.16 |
MySQL (7) - JOIN에 대하여 알아보자 (0) | 2023.03.02 |
MySQL (6) - 무결성 제약조건 (0) | 2022.06.18 |
MySQL (5) - 테이블을 만져보자 (CREATE, ALTER, DROP) (0) | 2022.04.30 |