[DB] 데이터베이스 키(key)

박정현·2023년 10월 26일
0

💽 데이터베이스

목록 보기
6/11
post-thumbnail

1. 키(Key)

키(Key)는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 Attribute(속성)입니다.

튜플 : 릴레이션을 구성하는 각각의 행, 속성의 모임으로 구성된다. 파일 구조에서는 레코드와 같은 개념, 튜플의 수 = 카디널리티(Cardinality) = 기수 = 대응수

2. 키(Key)의 종류

1) 후보키(Candidate Key)

  • 후보키(candidate key)는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합이다.
  • 기본키가 될 수 있는 키
  • 유일성 = 학번,이름,주소
  • 최소성 = 학번, 주민등록번호

만약 이름 속성은 후보키가 될 수 있을까?

동명이인이 있을 수 있으므로 최소성을 만족시키지 못한다. 따라서 후보키가 될 수 없다.

2) 슈퍼키(Super Key)

  • 슈퍼키(super key)는 유일성의 특성을 만족하는 속성 또는 속성들의 집합이다.
  • 학번-이름, 학번=이름-주소 등의 결합을 말한다.
  • 유일성을 만족하는 키, 최소성을 만족하지 않아도 된다.

3) 기본키(Primary Key) ⭐

  • 릴레이션에서 투플을 구별하기 위해 여러 개의 후보키를 모두 사용할 필요는 없다.
  • 데이터베이스 설계자나 관리자는 여러 후보키 중에서 기본적으로 사용할 키를 반드시 선택해야 하는데 이것이 기본키(primary key)다.
  • 만약 후보키가 1개만 존재하면 당연히 해당 후보키를 기본키로 선택해야 하겠지만 여러 개일 경우에는 데이터베이스 사용 환경을 고려하여 적합한 것을 기본키로 선택하면 된다.

4) 대체키(Alternate Key)

  • 대체키(alternate key)는 기본키로 선택되지 못한 후보키들이다.

5) **외래키 (Foreign Key)**

  • 외래키(foreign key)는 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키다.
  • 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래키다. 외래키는 릴레이션들 사이의 관계를 올바르게 표현하기 위해 필요하다.
  • join관계에서 기본키를 참조하는 키이다.
  • 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없다.(참조 무결성 조건)

🙋‍♂️ 주문고객(FK)가 고객아이디를 참조할 때

  • 주문고객 속성은 고객아이디를 참조한다.
  • 주문고객과 같이 외래키를 가진 릴레이션을 참조하는 릴레이션이라고 하고 고객 릴레이션과 같이 기본키를 가진 릴레이션을 참조되는 릴레이션이라 한다.
  • 따라서 외래키 속성의 도메인과 참조되는 기본키 속성의 도메인은 반드시 같아야 한다. 도메인이 같아야 연관성 있는 투플을 찾기 위한 비교 연산이 가능하기 때문이다.

3. 외래키 설정방법

외래키를 설정하는 방법으로는 SQLDeveloper에서 직접 alter를 통해 외래키를 설정하는 방법이 있고. 아니면 Eclipse에서 ER모델링을 통해 외래키를 설정할 수도 있다.

1) 설정방법1 [외래키는 참조하는 키가 있는 테이블에서 작성]

✅ **ALTER TABLE** 참조하는테이블명 **ADD FOREIGN KEY** (외래키) **REFERENCES** 테이블(기본키) **;**
ALTER TABLE board1
	ADD FOREIGN KEY (userId)
	REFERENCES writer_tb(userId)
;
  • board1 테이블의 userId는 writer_tb 테이블의 userId를 참조한다.
  • board1 테이블의 userId는 writer_tb 테이블의 userId에 없는 값을 넣을 수 없다.
  • board1: 참조하는 테이블(릴레이션)
  • writer_tb: 참조되는 테이블(릴레이션)

2) 설정방법2 [ER모델]

  • board1 테이블의 외래키 userId는 writer_tb테이블의 userId(기본키)를 참조한다.
  • 이때 1 대 多 관계에 있다.

  • Sql developer에서 테이블의 model에 들어가면 자동으로 ERD한것을 볼 수 있다.(🦜새발쪽이 多)

1. 제약조건이란?

제약조건은 테이블에 입력되는 데이터가 사용자가 원하는 조건을 만족하는 데이터만 입력되는 것을 보장하는 것을 말한다.

profile
개발을 개발괴발하지 않기 위한 노력

0개의 댓글