SCP 릴레이션은 4NF릴레이션이다. 이를 두개의 애트리뷰트로 분리해서 SN CN으로 나누면 SN CN | CN PN | PN SN 이다. 이는 R(A B C)를 분해하는것과 비슷하다.
이렇게 나눠진 릴레이션을 조인해보면, 위조튜플이 생긴다.
즉 이렇게 2개로만 분해하면 무손실분해가 성립하지 않는다. 따라서 1 2 를 먼저 조인하고, 세번째를 조인해서 위조튜플을 모두 지워내야한다.
N way cyclic constraint를 만족하면 n분해 릴레이션이라고 한다. (SCP는 3분해)
n-분해 릴레이션(n>2) -> n개의 프로젝션만으로 무손실 분해될 수 있으며, n보다 작은 프로젝션으로는 무손실 분해가 불가능함
대부분 2 way 분해를 하지만 scp의 경우 3개로 분해해야함
이때 jd를 만족한다고 할 수 있다.
A,B,...,Z 를 각각 R의 애트리뷰트들에 대한 진 부분 집합이라 할 때 릴레이
션 R이 그의 프로젝션 A, B, ..., Z의 조인과 동일하면,
R은 JD *(A, B, ..., Z)를 만족한다.
또한, 릴레이션 R(A,B,C)가 JD *(AB,AC)를 만족하면,
한 쌍(2)의 MVD A ↠ B|C도 성립.
JD는 MVD의 일반형이다.
SCP 릴레이션은
◦ JD *(SC, CP, PS)를 만족
◦ 3-분해 릴레이션
-> JD를 만족하는 n-분해 릴레이션은 n개의 프로젝션으로 분해해서 보관해야함.
삽입이상
SCP’ 에 S2 C1 P1 을 삽입하고자 할 떄, S1 C1 P1도 추가를 해야 3개로 분해했을떄 원래것이 나오게 된다.
S1 C1 P1을 삭제하려고 하면 다른 튜플중 다른 하나를 삭제해야함 즉, S2 C1 P1이 삭제되어야 함
이상의 원인 scp가 3분해 릴레이션
해결 : 릴레이션을 3개로 분해해서 유지해야 한다
제 5 정규형을 사용하는 경우는 매우 드물다
릴레이션 R 에 존재하는 모든 조인종속이 R의 후보키를 통해 성립하면 R은 5NF
프로젝션-조인 정규형(PJ/NF; projection-join normal form) 이라r고도 한다.
예1:
◦ 릴레이션 SCP는 JD *(SC, CP, PS)를 만족하지만,
후보 키 (SN,CN,PN)을 통하지 않으므로 5NF이 아님
◦ 그러나 SC, CP, PS는 5NF – 어떤 조인 종속도 포함하고 있지 않음
학생(학번,이름,학과,학년) 릴레이션의 기본 키가 학번이고 후보 키가 이름일 경우
현실 : 개체 -> 특성 -> 값
개념 : 개체타입 -> 속성 -> 값
데이터 : 레코드타입 -> 필드 -> 값
데이터세계에 있는 모델을 현실세게의 모델로 하려면 ER 모델로 수렴한다. 개념을 ER모델화 하고 데이터 모델링을 통해 관계형데이터모델로 데이터화 하고 데이터를 물리적 구조로 변환한다.
D = S O C
S : 구조
O : 연산
C : 제약 조건
데이터 모델은 관계 데이터 모델이 널리 사옹된다
현재는 최종적으로 객체 지향형 모델개념이 포함된 객체-관계 데이터 모델이 사용
개체 entitiy 관계 relationship 으로 구성되어 있다
이름과 애트리뷰트들로 정의됨
단순 애트리뷰트 : 더 이상 작은 구성원소로 분해가 불가능한 애트리뷰트
복합 애트리뷰트 : 여러 개로 분해할 수 있는 애트리뷰트
유도 : 다른 애트리뷰트나 개체가 가지고 있는 유도되어 결정되는 경우
저장 : 유도애트리뷰트를 생성하는데 사용한 것
널 애트리뷰트
널 값을 가지는 애트리뷰트
해당되지 않는다, 알 수 없다, 누락되었다
“성적” 애트리뷰트 : 저장 애트리뷰트
“평균 성적” 애트리뷰트 : 유도 애트리뷰트
"나이"애트리뷰트 : 저장 애트리뷰트
"생년월일" 애트리뷰트 : 유도 애트리뷰트
개체와 개체 사이에 relationship이 있음. 예를 들어,
학생 <-> 과목 두 집합이 있을 떄, 수강한다는 relationship이 있음. 이떄, 두 개체를 연결하는 선들의 집합 (인스턴스)
1 : 1 (one to one: 일 대 일)
1 : n (one to many: 일 대 다)
n : 1 (many to one: 다 대 일)
n : m (many to many: 다 대 다)
모든 객체과 ab에 참여
교수 – 학과 관계
a b 관계에서 a의 일부 개체만 a b 관계에 참여
학생(휴학생 제외) 일부만 참여
예를 들자면 다음과 같은것이 있다.
대출 – 대출 상환 – 상환
대출을 받지 않고 대출상환이 발생할 수는 없음
즉, 상환이라는것은 대출이 없으면 존재하지 않음
대출 – 주 개체, 상환 – 종속 개체
개체관계모델로, 1976년 피터 챈이 고안함. 개념적 데이터 모델이고 현실세계를 개념적으로 표현하기 위해 사용한다.
개체 집합
관계 집합
한 개체 집합 내에서 각 개체마다 상이한 값을 갖는 애트리뷰트나 애트리뷰트 집합
튜플들을 유일하게 구분해주는 키 처럼 보이지만, 정확히 어떤건지 파악할 수 가 없음
어떤 의미인지 정확하지가 않음 따라서 다른 애트리뷰트가 하나 무조건 필요함
이러한 약한 개체를 설명해줄 수 있는 개체를 강한 개체라고 함
구별자
강한 개체와 약한 개체 집합 내에서 이들을 서로 구별 할 수 있는 애트리뷰트이고 이를 부분 키라고 한다
위와 같은 다이어그램에서 상환은 자기자신의 애트리뷰트들만으로는 상환번호라는 구별자를 명세할 수 없다. 따라서 상환은 약한 개체타입이다. 대출은 개체타입이고 강한 개체타입, 주 개체이다.
네트워크 데이터 1950 1960
계층 데이터 모델 1950 1960
관계 데이터 모델 1990 ~ 현재
객체지향 데이터 모델 1980 ~ 이제 안씀
객체-관계 데이터모델 1990 ~ 현재
대부분 관계 데이터 모델로 함