[DB] 2.2 키(key)

    key = 릴레이션에서 투플들을 유일하게 '구별하는' 속성 또는 속성들의 집합

    primary key = 기본키로써, 테이블에 반드시 존재

    그 밖에 candidate key, alternate key, super key, foreign key 존재

    키의 특성

    유일성 : 투플을 구별 -> 모든 투플은 서로 다른 키 값을 가져야 한다.

    최소성 : 꼭 필요한 최소한의 속성들로만 키를 구성함

    => 릴레이션에서는 투플의 중복을 허용하지 않는다 => 투플 간 구분을 위해, 키는 반드시 다른 값을 가진다.

    키는 릴레이션 간의 관계를 맺는데도 사용된다. => foreign key의 역할

    1. super key : 유일성을 만족하는 속성 또는 속성들의 집합

    2. candidat key : 유일성과 최소성을 만족하는 속성 또는 속성들의 집합

    3. primary key : 후보키 중에서 기본적으로 사용하기 위해 선택한 키

    4. alternate key : 기본키로 선택되지 못한 후보키

    5. foreign key : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합

    슈퍼키

    투플을 유일하게 식별할하는 속성 또는 속성들의 집합

    투플을 유일하게 식별할 수 있는 값이면 모두 슈퍼키가 될 수 있다.

    ex) in 고객 릴레이션, 가능 : 고객번호, 주민번호 불가능 : 이름(동명이인), 주소(동거인), 핸드폰(사용하지 않는 유저, 한 사람이 여러개)

    => 슈퍼키는 유일성만 만족하면된다. 즉, 고객번호나 주민번호가 포함된 모든 집합은 슈퍼키가 된다.

    ex) (주민번호) (주민번호 이름) (고객번호 핸드폰 주소)...

    후보키

    투플을 유일하게 식별하는 속성의 '**최소'**집합

    in 주문 릴레이션, 고객이 여러 주문을 할 수 있음 => 유일성을 만족하지 못 함

    도서번호 => 다른 사람들이 같은 책을 주문할 수 있음.

    즉, 주문 릴레이션의 후보키는 (고객번호, 도서번호)가 된다. => 2개 이상의 속성으로 이루어진 키 = 복합키(composite key)

    기본키

    여러 후보키 중 하나를 선정하여 대표로 삼는 키

    => 후보키가 여러 개라면 릴레이션의 특성을 반영하여 하나를 선택

    기본키 선정 시 고려사항

    - 릴레이션 내 투플을 식별할 수 있는 고유한 값을 가져야 함

    - NULL 값은 ㄴ허용하지 않음

    - 키 값의 변동이 일어나지 않아야 함

    - 최대한 적은 수의 속성을 가진 것이어야 함

    - 향후 키를 사용하는 데 있어, 문제 발생 소지가 없어야 함

    NULL : '존재하지 않는다'는 의미. 공백과 0과는 다른 값이다.

    릴레이션 스키마를 표현할 때 기본키는 밑줄을 그어 표시한다.

    대체키

    후보키 중 기본키로 선정되지 않은 키

    외래키(foreign key)

    1. 다른 테이블의 기본키를 참조하는 속성 또는 속성들의 집합

    2. 관계 데이터 모델의 특징. 외래키를 이용해 다른 릴레이션과의 관계를 표현한다.

    3. 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인이 같아야한다. (but, 속성의 이름은 달라도 상관없다.)

    4. 테이블이 자기 자신의 기본키를 참조하는 외래키도 사용 가능하다. 또한, 외래키 속성은 NULL 값이 들어갈 수 있다.

    5. 외래키를 기본키로 사용할 수 있다.

     

    외래키에서는 참조하는/되는 릴레이션 사이에 부모-자식 관계가 성립한다.

    즉, 외래키를 이용해 다른 테이블의 기본키를 참조하는 테이블은 자식, 기본키를 가지고 다른 테이블에서 참조되는 테이블은 부모의 관계가 성립한다.

     

     

    무결성 제약 조건

    데이터 무결성(integrity)

    1. 도메인 무결성 제약조건

    - 도메인 제약(domain constraint)

    - 릴레이션 내의 투플들이 각 속성의 도메인에 지정된 값만을가져야 한다.

     

    2. 개체 무결성 제약조건(entity integrity constraint)

    - 기본키 제약(primary key constraint)

    - 릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙(기본키는 NULL값을 가지면 안 되며, 릴레이션 내 유일한 값이어야 함)

    삽입(insert), 수정(update) : 기본키에 이미 존재하는 내용, 또는 NULL 값은 허용하지 않는다.

    삭제(delete) : 제약 조건 없음.

     

    3. 참조 무결성 제약조건(referential integrity contraint)

    - 외래키 제약(foreign key constraint)

    - 릴레이션 간에 참조 관계를 선언하는 제약조건

    : 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다.

    삽입 : 자식 릴레이션의 외래키에 추가되는 값은, (NULL 값을 제외하고) 부모 릴레이션에 존재하는 값이어야 한다.

    삭제 : 부모 릴레이션의 경우, 참조하는 테이블을 같이 삭제할 수 있다. 따라서, 삭제를 금지하거나 다른 추가 조건이 필요하다.

             자식 릴레이션의 경우, 제약 조건 없이 삭제 가능.

    수정 : 삭제와 삽입 연산이 연속으로 수행. 즉, 삭제 옵션에 따라 처리 후 문제가 없으면 삽입 제약조건에 따라 처리된다.

     

     

     

    '강의요약 > 데이터베이스' 카테고리의 다른 글

    [DB] 4. SQL  (0) 2023.04.04
    [DB] 3. 관계대수  (0) 2023.03.20
    [DB] 2. 데이터 모델  (0) 2023.03.13
    [MySQL] 데이터베이스, DBMS  (0) 2023.03.07

    댓글