728x90
0. Background
0-1. 데이터베이스 무결성
무결성이란?
데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성
1) 개체 무결성 Entity Integrity
- 첫 번째 조건: 기본키를 구성하는 속성은 null 값을 가질 수 없다.
- 두 번째 조건: 기본키를 구성하는 속성은 다른 레코드와 중복될 수 없다.
- 예) 학생이라는 개체를 표현하기 위해 데이터베이스 표에서 학번, 이름, 학과 속성으로 표현을 할 수 있다. 학생을 표현할 때 학번을 그 기본키로 정했다면 학번에 null 값이 있어서는 안 된다.
2) 참조 무결성 Referential Integrity
- 외래키를 구성하는 조건은 참조 릴레이션(테이블)의 기본키 값과 동일해야 한다.
👉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
3) 도메인 무결성 Domain Integrity
- 속성값은 속성이 정의된 도메인의 범위를 벗어날 수 없다.
- 예) 특정 릴레이션에서 생물학적 성별을 나타내는 속성은 male, female을 의미하는 값을 벗어날 수 없다.
0-2. 최소성과 유일성
1) 유일성
- 하나의 키 값으로 레코드를 식별할 수 있는 성질
- 여러 개의 레코드가 존재할 때 각각의 레코드는 유일해야 하며 유일성을 입증하고 각각의 레코드를 구분할 수 있는 속성이 필요하다.
- 예) 상품의 정보(상품일련번호, 상품명, 판매가 등)를 저장한 릴레이션이 존재할 때 상품명과 판매가 속성은 중복될 여지가 있는 속성이다. 하지만 상품일련번호 속성에서 중복은 발생할 수 없다. 여기서 키는 상품일련번호가 될 것이며 이 상품 번호로 인해 각 레코드를 구분할 수 있는 유일성이 보장된다.
2) 최소성
- 최소한의 속성들로만 키를 만드는 성질
- 예) 상품의 정보 (상품일련번호, 상품명, 판매가 등)를 저장한 릴레이션이 존재하고 상품일련번호와 상품명을 묶어 키로 지정되어 있다고 할 때 이 키는 각 레코드를 구분할 수 있다. 하지만 상품일련번호라는 하나의 속성을 통해 레코드의 유일성을 보장할 수 있으므로 상품일련번호와 상품명을 묶은 키는 최소성을 만족한다고 볼 수 없다.
1. 의미
데이터베이스에서 조건에 만족하는 레코드(튜플)를 찾거나 정렬할 때 기준이 되는 속성. 또는 그러한 속성의 집합
2. 종류
2-1. 슈퍼키 Super Key
- 릴레이션 내에 있는 속성들의 집합으로 구성되는 키
- 유일성O 최소성X
- 상품 리스트 릴레이션을 보면 상품번호, 상품명, 판매가, 상품 정보의 속성이 있다. 이중 개별 속성뿐만 아니라 각 속성을 묶어서 하나의 속성으로 만드는 것도 가능한데 상품 번호 + 상품명으로 속성을 만들 수 있고 판매가 + 상품 정보로도 가능하다. 이 경우 판매가 + 상품정보 속성은 중복값이 발생할 수 있으므로 슈퍼키가 될 수 없지만 상품번호 + 상품명 속성은 슈퍼키가 될 수 있다.
- 👉 어떤 속성끼리 묶어도, 또는 묶지 않아도 각 레코드를 구별할 수 있다면(유일성을 확보할 수 있다면) 그 속성은 슈퍼키가 될 수 있다.
2-2. 후보키 Candidate Key
- 튜플들을 식별할 수 있는 속성들. 기본키로 사용 가능한 후보들이 된다.
- 유일성O 최소성O
- 앞서 본 개체 무결성 원칙에 위배되지 않아야 한다.
- 여러 개의 상품을 구분하는 슈퍼 키가 모여 있는데 이들 중 키를 구성하는 속성의 수가 가장 적은 키만이 후보 키가 될 수 있다. 상품 리스트 릴레이션을 기준으로 보면 슈퍼 키는 상품 번호, 상품명, 상품번호 + 상품명, 상품번호 + 판매가, 상품번호 + 상품명 + 판매가 등이 있는데 이들 중 상품 번호와 상품명만이 최소성을 확보해 후보 키로 지정될 수 있다. 만약 관리자가 실수로 상품명을 중복해서 등록했다면 상품명은 후보키가 될 수 없다.
2-3. 기본키 Primary Key
- 후보키 중에서 특별히 선정된 키. 릴레이션에서 기본 키는 반드시 유일해야 함
- null 값이나 중복값은 가질 수 없다. (by 개체 무결성)
- 예) 학번, 주민등록번호
1) 자연키
- 하나의 릴레이션에서 레코드를 구분할 수 있는 것을 '자연스레' 뽑다 나오는 키
- 예) 회원 정보 릴레이션에서 비밀번호, 회원 등급은 기본 키로 사용할 수 없다. 이때 자연스럽게 레코드를 구분할 수 있는 속성으로 남는 게 회원 아이디와 주민등록번호가 된다.
2) 인조키
- 레코드 등록 시 인위적으로 생성한 키
- 예) 상품 번호 속성은 쇼핑몰 관리자가 레코드를 등록하며 인위적으로 생성한 키 속성이므로 인조
식별자로 자연키 vs 인조키
- 👉 인조키를 식별자로 지정하는 것이 적절하다.
- 이유1) 자연키는 변경될 수 있다.
회원 정보 릴레이션에서 전화번호 항목을 수집한다고 가정했을 때, 전화번호는 유일하지만 회우너의 상황에 따라 변경될 여지가 충분하므로 식별자로 적절하지 못하다. - 이유2) 환경이 변할 수 있다.
주민등록번호를 수집해 식별자로 사용하다가 국가에서 해당 속성을 수집하지 못하게 한다면 또 다른 대체 키 중에서 식별자를 선택해야 하는 상황이 발생한다.
2-4. 대체키 Alternate Key
- 후보키 중 기본키를 제외한 나머지 모든 키
2-5. 복합키 Composite Key
- 다수의 속성을 사용한 키
- 예) 상품 번호 + 상품명, 상품번호 + 판매가, 상품번호 + 상품명 + 판매가 등
2-6. 외래 키 Foreign Key
- 다른 릴레이션의 기본 키를 참조하는 속성
- 외래키를 통해 테이블간 관계 표현이 가능하다.
- 외래키가 존재하는 이유?
- 항상 정확한 값을 유지하는 데이터 무결성 때문
- 예) 회원 아이디가 변경됐는데 장바구니 릴레이션에서 주문자 속성은 변하지 않는다면 주문자 속성은 존재하지 않거나 잘못된 값을 참조하는 것이 되므로 이로 인해 무결성이 깨지게 됨
2-7. 유일키 Unique Key
- 중복값 X null O
- 릴레이션에서 여러 속성에 지정할 수 있다.
3. 정리
키의 종류 | 설명 |
슈퍼키 Super Key |
릴레이션 내에 있는 속성들의 집합으로 구성되는 키 유일성O 최소성X |
후보키 Candidate Key |
튜플들을 식별할 수 있는 속성들 개체 무결성 원칙에 어긋나지 않아야 함 유일성O 최소성O |
기본키 Primary Key |
후보키 중에서 특별히 선정된 키 자연키/인조키 |
대체키 Alternate Key |
후보키 중 기본키를 제외한 나머지 |
복합키 Composite Key |
다수의 속성을 사용한 키 |
외래키 Foreign Key |
다른 릴레이션의 기본 키를 참조하는 속성 데이터 무결성 때문에 존재함 |
유일키 Unique Key |
중복값X null O 릴레이션에서 여러 속성에 지정 가능 |
'Computer Science > DB' 카테고리의 다른 글
[DB] 트랜잭션(3) - 격리 수준(Isolation level)과 이상 현상 (0) | 2024.03.14 |
---|---|
[DB] 트랜잭션(2) - 병행 수행과 병행 제어(Concurrency Control) (0) | 2024.03.14 |
[DB] 트랜잭션(1) - 정의, ACID, 상태, 문법, 예외 (0) | 2024.03.13 |
스터디 1회차 예상 질문 (0) | 2024.03.11 |
[DB] ERD와 정규화(Normalization) 과정 (0) | 2024.03.11 |