기본 키(Primary Key)란?

표 안의 한 행을 유일하게 식별하기 위한 열 또는 열의 조합. 값이 중복되지 않고 NULL을 포함하지 않는다는 제약을 가진다. 행을 유일하게 식별할 수 있는 최소한의 열 조합(후보 키) 중에서 하나를 골라 기본 키로 한다.

일본어 명칭: 主キー

기본 키(Primary Key)은(는) 데이터베이스 기초 등 1개 분야의 연습 문제 8개에 나와요.

분야: 데이터베이스 기초

도전해 보기: 기본 키(Primary Key) 관련 문제

관계형 데이터베이스의 표에서 기본 키로 지정하는 열(또는 열의 조합)이 반드시 만족해야 하는 조건은?

  1. A값이 숫자일 것
  2. B표의 첫 번째 열일 것
  3. C값이 표 안에서 중복되지 않고 NULL을 포함하지 않을 것
정답과 해설 보기

정답: C. 값이 표 안에서 중복되지 않고 NULL을 포함하지 않을 것

기본 키는 표 안의 한 행을 유일하게 식별하기 위한 열 또는 열의 조합입니다. 그래서 기본 키의 값은 다른 행과 중복되어서는 안 되며(유일성), 값이 정해지지 않았음을 나타내는 NULL도 허용되지 않습니다(NOT NULL). SQL의 CREATE TABLE에서 PRIMARY KEY를 지정하면 DBMS(데이터베이스 관리 시스템)가 이 두 제약을 지키게 하며, 중복된 값이나 NULL을 넣으려는 조작은 오류가 됩니다. 기본 키의 값은 사원 번호 같은 숫자여도 문자열이어도 상관없고, 열의 위치에도 정해진 규칙은 없습니다. 행을 유일하게 식별할 수 있는 최소한의 열 조합을 후보 키라고 하며, 후보 키 중에서 하나를 고른 것이 기본 키입니다.

수강 표(학생번호, 과목번호, 성적)는 어느 학생이 어느 과목을 수강하여 어떤 성적을 받았는지를 기록한다. 한 학생은 여러 과목을 수강하고, 한 과목은 여러 학생이 수강한다. 같은 학생이 같은 과목을 두 번 등록하는 일은 없을 때, 이 표의 기본 키로 적절한 것은?

  1. A학생번호
  2. B과목번호
  3. C학생번호와 과목번호의 조합
정답과 해설 보기

정답: C. 학생번호와 과목번호의 조합

한 학생이 여러 과목을 수강하므로 학생번호만으로는 같은 값의 행이 여러 개 생겨 행을 유일하게 식별할 수 없습니다. 마찬가지로 한 과목을 여러 학생이 수강하므로 과목번호만으로도 유일하지 않습니다. 학생번호와 과목번호를 조합하면, 같은 학생이 같은 과목을 두 번 등록하지 않는다는 조건에 따라 한 행이 유일하게 정해집니다. 이처럼 여러 열을 조합한 기본 키를 복합 키(연결 키)라고 하며, SQL에서는 PRIMARY KEY (학생번호, 과목번호)처럼 열을 나열하여 지정합니다. 수강 표의 학생번호와 과목번호는 각각 학생 표와 과목 표의 기본 키를 참조하는 외래 키도 되며, 이 표는 학생과 과목의 다대다 관계를 나타내고 있습니다.

해설 속 기본 키(Primary Key)

기본 키(Primary Key)이(가) 나오는 문제 (8)

  1. 관계형 데이터베이스의 표에서 기본 키로 지정하는 열(또는 열의 조합)이 반드시 만족해야 하는 조건은?
  2. 수강 표(학생번호, 과목번호, 성적)는 어느 학생이 어느 과목을 수강하여 어떤 성적을 받았는지를 기록한다. 한 학생은 여러 과목을 수강하고, 한 과목은 여러 학생이 수강한다. 같은 학생이 같은 과목을 두 번 등록하는 일은 없을 때, 이 표의 기본 키로 적절한 것은?
  3. 고객 표(고객ID, 이름)의 기본 키는 고객ID이며, 주문 표(주문ID, 고객ID)의 고객ID는 고객 표의 고객ID를 참조하는 외래 키로 정의되어 있다. 고객 표에는 고객ID가 'C1'과 'C2'인 행만 있다. 이 상태에서 INSERT INTO 주문 VALUES ('O9', 'C5')를 실행했을 때의 결과로 올바른 것은?
  4. 수주 표(수주번호, 상품번호, 수량, 고객번호, 고객명)의 기본 키는 {수주번호, 상품번호}이고, 함수 종속은 {수주번호, 상품번호} → 수량, 수주번호 → 고객번호, 고객번호 → 고객명이다. 이 표를 제3정규형까지 정규화한 결과로 올바른 것은?
  5. 사원 표(사원번호, 이름, 부서코드, 부서명)의 기본 키는 사원번호이며, 모든 열은 하나의 값만 가진다. 함수 종속은 사원번호 → 이름, 사원번호 → 부서코드, 부서코드 → 부서명이다. 이 표의 정규형으로 올바른 것은?
  6. 관계형 데이터베이스의 용어에서 표(릴레이션)의 한 행에 해당하는 것은?
  7. 사원 표(사원번호, 이메일주소, 이름, 부서)에서 사원번호와 이메일주소는 둘 다 사원마다 다르며 NULL이 되지 않는다. 이름과 부서는 다른 사원과 같아질 수 있다. 이 표의 후보 키를 모두 든 것은?
  8. E-R 다이어그램에서 학생과 과목 사이에 '한 학생은 여러 과목을 수강하고, 한 과목은 여러 학생이 수강한다'는 다대다 관계가 있다. 이 관계를 관계형 데이터베이스의 표로 구현하는 방법으로 적절한 것은?

관련 용어

외래 키(Foreign Key) 관계형 데이터베이스(Relational Database) SQL 제3정규형(3NF) 정규화(Normalization) E-R 다이어그램(E-R Diagram) 2단계 로킹(2PL) 격리 수준(Isolation Level) 뷰(View) 인덱스(Index)

용어집으로 돌아가기