1진 관계(unary or recursive relationship) : 한 개의 개체가 자기 자신과 관계를 맺는 경우
2진 관계(binary relationship) : 두 개의 개체가 관계를 맺는 경우
3진 관계(ternary relationship) : 세 개의 개체가 관계를 맺는 경우
=> 정말 특이한 경우 ternary 사용
관계 대응수(cardinality) : 두 개체 타입의 관계에 실제로 참여하는 개별 개체 수
관계 대응수에 따른 관계 타입의 유형
1 by 1 하나의 개체가 하나의 개체에 대응
좌측 개체 타입에 포함된 개체가 우측 개체 타입에 포함된 개체와 일대일로 대응하는 관계
1 by many 하나의 개체가 여러 개체에 대응
many by 1 여러 개체가 하나의 개체에 대응
둘 다 실제 일상생활에서 가장 많이 볼 수 있는 관계로, 한쪽 개체 타입의 개체 하나가 다른 쪽 개체 타입의 여러 개체와 관계를 맺음
many by many 여러 개체가 여러 개체에 대응
각 개체 타입의 개체들이 서로 임의의 개수의 개체들과 서로 복합적인 관계를 맺고 있는 관계
관계 대응수의 최솟값과 최댓값
관계 대응수 1:1, 1:N, M:N에서 1, N, M은 각 개체가 관계에 참여하는 최댓값을 의미함
관계에 참여하는 개체의 최솟값을 표시하지 않는다는 단점을 보완하기 위해 다이어그램에서는 대응수 외에 최솟값과 최댓값을 관계실선 위에 (최솟값, 최댓값)으로 표기함
isa 관계(is-a라고 발음한다)
상위 개체 타입의 특성에 따라 하위 개체 타입이 결정되는 형태
복잡한 관계형 DB의 경우 이렇게 표현 가능하다.
참여 제약 조건
개체 집합 내 모든 개체가 관계에 참여하는지 유무에 따라 전체 참여와 부분 참여로 구분 가능
전체 참여는 개체 집합의 모든 개체가, 부분 참여는 일부만 참여함
전체 참여를 (최솟값, 최댓값)으로 표현할 경우 최솟값이 1 이상으로 모두 참여한다는 뜻이고, 부분 참여는 최솟값이 0 이상임
role(역할)
개체 타입 간의 관계를 표현할 때 각 개체들은 고유한 역할(role) 담당
순환적 관계(recursive relationship) : 하나의 개체 타입이 동일한 개체 타입(자기 자신)과 순환적으로 관계를 가지는 형태.
약한 개체(weak entity) 타입 : 상위 개체 타입이 결정되지 않으면 개별 개체를 식별할 수 없는 종속된 개체 타입
약한 개체 타입은 독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성을 식별자(정확히는 구분자; discriminator) 혹은 부분키(partial key)라고 함
강한 개체라고 일반적으로 말하지 않는다. 그냥 일반적인 개체임.
표 참고.
외래키 제약 조건에 의해 강한 개체가 사라질 경우 같이 사라진다.
cascade delete로 구현 가능
ER 다이어그램을 더 축약하여 쉽게 표현하면 Erwin 등 소프트웨어에서 사용함
IE(Information Engineering) 표기법에서 개체 타입과 속성은 직사각형으로 표현함
Peter Chen 표기법과 IE 표기법이 있다
둘이 쓰다보면 표기가 존나게 헷갈린다. 주의.
IE 표기법에서 관계는 실선 혹은 점선으로 표기함
IE 표기법 – 관계와 관계 대응수 참조
일대다와 최소참여 0과1은 합쳐질수 있다.
새발 없으면 최대값 1임
[1단계] 강한(정규) 개체 타입 정규 개체 타입 E의 경우 대응하는 릴레이션 R을 생성함
[2단계] 약한 개체 타입 : 약한 개체 타입에서 생성된 릴레이션은 자신의 키와 함께 강한 개체 타입의 키를 외래키로 사상하여 자신의 기본키를 구성함
[그림 6-34] 참조
이진 관계 타입
[방법1] 오른쪽 개체 타입 E2를 기준으로 관계 R을 표현한다.
E1(KA1, A2)
E2(KA2, A4, KA1)
[방법2] 왼쪽 개체 타입 E1을 기준으로 관계 R을 표현한다.
E1(KA1, A2, KA2)
E2(KA2, A4)
[방법3] 단일 릴레이션 ER로 모두 통합하여 관계 R을 표현한다.
ER(KA1, A2, KA2, A4)
[방법4] 개체 타입 E1, E2와 관계 타입 R을 모두 독립된 릴레이션으로 표현한다.
E1(KA1, A2)
R(KA1, KA2)
E2(KA2, A4)
[3단계] 이진 1:1 관계 타입
이진 1:1 관계 타입의 경우 [방법1]~[방법4]까지 모든 유형으로 사상 가능, 개체가 가진 정보 유형에 따라 판단
FK 선택 기준
둘다 PK를 가져온다. 그럼 뭘 골라야 할까?
FK 가져올 시 null값이 없는 것.
만약 둘 다 갯수가 똑같을 경우?
개발자 맘대로~ 그림 6-36을 볼 때 사원으로 옮기는 게 낫다?
이 이진관계 자체가 하나가 되서 FK 넘기는거 있긴한데 외부 관계까지 굳이 고려하진않음. FK라서 다른 관계로 안넘어감.
[4단계] 이진 1:N 관계 타입
이진 1:N 관계 타입의 경우 N의 위치에 따라 [방법1] 또는 [방법2]의 유형으로 사상됨.
학과 릴레이션에 학번 저장하는 거 불가능
[5단계] 이진 M:N 관계 타입
이진 M:N 관계 타입은 [방법4]의 유형으로 사상됨
다대다는 무조건 따로 테이블 만들어줘야함
[6단계] N진 관계 타입
ER 모델의 차수가 3 이상인 다진 관계 타입의 경우 [방법4]의 유형으로 사상됨
[7단계] 다중값 속성
속성의 개수를 알 수 없는 경우 [방법1]을, 속성의 개수가 제한적으로 정해지는 경우 [방법2]를 사용함
방법 두개있음.
가짓수가 4개이상일 때 그냥 학번 취미로 PK 묶어주는 게 낫다? 어떤 학생은 취미가 1개일 수도 있다.
학번, 취미1~3 적어놓을 때. 따라서 학번이랑 취미로 PK묶어서 레코드만 묶기.
마당대학 8번의 경우 애매함.
cardinality를 명시해주어야 한다.
데이터 모델 과정, 단어, 순서
개념적 모델ㄹ링 중요
속성융형
이상현상
이상현상의 개념
잘못 설계된 데이터베이스가 어떤 이상현상(anomaly)을 일으키는지 알아보기
삭제이상(deletion anomaly) : 투플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상
→ 연쇄삭제(triggered deletion) 문제 발생
삽입이상(insertion anomaly) : 투플 삽입 시 특정 속성에 해당하는 값이 없어 NULL 값을 입력해야 하는 현상 → NULL 값 문제 발생
수정이상(update anomaly) : 투플 수정 시 중복된 데이터의 일부만 수정되어 데이터의 불일치 문제가 일어나는 현상 → 불일치(inconsistency) 문제 발생
7-2 통째로 만들면 시스템상 문제발생
수업이 열린다는 정보를 삽입 불가. 수강하는 학생이 존재해야함.
수정이상 : 데이터베이스 공학관 110 -> 121 이어도 수정이 전부 안됨.
함수종속성
개념
학생수강성적 릴레이션의 각 속성 사이에는 의존성이 존재함
어떤 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존 관계를 ‘속성 B는 속성 A에 종속한다(dependent)’ 혹은 ‘속성 A는 속성 B를 결정한다(determine)’라고 함
‘A → B’로 표기하며, A를 B의 결정자라고 함