본문 바로가기
DB

DB 개념 3편 - RDB 무결성과 키

by suhsein 2024. 8. 22.
728x90

📌관계형 모델의 Integrity Rule

데이터 무결성이란 데이터의 정확성(accuracy)과 일관성(consistency)이 보장된 상태를 일컫는다.

  1. Entity Integrity 개체 무결성
    Entity는 이 세상에 구분할 수 있는 모든 것이다.
    일례로 tuple도 개체로서 구분이 가능해야하며, 각각의 key 값으로 개체를 구분한다.
    개체무결성은 primary key로 참여하는 모든 attributes의 attribute 값은 null이 되어서는 안된다는 조건이다.
  2. Referential Integrity 참조 무결성
    관계형 DB에서 한 테이블의 foreign key 값은 다른 테이블의 primary key 값을 참조할 수있다.
    ※ 주의 : foreign key는 null 값을 가질 수 있다. 하지만 primary key는 반드시 not null 값만 허용한다.
    참조무결성은 어떤 table이 참조하려는 attribute 값은 반드시 null 혹은 참조되는 table에 존재해야한다는 조건이다.
  3. Domain Integrity 도메인 무결성 
    데이터가 정의된 도메인 안에서 유효한 값
    을 가져야한다는 조건이다.
    varchar(255) => 255바이트 이하의 문자열 데이터를 값으로 가져야한다.

📌관계형 DB 구조

  • Attribute : 한 테이블 내에서 유일한 속성으로써 중복되지 않는다. 테이블의 열에 해당한다.
  • Domain : attribute의 값이 가질 수 있는 범위이다.
  • Tuple : 각 attribute 값을 취한 것으로 Domain Set을 가진다. 테이블의 행에 해당한다.
    • Tuple -> t(c_1 c_2 c_3 c_4) / c_i 는 attribute 값이다.
    • Domain Set -> D_1 x D_2 x D_3 x D_4

📌테이블 관계성

내부 관계성 Intra-Relationship : 한 개체 내부 attribute 간 관계성
외부 관계성 Inter-Relationship : 테이블 간 공통 attribute를 통한 관계성

📌Null Value의 의미

  1. Unkown Value
    모르는 값. 아직 입력되지 않은 경우.
  2. Inapplicable value
    적용 불가능한 값. 속성에 해당되지 않는 경우.

차이나식 식별자

📌Key

Key는 유일성을 만족하여 튜플을 구분하는 식별자로 사용된다.

생성 방식에 따른 분류

  1. Natural Key 자연키
    테이블 내부의 유의미한 속성값을 식별자로 사용한다.
  2. Surrogate Key 대리키
    자연키와 달리 테이블에 이미 존재하는 속성이 아니다. 시스템이 부여해주는 난수를 식별자로 사용한다.

자연키 내부 분류

자연키 ⊃ 슈퍼키 ⊃ 후보키 ⊃ 대체키, 주키

  1. Super key 슈퍼키
    튜플을 고유하게 식별할 수 있는 하나의 속성 혹은 여러 속성의 조합(집합). 최소성을 만족하지 않는다.
    •  슈퍼키는 Null 값과 중복을 허용한다.
      ex) 학번, {이름, 주민번호}
  2. Candidate key 후보키
    튜플을 고유하게 식별할 수 있고, 슈퍼키와 달리 최소성(minimal)을 만족한다. 유일성을 보장할 수 있는 최소한의 속성 집합만을 사용하는 것을 말한다. 최소성이 만족되는 키는 그 키의 속성 집합 중 하나의 속성이라도 제외한다면 유일성이 깨진다.
    • Null을 허용하지 않는다.
  3. Primary key 주키
    후보키 중 식별자로 이용하기 가장 적합한 것을 하나 고른 것이다. (DBA가 선택한다.)
  4. Alternate key 대체키(대안키)
    후보키 중 주키를 제외한 나머지 키
키 이름 유일성 최소성 Null값, 중복값
슈퍼키 O X 허용
후보키, 주키, 대체키 O O 비허용
728x90

'DB' 카테고리의 다른 글

DB 개념 6편 - ER 모델  (0) 2024.08.25
DB 개념 5편 - View와 MView의 차이  (0) 2024.08.25
DB 개념 4편 - SQL과 DB 사용자의 분류  (0) 2024.08.22
DB 개념 2편 - 데이터 모델  (0) 2024.08.20
DB 개념 1편 - DB를 사용하는 이유  (0) 2024.08.20