Licence
저작자표시-비영리-변경금지 2.0 대한민국 (CC BY-NC-ND 2.0 KR)
이용자는 다음의 권리를 갖습니다:
공유 — 복제, 배포, 전시, 공연 및 공중송신 (포맷 변경도 포함)
관계 데이터 모델의 기본 개념
- 릴레이션 (relation): 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것
- 속성 (attribute): 릴레이션의 열(column), 애트리뷰트
- 튜플 (tuple): 릴레이션의 행(row)
- 도메인 (domain): 하나의 속성이 가질 수 있는 모든 값의 집합 (INT, CHAR(10) 등)
- 널 (null): 속성 값을 아직 모르거나 해당되는 값이 없음을 표현한다
- 카디널리티 (cardinality): 하나의 릴레이션에서 투플의 개수
- 차수 (degree): 하나의 릴레이션에서 속성 전체 개수
이미지 출처: databaser.net
릴레이션의 구성
릴레이션 스키마 (relation schema)
- 릴레이션의 논리적 구조 (릴레이션의 뼈대)
릴레이션 인스턴스 (relation instance)
- 어느 한 시점에 릴레이션에 존재하는 튜플들의 집합 (릴레이션에 실제 들어가있는 값)
데이터베이스의 구성
데이터베이스 스키마 (database schema)
- 하나하나의 테이블(릴레이션)을 모아놓은 전체적 데이터의 구조
데이터베이스 인스턴스 (database instance)
- 데이터베이스를 구성하는 릴레이션 인스턴스의 모음
릴레이션의 특성
투플의 유일성: 하나의 릴레이션에는 동일한 투플이 존재할 수 없다.
(투플: 실제 값이다 // 실제 값이 모두 동일한 고객을 중복해서 가질 수 없다)
투플의 무순서: 하나의 릴레이션에서 투플 사이의 순서는 무의미하다.
속성의 무순서: 하나의 릴레이션에서 속성 사이의 순서는 무의미하다.
속성의 원자성: 속성 값으로 원자 값만 사용할 수 있다.
(다중값이 허용되지 않는다 / 다중값인 경우 릴레이션을 분해해 새로운 릴레이션을 만든다)
키 (key)
릴레이션에서 투플들을 유일하게 구별하는 속성 또는 속성들의 집합
키의 특성
유일성 (uniqueness)
하나의 릴레이션에서 모든 투플은 서로 다른 키 값을 가져야 한다.
(동일한 key값을 가지는 투플은 구별이 불가능하다)
최소성 (minimality)
꼭 필요한 최소한의 속성들로만 키를 구성한다.
키의 종류
슈퍼키 (super key)
유일성을 만족하는 속성 또는 속성들의 집합
고객아이디 | 고객이름 | 나이 | 등급 | 적립금 |
red | 김준석 | 20 | gold | 1000 |
blue | 이윤식 | 21 | silver | 2000 |
green | 정준영 | 24 | vip | 1500 |
ex) 고객아이디 + 고객 이름
유일한 값으로 식별만 가능하면 된다
후보키 (candidate key)
유일성과 최소성을 만족하는 속성 또는 속성들의 집합
고객아이디 CK | 고객이름 CK | 나이 | 등급 | 적립금 |
red | 김준석 | 20 | gold | 1000 |
blue | 이윤식 | 21 | silver | 2000 |
green | 정준영 | 24 | vip | 1500 |
ex) 고객아이디 or 고객이름
고객아이디만으로 식별이 가능(최소성)때문에 추가적으로 고객이름을 키로 지정할 필요가 없다
기본키 (primary key)
후보키 중에서 기본적으로 사용하기 위해 선택한 키
고객아이디 PK | 고객이름 | 나이 | 등급 | 적립금 |
red | 김준석 | 20 | gold | 1000 |
blue | 이윤식 | 21 | silver | 2000 |
green | 정준영 | 24 | vip | 1500 |
ex) 고객아이디
후보키중 하나를 선택해서 기본키로 사용한다
- NULL값을 가질 수 있는 속성이 포함된 후보키는 부적합하다- 값이 자주 변경될 수 있는 속성이 포함된 후보키는 부적합하다- 단순한 후보키를 선택한
대체키 (alternative key)
기본키로 선택되지 못한 후보키
고객아이디 PK | 고객이름 AK | 나이 | 등급 | 적립금 |
red | 김준석 | 20 | gold | 1000 |
blue | 이윤식 | 21 | silver | 2000 |
green | 정준영 | 24 | vip | 1500 |
ex) 고객이름
기본키로 고객아이디를 선택한다면 선택되지 못한 고객이름은 대체키가 된다
외래키 (foreign key)
다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
1. 릴레이션을 서로 연결할 경우 기본키와 외래키를 연결한다
- 참조되는 릴레이션: 외래키가 참조하는 기본키를 가진 릴레이션 (고객 릴레이션)
고객 Relation | 고객아이디 PK | 고객이름 | 나이 | 등급 | 적립금 |
- 참조하는 릴레이션: 외래키를 가진 릴레이션 (주문 릴레이션)
주문 Relation | 주문번호 | 주문고객 FK | 주문제품 | 수량 | 단 |
- 고객 릴레이션과 주문 릴레이션이 관계를 맺어 주문 릴레이션의 투플과 연관성 있는 고객 릴레이션의 투플을 연결할 수 있다
- 외래키 속성과 그것이 참조하는 기본키 속성의 이름은 다를 수 있지만 도메인(자료형)은 같아야 한다
기본키가 아닌 값으로 FK를 설정하면 참조하는 값이 무엇인지 불명확해져 오류가 발생할 수 있다
2. 하나의 릴레이션에는 외래키가 여러개 존재할 수도 있고 외래키를 기본키로 사용할 수도 있다
학생 Relation | 학번 PK | 이름 | 학년 |
상담 Relation | 학번 FK | 담당교사 FK | 상담일자 | 내용 |
교사 Relation | 교사번호 PK | 이름 |
상담 Relation에서 학번FK와 담당교사FK를 조합하여 상담 릴레이션의 PK로 사용할 수도 있다
3. 같은 릴레이션의 기본키를 참조하는 외래키도 정의할 수 있다.
고객아이디 PK | 고객이름 | 나이 | 추천고객 FK |
blue | 김지윤 | 25 | red |
red | 김하나 | 28 | black |
black | 박준석 | 23 | blue |
green | 이윤식 | 20 | NULL |
4. 외래키 속성은 NULL값을 가질 수 있다
-
무결성 제약조건
데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
무결성: 데이터에 결함이 없는 상태 (정확하고 유효하게 유지하는 것)
개체 무결성 제약조건
기본키를 구성하는 모든 속성은 널 값을 가질 수 없다
참조 무결성 제약조건
외래키는 참조할 수 없는 값(PK에 없는 값)을 가질 수 없다
외래키 속성이 NULL값을 가진다고 해서 참조 무결성 제약조건을 위반한 것은 아니다
ex) 주문한 고객이 탈퇴한 경우 NULL값으로 남을 수 있다
'Computer science > Database' 카테고리의 다른 글
데이터베이스의 원리와 응용 7 (0) | 2022.04.09 |
---|---|
데이터베이스의 원리와 응용 6 (0) | 2022.04.09 |
데이터베이스의 원리와 응용 4 (0) | 2022.04.09 |
데이터베이스의 원리와 응용 3 (0) | 2022.04.09 |
데이터베이스의 원리와 응용 2 (0) | 2022.04.09 |