[데이터베이스] - key

링딩·2023년 3월 26일
0

Computer Science

목록 보기
10/49

키(key)

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

✨ 키(key)들의 종류

후보키: 유일성 ㅇ, 최소성 ㅇ

  • 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
  • 기본키로 사용할 수 있는 속성
  • 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야 함
    ex) <학생> 릴레이션(테이블)에서 학번이나 주민번호는 다른 레코드에서 유일하게 구별할 수 있는 기본키로 사용할 수 있음으로 후보키

기본키(Primary Key)

  • 후보키 중에서 선택한 주키(Main Key)
  • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
  • Null 값을 가질 수 ❌
  • 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음
  • (정리) : null ❌, 중복된 값 ❌
    ex) <학생> 릴레이션(테이블)에서 학번이나 주민번호가 기본키가 될 수 있음,
    <수강> 릴레이션(테이블)에서 학번+과목명조합하여 기본키가 될 수 있음

대체키

  • 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 뜻함
    ex) <학생>릴레이션(테이블)에서 학번을 기본키로 정의하면, 주민번호대체키가 됨

슈퍼키 : 유일성 ㅇ, 최소성 x

  • 테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합이다. 슈퍼키는 유일성만 만족하면 슈퍼키가 될 수 있다.
    => 어떤 속성으로 묶던 중복값이 안나오고 구별만 할 수 있으면 돼! 😁

  • 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못함
    유일성?
    -> 하나의 키로 특정 행을 바로 찾아낼 수 있는 고유한 데이터 속성을 뜻함 ex) 주민번호

ex) <학생>릴레이션(테이블)에서 학번, 주민번호, 학번+주민번호, 주민번호+성명, 학번+주민번호+성명 등으로 슈퍼키를 구성할 수 있다.


외래키(FK:Foreign Key )

  • 어떤 테이블 간의 기본 키를 참조하는 속성이다. 테이블들 간의 관계를 나타내기 위해서 사용
  • 외래키는 참조되는 테이블의 기본키와 동일한 키. 속.성.을 가진다.

ex) <수강>릴레이션(테이블)이 <학생>릴레이션(테이블)을 참조하고 있으므로 <학생>릴레이션의 학번은 기본키이고, <수강>릴레이션의 학번은 외래키이다
<수강>릴레이션의 학번에는 <학생>릴레이션의 학번에 없는 값을 입력할 수 없다

🔴 부모 테이블 먼저 삭제될 수 없다.
Why?

  • 부모테이블을 참조하는데 부모테이블이 삭제되면 자식테이블은 참조하는 것이 없어지기 때문에 외래키 오류가 생긴다.
    => 곧, 외래키 관계에서 부모테이블을 삭제하기 위해서는 자식테이블 먼저 삭제한 후 부모테이블을 삭제해야한다.

💬 또다른 예시





✨무결성 제약조건

목적 :

데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지하는 것


1. 무결성의 의미

  • 데이터베이스는 무결성이 보장되도록 여러 개체에 규정을 부여하여 운영
  • 일관된 데이터베이스 상태를 정의하는 규칙들을 묵시적으로 또는 명시적으로 정의함
    => 즉, 필요없는 데이터는 걸러내고 필요한 데이터만 남아있는 상태


2. 무결성 제약조건들

1. 도메인 제약조건 : 특정 속성값은 그 속성이 정의된 도메인에 속한 값이어야 함

  • 각 애트리뷰트 값이 반드시 원자값이어야 함
  • 각각의 속성은 숫자, 문자 등의 도메인을 가지면 해당 도메인에 맞는 데이터를 삽입해야 함
  • 그 뿐만 아니라 삽입되는 데이터를 제한하거나, 삽입되지 않을 경우 기본값, null 제한 등의 기능을 제공.

2. 키 제약조건(key constraint)

  • 키 애트리뷰트에 중복된 값이 존재해서는 안됨
    -> 기본키가 아님

3. 엔티티 무결성 제약조건(entity integrity constraint)

  • 엔티티 : 데이터 집합 (사원, 부서, 고객, 상품...)
  • 릴레이션의 기본 키를 구성하는 어떤 애트리뷰트도 널값을 가질 수 없음
    => 대체 키에는 적용되지 않음

4. 참조 무결성 제약조건(referential integrity constraint)

  • 두 릴레이션의 연관된 튜플들 사이의 일관성유지하는데 사용됨
  • 릴레이션 R2의 외래 키가 릴레이션 R1의 기본 키를 참조할 때, 참조 무결성 제약조건은 아래의 두 조건 중 하나가 성립되면 만족됨.
    1) 외래 키의 값은 R1의 어떤 투플의 기본 키 값과 같다
    2) 외래 키가 자신을 포함하고 있는 릴레이션의 기본 키를 구성하고 있지 않으면, 널값을 가진다.

📣 그 밖의 무결성 제약조건들

업로드중..





출처

inyong_pang님의 글을 참고하여 작성했습니다.

Inpa Dev 님의 글을 참고하여 작성했습니다.

쩨리쩨리 님의 글을 참고하여 작성했습니다.

profile
초짜 백엔드 개린이

0개의 댓글