Chapter 7: Entity-Relationship 모델
Chapter 7: Entity-Relationship Model 모델링 제약조건 (Constraints) E-R Diagram 설계 논점 약 엔티티 집합 확장된 E-R 기능 University Database 설계 Relation Schema로의 변환
모델링 데이터베이스는 다음과 같이 엔티티 집합과 관계 집합을 이용하여 모델링할 수 있다 : 데이터베이스는 다음과 같이 엔티티 집합과 관계 집합을 이용하여 모델링할 수 있다 : - 엔티티 집합 (entity set) - 엔티티 집합 사이의 관계 집합 (relationship set) 엔티티는 다른 객체와는 구분되며 존재하는 객체이다. - 예 : 특정한 사람, 회사, 사건 ,식물 엔티티는 애트리뷰트를 갖는다. - 예: 사람은 이름, 주소를 갖는다. 엔티티 집합이란 같은 애트리뷰트를 가지는 같은 유형의 엔티티들의 집합이다. 예 : 모든 사람들, 회사들, 나무들, 휴일들의 집합
엔티티 집합의 예 instructor_ID instructor_name student-ID student_name
관계 집합 (Relationship Sets) 관계는 여러 엔티티간의 연관성이다. Example: 44553 (Peltier) advisor 22222 (Einstein) student entity relationship set instructor entity 관계 집합은 각각을 다음의 엔티티 집합으로 취하는 n 2 엔티티 간의 수학적인 릴레이션이다. {(e1, e2, … en) | e1 E1, e2 E2, …, en En} 여기에서 (e1, e2, …, en) 은 관계이다. Example: (44553,22222) advisor
관계 집합의 예 advisor
관계 집합 (계속) 애트리뷰트는 관계 집합의 속성일 수도 있다. 예를 들어 엔티티 집합 instructor , student 사이의 관계 집합 advisor 는 언제부터 지도강사 - 지도학생의 관계가 설정되었는지를 나타내는 date 라는 자체 속성을 가질 수 있다.
관계 집합의 차수 (Degree of a Relationship Set) 관계 집합에 참여하는 엔티티 집합의 수를 의미한다 두 엔티티 집합을 내포하는 관계 집합은 이진(또는 2차, binary relationship)이다. 일반적으로 DB시스템 내의 대부분의 관계 집합은 이진이다. 관계 집합에는 3 이상의 엔티티 집합을 내포할 수도 있다. Example: students work on research projects under the guidance of an instructor. 엔티티 집합 instructor, student 및 project는 삼진(3차) 관계 집합 proj_guide 로 연결된다.
애트리뷰트 (Attributes) 엔티티는 엔티티 집합의 모든 멤버가 소유하는 설명 속성인 애트리뷰트의 집합으로 표현된다. Example: instructor = (ID, name, street, city, salary ) course= (course_id, title, credits) 도메인 - 각 애트리뷰트에 허용되는 값들의 집합 애트리뷰트 유형: 단순 및 복합 애트리뷰트 단일 값 및 다중 값 애트리뷰트 Example: 다중 값 애트리뷰트 : phone_numbers 유도 (derived) 애트리뷰트 다른 애트리뷰트를 이용하여 계산해낼 수 있다. Example: age, given date_of_birth
Composite Attributes
대응수 제약조건 (Mapping Cardinality Constraints) 관계 집합을 통해 다른 엔티티와 연관될 수 있는 엔티티의 수를 나타낸다. 이진 관계 집합을 기술하는데 가장 유용하다. 이진 관계 집합에 대한 대응 수는 다음 유형 중 하나이어야 한다: 일 대 일 (One to one) 일 대 다 (One to many) 다 대 일 (Many to one) 다 대 다 (Many to many)
Mapping Cardinalities One to one One to many Note: 여기에서 A 와 B 의 임의의 요소는 다른 집합의 요소와 매핑 관계를 갖지 않을 수 있다.
Mapping Cardinalities Many to one Many to many Note: 여기에서 A 와 B 의 임의의 요소는 다른 집합의 요소와 매핑 관계를 갖지 않을 수 있다.
키 어떤 엔티티 집합의 수퍼 키는 그 값이 각 엔티티를 유일하게 결정하는 하나 이상의 애트리뷰트 집합이다. 엔티티 집합의 후보 키는 최소의 조건을 만족시키는 수퍼 키로 정의된다. ID 는 instructor 의 후보 키 course_id 는 course의 후보 키 여러 개의 후보 키가 존재할 수 있지만, 그 중의 하나가 주 키로 선택된다.
관계 집합의 키 (Keys for Relationship Sets) 참여하는 엔티티 집합의 주 키의 결합이 관계 집합의 슈퍼 키를 이룬다. (s_id, i_id) 는 advisor의 슈퍼 키가 된다. 후보 키를 선택할 때 관계 집합의 대응 수를 고려해야 한다. 하나 이상의 후보 키가 존재하는 경우에는 주 키를 선택할 때 관계 집합의 의미를 고려해야 한다.
E-R Diagrams 사각형은 엔티티 집합을 나타낸다. 마름모는 관계 집합을 나타낸다. 엔티티 집합을 나타내는 사각형 안에 애트리뷰트들이 열거된다. 주 키 애트리뷰트에는 밑줄을 긋는다.
복합, 다중 값, 유도 애트리뷰트를 갖는 엔티티
애트리뷰트를 갖는 관계 집합
역할 (Roles) 관계의 엔티티 집합들이 반드시 구분될 필요는 없다. 각 엔티티 집합은 관계 집합에서 역할을 갖는다. 역할은 사각형과 마름모를 연결하는 선에 라벨을 붙여 E-R도에 표시한다. “course_id” 와 “prereq_id” 의 라벨은 역할을 나타낸다.
대응수 제약조건 관계 집합과 엔티티 집합간의 “일”을 나타내는 데는()를, “다”를 나타내는 데는 (—)을 사용해 이들 유형을 구분한다. 일 대 일 (One to one) 일 대 다 (One to many) 다 대 일 (Many to one) 다 대 다 (Many to many)
일 대 일 관계 instructor 엔티티와 student 엔티티 사이의 일 대 일 관계 한 명의 강사는 advisor 관계를 통해 최대 한명의 학생과 관련된다. 또한 한 명의 학생은 advisor 관계를 통해 최대 한명의 강사와 관련된다.
일 대 다 관계 instructor 엔티티와 student 엔티티 사이의 일 대 다 관계 한 명의 강사는 advisor 관계를 통해 여러 명(0명 포함)의 학생과 관련된다. 한 명의 학생은 advisor 관계를 통해 최대 한명의 강사와 관련된다.
다 대 일 관계 instructor 엔티티와 student 엔티티 사이의 다 대 일 관계 한 명의 강사는 advisor 관계를 통해 최대 한명의 학생과 관련된다. 한 명의 학생은 advisor 관계를 통해 여러 명(0명 포함)의 강사와 관련된다.
다 대 다 관계 한 명의 강사는 advisor 관계를 통해 여러 명(0명 포함)의 학생과 관련된다.
관계 집합에서의 엔티티 집합의 참가도 표시 전체적인 참가 (total participation) (이중선으로 표시됨) : 엔티티 집합에 속한 모든 엔티티는 관계 집합에 속한 적어도 하나의 관계에 참가하여야 한다. E.g., participation of section in sec_course is total 모든 section 엔티티는 관련된 course를 갖는다. 부분적인 참가 (partial participation): 엔티티 집합에 속한 어떤 엔티티는 관계에 참가하지 않을 수 있다. Example: participation of instructor in advisor is partial
Alternative Notation for Cardinality Limits Cardinality limits can also express participation constraints
E-R Diagram에서의 3진 관계 표시
약 엔티티 집합 (Weak Entity Sets) 주 키를 갖지 않는 엔티티 집합을 약 엔티티 집합이라 한다. 강 엔티티 집합이 있어야만 약 엔티티 집합이 존재한다. 약 엔티티 집합은 일 대 다 관계 집합을 통해 강 엔티티 집합에 연결해야 한다. 약 엔티티 집합의 구별자(또는 부분 키, discriminator)는 약 엔티티 집합 내의 엔티티들을 구분하는 애트리뷰트의 집합이다. 약 엔티티 집합의 주 키는 약 엔티티 집합이 존재 종속 관계에 있는 강 엔티티 집합의 주 키와 약 엔티티 집합의 구별자가 합쳐져 이루어진다.
약 엔티티 집합 (계속) 약 엔티티 집합의 구별자(discriminator)에는 점선으로 밑줄을 긋는다. 약 엔티티 집합을 포함하는 관계 집합은 이중 마름모로 나타낸다. section 의 주키 – (course_id, sec_id, semester, year)
E-R Diagram for a University Enterprise
E-R 스키마를 릴레이션 스키마로 변환 (Reduction to Relational Schemas)
E-R 스키마를 릴레이션 스키마로 변환 엔티티 집합과 관계 집합은 데이터베이스의 내용을 표현하는 릴레이션 (테이블) 스키마로 균일하게 나타낼 수 있다. E-R도에 상응하는 데이터베이스는 릴레이션 (테이블)의 모임으로 표현될 수 있다. 각 엔티티 집합과 관계 집합에 대해 그에 상응하는 이름이 할당된 유일한 릴레이션이 존재한다. 각 릴레이션(테이블)은 고유한 이름을 가진 여러 개의 열(애트리뷰트에 대응함)을 가진다.
단순 애트리뷰트를 가진 엔티티 집합의 표현 강 엔티티 집합은 동일한 애트리뷰트를 가지는 테이블로 변환된다. student(ID, name, tot_cred) 약 엔티티 집합은 강 엔티티 집합을 식별하는 주 키의 행을 포함한 테이블이 된다 section ( course_id, sec_id, sem, year )
관계 집합을 테이블로 표현 다 대 다 관계 집합은 참여하는 두 엔티티 집합의 주 키와 관계 집합의 설명 애트리뷰트에 대한 열을 가진 테이블로 표현된다. Example: advisor 관계집합을 위한 테이블 advisor = (s_id, i_id)
스키마의 중복성 제거 (Redundancy of Schemas) 다 대 일 혹은 일 대 다 관계집합은 다 쪽이 전체적인 참가 (total participation) 의 조건을 만족시키는 경우, 다 쪽의 테이블에 일 쪽의 주키를 하나의 애트리부트로서 부가 시키는 것으로 표현할 수 있다. Example: inst_dept 관계 집합을 위한 독립된 테이블을 생성하는 대신 instructor 엔티티 집합을 표현하는 테이블에 dept_name 애트리뷰트를 부가하여 표현한다.
스키마의 중복성 제거 (계속) section 테이블은 sec_course 테이블에 나타난 정보를 이미 가지고 있다 일 대 일 관계집합의 경우, 양쪽 모두를 다 대 일 (혹은 일 대 다) 관계집합에서의 다 쪽의 경우와 같이 취급할 수 있다. 즉, 양 쪽 엔티티 집합을 나타내는 테이블 중 하나에 여분의 애트리뷰트를 부가하여 표현할 수 있다. 그러나 다 쪽이 부분적인 참가 (partial participation) 의 조건을 만족시키는 경우, 다 쪽의 테이블에 일 쪽의 주키를 하나의 애트리부트로서 부가 시키는 것은 널 값을 동반하는 결과를 가져올 수 있다. 약 엔티티 집합에 그를 식별하고 있는 강 엔티티 집합을 연결하는 관계 집합에 상응하는 테이블은 중복 표현에 해당한다. section 테이블은 sec_course 테이블에 나타난 정보를 이미 가지고 있다 36
복합/다중값 애트리뷰트 복합 애트리뷰트를 구성하는 각 요소 애트리뷰트는 평탄화 작업을 통하여 독립된 애트리뷰트로 표현된다. Example: 다중값 속성을 제외한 instructor 스키마 instructor(ID, first_name, middle_initial, last_name, street_number, street_name, apt_number, city, state, zip_code, date_of_birth) 37
복합/다중값 애트리뷰트 엔티티 E의 다중값 애트리뷰트 M은 독립된 스키마 EM으로 표현된다. Example: instructor 의 다중값 애트리뷰트 phone_number 는 다음과 같이 표현된다: inst_phone= ( ID, phone_number) 다중값 애트리뷰트의 각 값은 EM 스키마를 갖는 릴레이션의 독립된 튜플에 매핑된다. 예를 들어 22222 의 주키를 가지고 456-7890 와 123-4567 의 다중값 속성 phone numbers 를 갖는 엔티티는 다음과 같이 2 개의 튜플로 매핑된다: (22222, 456-7890) 와 (22222, 123-4567) 38
다중값 애트리뷰트 (계속) 특별한 경우: time_slot 엔티티가 주키 외에 단 하나의 애트리뷰트 만을 가지며, 그 애트리뷰트가 다중값 애트리뷰트인 경우 최적화: 해당 엔티티에 대한 릴레이션을 생성하지 않고, 단지 댜중값 애트리뷰트만을 위한 릴레이션을 생성하시오. time_slot(time_slot_id, day, start_time, end_time) 39
설계 논점 엔티티 집합과 애트리뷰트의 사용 phone 을 엔티티 집합으로 표현하면 phone numbers 에 대한 다른 정보를 추가적으로 기입할 수 있다 (plus multiple phone numbers) 40
설계 논점 엔티티 집합과 관계 집합의 사용 가능한 지침은 엔티티 간에 발생하는 행위를 기술하기 위하여 관계 집합을 지정하는 것이다. 41
설계 논점 이진과 n-항 관계 집합 비이진(n>2인 n항의) 관계 집합을 여러 개의 이진 관계 집합으로 대치할 수 있지만, n항 관계 집합은 하나의 관계내에 여러 엔티티들이 참여함을 보다 명백히 보여준다. 관계집합에서의 애트리뷰트 위치 e.g., advisor 관계 집합의 애트리뷰트로서 date 를 정의할 것인지 혹은 student 엔티티 집합의 애트리뷰트로서 date 를 정의할 것인지의 여부를 선택/결정하여야 한다. 42
비이진 관계 집합을 이진 관계 집합으로 바꾸기 비이진(n>2인 n항의) 관계 집합을 여러 개의 이진 관계 집합으로 대치할 수 있다. 43
Extended ER Features
확장 E-R 특성: 세분화 (Specialization) 하향식 설계 절차; 집합내의 서로 다른 엔티티와 구분되는 엔티티 집합내의 서브 그룹핑으로 지정 이들 서브 그룹핑은 상위 단계 엔티티 집합에는 적용되지 않는 애트리뷰트를 가지거나 관계에 참여하는 하위단계 엔티티 집합이 된다. ISA라는 라벨을 가진 삼각형으로 나타낸다 (E.g., instructor “is a” person). 애트리뷰트 상속 - 하위 단계 엔티티 집합은 연결된 상위 단계 엔티티 집합의 모든 애트리뷰트와 관계 참여를 상속받는다.
Specialization Example
확장 E-R 특성: 일반화 (Generalization) 상향식 설계 절차; 동일한 기능을 공유하는 여러 엔티티 집합을 상위 단계 엔티티 집합으로 결합한다. 세분화와 일반화는 서로가 단순한 역 관계이다; E-R도에서는 같은 방법으로 표현된다. 세분화와 일반화의 용어는 상호 같은 의미로 사용된다.
세분화와 일반화 (계속) 하나의 엔티티 집합에 대하여 각기 다른 특성을 사용하여 서로 다른 다수의 세분화된 엔티티 집합을 정의할 수 있다. E.g., employee를 instructor 와 secretary 로 세분화 표현하는 것 외에, 추가적으로 permanent_employee 와 temporary_employee 로 세분화 표현하는 것을 고려할 수 있다. 의미 : 특정 employee 엔티티는 permanent_employee or 혹은 temporary_employee의 멤버가 될 수 있으며, 또한 instructor 혹은 secretary 의 멤버가 될 수 있다. 여기에서 ISA 관계는 superclass - subclass 관계와 같은 의미를 나타낸다.
세분화/일반화에서의 설계 제약 조건 어떤 엔티티들이 주어진 하위 단계 엔티티 집합의 멤버가 될 수 있는가에 대한 제약 조건 조건 정의 (condition-defined) Example: all customers over 65 years are members of senior-citizen entity set; senior-citizen ISA person. 사용자 정의 (user-defined) 단일 일반화 내에서 엔티티들이 하나 이상의 하위 단계 엔티티 집합에 속할 수 있는가에 대한 제약 조건. 분리 (Disjoint) 하나의 엔티티는 오직 하나의 하위 단계 엔티티 집합에 속한다. E-R diagram에서 IS_A 관계를 나타내는 삼각형에 다수의 하위 단계 엔티티 집합이 연결되는 것으로 표현된다. 중첩 (Overlapping) 하나의 엔티티는 하나 이상의 하위 단계 엔티티 집합에 속할 수 있다.
세분화/일반화에서의 설계 제약 조건 (계속) 완전성 제약 조건 (Completeness constraint) -- 일반화 내에서 상위 단계 엔티티 집합내의 엔티티가 적어도 하나의 하위 단계 엔티티 집합에 속해야만 하는가의 여부를 지정 완전 (total): 하나의 엔티티는 하위 단계 엔티티 집합 중 하나의 엔티티 집합에 반드시 속하여야 한다. 부분 (partial): 하나의 엔티티는 하위 단계 엔티티 집합 중 하나의 엔티티 집합에 반드시 속할 필요는 없다.
통합화 아래와 같은 3항 관계 집합 proj_guide를 가정한다. 다음 eval-for와 같은 3항 관계 집합을 추가로 생각해 보자.
통합화 (계속) 관계 집합 eval_for 와 proj_guide 는 같은 정보를 표현한다. 이러한 중복을 통합화를 통해 제거한다. 관계를 추상적인 엔티티로 취급 관계간의 관계를 허용 관계의 추상화를 새로운 엔티티로
통합화 (계속) 중복을 도입하지 않고, 다음 그림은 아래와 같은 내용을 표현한다: 한 학생은 한 특정 프로젝트에서 한 특정 강사의 지도를 받는다 각 학생, 강사, 프로젝트의 조합은 하나의 관련 평가와 연관될 수 있다. 53
세분화를 릴레이션 스키마로 표현 방법1 : 상위 단계 엔티티 집합을 위한 하나의 스키마 작성 각 하위 단계 엔티티 집합에 대하여 각각 하나의 스키마 작성 (단, 상위 단계 엔티티 집합의 주키를 포함시킴) schema attributes person ID, name, street, city student ID, tot_cred employee ID, salary 단점: 예를 들어 employee 에 대하여 정보 검색을 수행하는 경우, 두 개의 릴레이션 (상위/하위 단계 릴레이션)을 모두 액세스 하여야 한다.
세분화를 관계 스키마로 표현 (계속) 방법 2: 각 엔티티 집합에 대하여 개별적으로 각각 스키마 작성 (단, 자체 애트리뷰트와 상속 받은 애트리뷰트를 포함하도록 스키마 작성) schema attributes person ID, name, street, city student ID, name, street, city, tot_cred employee ID, name, street, city, salary 만약 세분화가 완전 (total)의 제약조건을 만족시키면 상위 단계 엔티티 집합 (person)을 위한 스키마는 정보 저장을 위하여 별도로 작성할 필요가 없어진다. 오히려, 하위단계 릴레이션들의 합집합 요소를 포함하는뷰 (view) 릴레이션 형태로 볼 수 있다. 그러나 외래키 제약조건 명시를 위하여 필요할 수 있다. 단점: students이고 employees인 두 조건을 동시에 만족하는 people의 경우, name, street , city may 정보가 중복되어 저장될 수 있다.
통합화에 상응하는 스키마 다음 요소를 포함하는 스키마를 생성한다. 통합화된 관계 집합의 주키 관련된 엔티티 집합의 주티 기타 애트리뷰트
통합화에 상응하는 스키마 (계속) 예를 들어 eval_for 관계 집합에 대하여 다음과 같은 스키마가 생성된다. eval_for (s_ID, project_id, i_ID, evaluation_id)
E-R 설계 결정 객체를 표현하기 위해 애트리뷰트를 사용할 것인가 엔티티 집합을 사용할 것인가. 실세계의 개념을 엔티티 집합으로 나타낼 것인가 관계 집합으로 나타낼 것인가. 삼진 관계를 사용할 것인가 이진 관계의 쌍을 사용할 것인가. 강 엔티티를 사용할 것인가 약 엔티티를 사용할 것인가. 일반화의 사용 - 설계시 모듈화에 기여 통합화의 사용 - 내부 구조의 상세 사항에는 관여하지 않고 통합 엔티티 집합을 단일 단위로 취급할 수 있다.
End of Chapter 7
Figure 7.01
Figure 7.02
Figure 7.03
Figure 7.04
Figure 7.05
Figure 7.06
Figure 7.07
Figure 7.08
Figure 7.09
Figure 7.10
Figure 7.11
Figure 7.12
Figure 7.13
Figure 7.14
Figure 7.15
Figure 7.17
Figure 7.18
Figure 7.19
Figure 7.20
Figure 7.21
Figure 7.22
Figure 7.23
Figure 7.24
Figure 7.25
Figure 7.26
Figure 7.27
Figure 7.28
Figure 7.29