Myo-Kyeong Tech Blog

[ MySQL ] 데이터베이스 키(Key) 종류 - 기본키, 대체키, 후보키, 인공키 본문

데이터베이스

[ MySQL ] 데이터베이스 키(Key) 종류 - 기본키, 대체키, 후보키, 인공키

myo-kyeong 2023. 7. 19. 18:15
728x90
반응형

 

 

Key (키)

  • 데이터를 구분할 때 사용하는 컬럼들의 집합
  • 예를 들어, 사용자 정보를 저장하는 테이블에서 {이메일}, {주민등록번호}, {아이디}, {이름, 전화번호} 등의 조합을 키로 사용할 수 있음. 

 

Candidate Key (후보키 = 최소키)

  • 후보키 = 최소키
  • 키 중에서 데이터를 구분하는데 필요한 최소한의 정보만을 사용하는 키를 의미
  • 예를 들어, {이메일}, {주민등록번호}, {아이디}, {이름, 전화번호} 중에서 {이름, 전화번호}는 두 가지 정보를 동시에 사용하므로 최소 항목이 아니라고 볼 수 있음. 

 

Primary Key (기본 키)

  • candidate key 중에서 DBMS 관리자가 사용하기로 결정한 키
  • 예를 들어, DBMS 관리자가 '아이디' 컬럼 값을 데이터를 구분하는 키로 사용하기로 결정했다면, {아이디}가 주 키가 되고,  주 키로 선택되지 않은 모든 후보키는 대안 키가 됨
  • 줄여서 PK라고 표시
  • PK 컬럼을 지정하지 않으면 데이터가 중복 될 수 있음. 

 

[예제]

create table test1(
  name varchar(20) primary key,
  kor int,
  eng int,
  math int
);

위의 코드의 경우 'name'열이 기본 키로 선언되며 데이터베이스는 이 필드에 대해 중복 값을 허용하지 않습니다.

만약, 둘 이상의 열을 사용하여 기본 키를 생성하는 경우 다음과 같이 작성합니다. 

/*'이름' 과 '나이'의 조합이 기본 키인 경우*/
create table test1(
  name varchar(20),
  age int,
  kor int,
  eng int,
  math int,
  constraint test1_pk primary key(name, age)
);

 

Alternate Key (대체 키)

  • candidate key 중에서 primary key로 선택된 키를 제외한 나머지 키
  • 비록 primary key는 아니지만, primary key 처럼 데이터를 구분하는 용도로 대신 사용할 수 있다고 해서 대안 키 (Alternate Key) 라고 부름
  • 대안 키는 DBMS에서 unique 컬럼으로 지정

 

[예제]

create table test1(
  no int primary key,
  name varchar(20),
  age int,
  kor int,
  eng int,
  math int,
  constraint test1_uk unique (name, age)
);

 

Artificial Key (인공키)

  • Primary Key로 사용하기에 적절한 컬럼을 찾을 수 없는 경우에 인공적으로 키로 사용할 컬럼을 추가
    •  예시) 게시글 - 제목, 내용, 작성자, 등록일, 조회수 등으로는 구분하기 어려울 때 
  • 보통 일련번호를 저장할 정수 타입의 컬럼을 추가
    • 예시) 게시글 번호라는 새로운 컬럼 추가
  • 대다수의 SNS 서비스들은 이러한 일련 번호를 Primary Key 사용
    • 회원 탈퇴의 경우 : 회원이 탈퇴하더라도, 그 회원이 작성한 게시글을 계속 유지해야하는 경우, 회원 아이디 대신 일련번호를 사용하면 아이디가 삭제되더라도 해당 게시글을 계속 유효하게 처리할 수 있음

 

728x90
반응형