강의 출처: '데이터베이스의 원리와 응용' / 백현미 / 한양대학교
http://www.kocw.net/home/cview.do?cid=9c591659f017851e
5. 관계데이터 모델링
<용어>
릴레이션: 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것
속성: 릴레이션의 열(애트리뷰트)
튜플: 릴레이션의 행
도메인: 하나의 속성이 가질 수 있는 모든 값의 집합 ex) CHAR(10), INT
널: 속성 값을 아직 모르거나 해당되는 값이 없음을 표현
차수: 하나의 릴레이션에서 속성의 전체 개수 = 열 개수
카디널리티: 하나의 릴레이션에서 튜플의 전체 개수 = 행 개수
<릴레이션 구성>
릴레이션 스키마: 릴레이션의 논리적 구조, 릴레이션의 이름과 릴레이션에 포함된 모든 속성 이름으로 정의
ex) 고객(고객아이디, 고객이름, 나이, 등급, 직업, 적립금)
릴레이션 인스턴스: 어느 한 시점에 릴레이션에 존재하는 튜플들의 집합
<데이터베이스의 구성>
데이터베이스 스키마: 릴레이션 스키마의 모음
데이터베이스 인스턴스: 릴레이션 인스턴스 모음
<릴레이션 특성>
튜플의 유일성 - 하나의 릴레이션 안에 동일한 튜플 존재할 수 없음
튜플의 무순서 - 튜플 사이의 순서는 무의미
속성의 무순서 - 속성 사이의 순서는 무의미
속성의 원자성 - 속성값으로 원자 값만 사용할 수 있다.
<키>
- 키는 유일성과 최소성을 가짐.
- 유일성: 하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야 함
- 최소성: 꼭 필요한 최소한의 속성으로만 키를 구성
- 슈퍼키(super key): 유일성을 만족하는 속성 또는 속성들의 집합 / 최소성은 고려 안함
- 후보키(candidate key): 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
- 기본키(primary key): 후보키 중 기본적으로 사용하기 위해 선택한 키
- 대체키(alternate key): 기본키로 선택되지 못한 후보키
- 외래키(foreign key): 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
* 외래키 속성과 그것이 참조하는 기본키 속성의 이름은 달라도 도메인은 같아야 함
* 하나의 릴레이션에는 외래키가 여러개 존재할 수 있다.
* 외래키는 널값이 가능하다.
무결성 제약조건: 데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
개체 무결성 제약조건: 기본키를 구성하는 모든 속성은 널 값을 가질 수 없다.
참조 무결성 제약조건: 외래키는 참조할 수 없는 값을 가질 수 없다.
ex) 주문 릴레이션의 주문고객 속성에는 cherry가 있는데 고객 릴레이션의 고객아이디에는 cherry가 없다
-> 참조 무결성 제약조건 위배
이때 외래키 속성이 널값을 가진다고 해서 참조 무결성 제약조건을 위반한 것은 아니다.
<E-R 다이어그램을 릴레이션 스키마로 변환하는 규칙>
1. 모든 개체는 릴레이션으로 변환한다. ( 개체 이름-> 릴레이션 이름, 개체 속성-> 릴레이션 속성)
2. 다대다 관계는 릴레이션으로 변환한다. (관계의 이름->릴레이션 이름, 관계의 속성-> 릴레이션 속성)
이때 각 개체를 릴레이션으로 변환한 후 이 릴레이션의 기본키를 관계 릴레이션에 포함시켜 외래키로 지정하고 외래키들을 조합하여 관계 릴레이션의 기본키로 지정.
예시)
3. 일대다 관계는 외래키로 표현한다.
3-1. 일반적인 일대다(1:n) 관계는 외래키로 표현
이때 1측 개체 릴레이션의 기본키를 n측 개체 릴레이션에 포함시켜 외래키로 지정.
3-2. 약한 개체가 참여하는 일대다 관계는 외래키를 포함해서 기본키를 지정.
4. 일대일 관계는 외래키로 표현한다.
4-1. 일반적인 일대일 관계는 외래키를 서로 주고받는다.
(한계점: 데이터가 중복되는 한계를 가짐- 양쪽에 결혼날짜가 있음)
4-2. 필수적으로 참여하는 개체 릴레이션만 외래키를 받는다.
(예시- 남자만 필수적으로 참여하는 상황 / 여자 릴레이션 결혼날짜 항목이 null 가능성이 많아져서 남자
릴레이션에만 외래키를 받음)
4-3. 모든 개체가 필수적으로 참여하면 릴레이션을 하나로 합친다. (굳이 나눠 관리할 필요가 없기때문)
5. 다중 값 속성은 릴레이션으로 변환한다.
예시- 부하직원이라는 다중 값 속성은 릴레이션으로 변환
이때 사원-부하직원 릴레이션에는 중복되는 사원번호가 생긴다는 문제가 발생한다.
댓글