2021. 10. 12. 19:09ㆍMajor`/DB
관계 데이터 모델 (Relational Data Model)
- 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델
- 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장
기본 용어
- 릴레이션(Relation) : 행과 열로 구성된 테이블
- 행(Row) : 투플(Tuple)
- 열(Column) : 애트리뷰트(Attribute) or 속성
- 테이블 : 릴레이션(Relation)
- 도메인(Domain)
- 하나의 속성이 가질 수 있는 모든 값의 집합
- 속성의 특성을 고려한 데이터 타입(INT, CHAR, VARCHAR...)
- 널(Null)
- 속성 값을 아직 모르거나 해당되는 값이 없음을 표현
- 숫자 0도 아니고, 공백도 아닌 값
- 차수(Degree) ≥ 1
- 한 릴레이션에 들어있는 속성(열)의 개수
- 최소 차수 = 1
- 자주 바뀌지 않음 ex) 고객정보, 직업, 나이...
- 카디날리티(Cardinality) ≥ 0
- 한 릴레이션의 행(투플)의 개수
- 최소 카디날리티 = 0
- 시간이 지남에 따라 계속 변함 ex) 고객이 추가되면 튜플 또한 추가됨
- if Cardinality =0 => 고객 X (아직 데이터가 존재하지 않는다)
릴레이션의 구성
- 릴레이션 스키마 (Relation Schema)
- 릴레이션의 논리적 구조
- 릴레이션 이름과 속성 이름으로 정의 ex) 고객(고객 아이디, 고객 이름, 나이, 등급, 직업, 적립금)
- 릴레이션의 틀
- 자주 바뀌지 않음
- 릴레이션 인스턴스 (Relation Instance)
- 릴레이션에 실제 저장되는 데이터의 집합
- 릴레이션에 포함 되어 있는 투플들의 집합
- 시간이 지남에 따라 계속 변함
릴레이션의 특성
1. 투플의 유일성
- 1개의 릴레이션에는 동일한 투플이 존재할 수 없다 -> 릴레이션은 서로 다른 투플들의 '집합'
- 키가 존재한다 -> 각 투플들을 고유하게 식별할 수 있는 하나 이상의 속성들의 모임
2. 속성의 원자성(단일성)
- 한 투플의 각 속성은 단일 값(원자 값)을 가진다
- 속성 값은 분해 불가능
3. 투플의 무순서
4. 속성의 무순서
5. 한 속성의 값은 모두 같은 도메인 값을 가진다
6. 속성은 서로 다른 이름을 가진다 -> 서로 다른 릴레이션 간에는 같은 이름을 가진 속성이 있어도 된다.
릴레이션의 키
- 키 (Key)
- 릴레이션에서 투플을 유일하게 식별할 수 있는 속성 혹은 속성들의 집합
- 각각의 투플에 포함된 속성들 중 어느 하나는 값이 달라야 한다.
- 키가 되는 속성은 반드시 값이 달라야 한다 -> 그래야 투플들을 서로 구별할 수 있다.
- 슈퍼키(Super Key), 후보키(Candidate Key), 기본키(Primary Key), 대체키(Alternate Key), 외래키(Foreign Key)
키의 종류
학번 | 이름 | 주민등록번호 |
201051516 | 가나다 | 900101-1234567 |
201246896 | 라마바 | 920505-2894561 |
201643321 | 사아자 | 960718-1234654 |
202091347 | 차카타 | 000101-3465464 |
1. 슈퍼키(Super Key) : 유일성 O / 최소성 X
- 투플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성들의 집합
- 투플들을 고유하게 식별하는데 꼭 필요하지 않은 속성들을 포함할 수 있다 -> 구분되기만 하면 가능하다
- 1개 이상 존재
- 학번 / 주민등록번호 / (학번, 주민등록번호) / (학번, 이름) / (주민등록번호, 이름) / (학번, 주민등록번호, 이름)
※ '이름'은 행이 추가됨에 따라 같은 이름(유일성 X)이 나올 수 있기 때문에 '이름' 하나로는 슈퍼키가 되지 못한다.
2. 후보키(Candidate Key) : 유일성 O / 최소성 O
- 투플을 유일하게 식별할 수 있는 속성들의 최소 집합
- 모든 릴레이션에는 최소 1개 이상의 후보키가 있다
- 학번 / 주민등록번호
※ 투플을 구별하는 속성이 하나면 단일키(Single Key), 2개 이상이면 복합키(Composite Key)
3. 대체키(Alternate Key)
- 후보키 중 선택받지 못한 키
4. 기본키(Primary Key)
- 후보키 중 선택받은 키
※ 기본키의 특징
- 속성이 항상 고유한 값을 가져야 한다
- 속성이 NULL 값을 가지면 안 된다
- 속성의 값이 변경될 가능성이 낮아야 한다
- 테이블 당 기본키는 1개이다
- 후보키 중 릴레이션의 특성을 가장 잘 반영하는 하나를 선택
- 기본키 : 학번
- 릴레이션 스키마를 표현할 때 밑줄을 그어 표시한다.
5. 외래키(Foreign Key)
- 관계 데이터 모델의 릴레이션 간의 관계를 표현한다
- 다른 릴레이션의 기본키를 참조하는 속성이다
- 외래키가 포함된 테이블을 자식 테이블 / 외래키 값을 제공하는 테이블을 부모 테이블
- 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 한다
- 참조되는 값이 변경되면 참조하는 값도 변경된다
- NULL 값과 중복 값 등이 허용된다
- 자기 자신의 기본키를 참조하는 외래키도 가능하다
- 외래키가 기본키의 일부가 될 수 있다
- FK라고 명시를 해줘야 한다
※ Example
고객(고객번호, 이름, 주민번호, 주소, 핸드폰)
도서(도서번호, 도서 이름, 출판사, 가격)
주문(주문번호, 고객번호(FK), 도서번호(FK), 판매 가격, 주문 일자)
※ 외래키의 존재 이유 = 데이터 무결성
- 무결성 : 데이터가 항상 정확한 값을 유지하는 성질