Entity and Relationship 개체와 관계성
ER 데이터 모델 (Entity-Relationship 데이터 모델)
- 데이터베이스는 개체들의 집합과 개체들 사이의 관계로 모델링될 수 있음
- ER 모델의 모델링 기본 요소
- Entity (Entity Set) - property : attribute
- Relationship (Relationship Set) - property : attribute
- ER 모델에서 지원되는 Property는 오직 속성(attribute)뿐임
Entity 개체
- 존재하며 다른 객체와 구별 가능한 객체를 의미
- 어떤 것이든지 개체가 될 수 있음 (사람, 회사, 이벤트 등)
- 개체는 속성(attribute)를 가짐 (사람은 이름과 주소를 가짐)
- 개체 집합은 같은 속성(property)를 가지는 개체들의 집합임 (학생 개체 집합 등)
Relationship 관계
- 개체 집합의 개체는 다른 개체의 개체들과 연관이 있음
- 학생 S1이 강의 C2를 듣는 경우, 관계는 “수업을 듣는 것”을 의미
- 학생 S1이 조언자 P2를 가지는 경우, 관계는 “조언을 받는 것”을 의미 - 관계는 각각 개체 집합에서 가져온 여러 개체 사이의 연관성임
- 관계 집합은 같은 속성(attribute)을 가진 관계의 집합을 의미 (“takes(수강하다)” 관계 집합 등)
- 관계 집합도 속성(attribute)을 가질 수 있음 (“takes” 관계 집합은 수강 학기, 연도 등을 속성으로 가질 수 있음)
관계 집합의 차수(Degree)
- 이진(Binary) 관계는 2개의 개체 집합을 포함 / 데이터베이스의 대부분의 관계는 이진임
- 2개보다 더 많은 개체 집합 사이의 관계는 거의 없음 (Ternary(삼항) / Quaternary(사항) / Quinary(오항) 관계)
Attribute 속성
- 개체는 모든 멤버가 가지는 서술적인 속성(property)인 속성(attribute)의 집합으로 표현됨
- professor = (professorID, name, departmentName, salary) / course = (courseID, title, departmentName, credit) - 관계 또한 속성의 집합으로 표현됨 -> takes = (semester, year)
속성 타입
- 단순 속성 / 복합 속성(이름 : 성과 이름 / 주소 : 도로명, 시, 도, 우편번호 등)
- 단일 값 속성 / 다수 값 속성
- 유도된(Derived) 속성 : 다른 속성에 의해 계산될 수 있음 (생년월일로 나이를 구할 수 있으므로 나이는 유도된 속성)
Cardinality Constraint 카디날리티 제약
- 관계 집합을 통해서 다른 개체와 연관될 수 있는 개체의 수를 표현
- 주로 이진 관계 집합을 묘사할 때 유용
- 이진 관계 집합의 카디날리티 제약 : One to one / One to many / Many to one / Many to many
Key 키
- 개체 집합의 수퍼 키는 각 개체를 고유하게 결정해주는 속성의 집합임
- 개체 집합의 후보 키는 최소한의 수퍼 키임
- "courseID"는 "course"의 후보 키 / "professorID"는 "professor"의 후보 키 - 여러 후보 키가 존재하지만 그 중에 하나를 주 키로 선택
- 참여하는 개체 집합의 주 키의 조합은 관계 집합의 수퍼 키를 형성
- (studentID, courseID) -> "takes"의 수퍼키
- 특정 관계 집합에서 개체 집합의 쌍은 최대 1개의 관계만을 가질 수 있다는 것을 의미 - 후보 키와 주 키를 결정할 때, 관계 집합의 카디날리티 제약과 참여 제약을 고려할 필요가 있음
ER 다이어그램
직사각형 : 개체 집합
다이아몬드 : 관계 집합
속성 : 개체 직사각형 안에 나열
밑줄 : 주 키 속성
Employee (복합 속성 내에 복합 속성이 있는 경우)
- name : firstName, middleInitial, lastName을 가진 복합 속성
- address : street, city, state, zipCode를 가진 복합 속성
- street : streetNumber, streetName, aptNumber를 가진 복합 속성
- phoneNumber : 하나 이상의 값을 가진 다수 값 속성
- age : dateOfBirth 속성으로부터 유도된 속성
속성을 가진 관계 집합
카디날리티 제약
참여 제약
개체 집합이 관계에 참여할 때, 참여 제약을 특정할 수 있음 (전체 / 부분)
- 전체 참여 : 이중선으로 표시 / 개체 집합의 모든 개체가 관계 집합의 최소 1개 이상의 관계에 참여
- 부분 참여 : 단일선으로 표시 / 일부 개체는 관계 집합의 어떠한 관계에도 참여하지 않을 수 있음
3진 관계 ER 다이어그램
3진 관계에서의 카디날리티 제약
Role 롤
관계의 개체 집합들은 반드시 구분될 필요는 없음
만약 개체 집합이 1번 이상 참여하면, 롤을 명시해야 함
“course”와 “prerequisite”를 롤이라고 부름
“prerequisiteOf” 관계를 재귀적(recursive) 관계라고 부름
과목 참여는 one에 대응 / 선수 과목 참여는 many에 대응
이는 한 과목에 선수 과목이 다수 있음을 의미
또한 모든 참여가 부분 참여임
people 개체는 spouse 관계에 1:1 제약으로 부분 참여를 함
people 개체 중에는 배우자가 없는 사람도 있음
배우자가 있다면 배우자는 1명임
-> 배우자 관계를 보여주는 적합한 관계
약한(Weak) 개체 집합
- 주 키를 가지고 있지 않은 개체 집합
- 반대로 주 키를 가지면 강한(Strong) 개체 집합임
- 약한 개체 집합의 존재는 식별(identifying) 개체 집합의 존재에 의존함
- 식별 개체 집합으로부터 약한 개체 집합으로의 전체, One to many 관계 집합으로 식별 개체 집합과 연관되어야 함
- 식별 관계를 이중 다이아몬드로, 약한 개체 집합을 이중 직사각형으로 나타냄
- 약한 개체 집합의 식별자(또는 부분 키)는 해당 약한 개체 집합의 모든 개체를 구별하는 속성(attribute)의 집합임
- 약한 개체 집합의 식별자는 점선으로 밑줄 쳐서 나타냄
- 약한 개체 집합의 주 키 = 강한 개체 집합의 주 키 + 약한 개체 집합의 부분 키
관계형 스키마로 변환
개체 집합, 관계 집합
- ER 다이어그램에 따라 구성된 데이터베이스는 스키마의 모음으로 표현될 수 있음
- 각 개체 집합과 관계 집합은 해당 집합에 대응되는 고유한 스키마가 할당되어 있음
- 각 스키마는 고유한 이름을 가진 여러 열(일반적으로 속성(attribute)에 해당)을 가짐
강한 개체 집합, 약한 개체 집합
- 강한 개체 집합은 동일한 속성을 가진 관계로 변환
- 약한 개체 집합은 식별하는 강한 개체 집합(identifying strong entity set)의 주 키를 포함한 관계로 변환
- 약한 개체 집합과 그것의 식별하는 강한 개체 집합을 연결하는 관계 집합에 대응하는 스키마는 중복됨
-> 약한 개체를 변환할 때 강한 개체의 주 키를 이미 포함하기 때문
Many to many 관계 집합
Many to one / One to one 관계 집합
- 많은 쪽이 전체(total)인 Many to one / One to many 관계 집합은 “many” 쪽의 추가 속성을 추가하여 “one” 쪽의 주 키를 포함하여 표현할 수 있음
- 만약 많은 쪽의 참여가 부분(partial)이라면, 많은 쪽에 대응하는 스키마의 추가 속성으로 스키마를 교체하는 것은 null 값이 생기는 결과를 가져올 수 있음
- One to one 관계 집합은 양쪽 중에 “many”를 어디로 할지 선택할 수 있음
복합 속성
- 복합 속성은 각 구성 속성에 대해 별도의 속성을 생성하여 펼쳐짐 (name은 없고 first name, last name이 따로)
다수 값 속성
- 개체 E의 다수 값 속성은 E의 주 키를 포함한 분리된 스키마로 표현
- 다수 값 속성의 각 값은 스키마의 관계에 별도의 튜플로 매핑됨 - (A, 123-4567)과 (A, 123-9999)처럼
Design Issues 설계 이슈
개체 집합 vs 속성
개체 vs 관계
속성 위치
하나의 개념(idea)은 하나의 개체 혹은 관계 집합으로 표현되어야 함
중복 속성
이진 관계 vs 다진 관계
다진 관계는 여러 개체가 하나의 관계에 참여하는 것을 더 명확하게 보여줌
어떤 다진 관계든 분리된 여러 개의 이진 관계 집합으로 대체할 수 있음 (이 과정에서 일부 정보는 유실 가능성 있음)
다진 관계성 변환
일반적으로 어떠한 다진 관계는 인공적인 개체 관계를 만들어서 이진 관계들로 표현할 수 있음
확장 ER 모델
특수화 / 일반화
- Top-down 설계 과정 (특수화) - 다른 개체와 구별되는 개체 집합을 하위 그룹으로 지정
- 이 하위 그룹은 하위 레벨의 개체 집합이 됨, 상위 레벨의 개체 집합엔 적용되지 않는 속성을 가지거나 관계에 참여
- Superclass / Subclass 관계라고도 불림 - Bottom-up 설계 과정 (일반화) - 같은 특성을 공유하는 개체 집합을 상위 레벨의 개체 집합으로 결합함
속성 상속
- 하위 레벨 개체 집합이 연결된 상위 레벨 개체 속성의 모든 속성과 관계 참여를 상속받는 것을 의미
특수화와 일반화는 서로의 간단한 역
이 용어들은 서로 교환하여 사용될 수 있음
people 개체는 3개 속성을 가짐
하위 개체인 employee는 salary 속성만을 가지고 있으나 속성 상속으로 인하여 총 4개 속성을 가짐
people의 하위 개체 employee, student는 overlapping 특수화를 의미
employee의 하위 개체 professor, secretary는 disjoint 특수화를 의미
다중 특수화
- 다른 특징에 기반한 개체 집합은 다중 특수화를 가질 수 있음
- permanent_employee vs temporary_employee
- instructor vs secretary
- 각 개별 직원은 permanent_employee 또는 temporary_employee 중 하나의 멤버이며 동시에 professor 또는 secretary 중 하나의 멤버
특수화 / 일반화 제약 조건
하위 레벨 개체 집합이 될 수 있는 개체의 제약 조건
- Condition-defined / 예 : 65세 이상의 모든 고객은 senior-citizen 개체 집합의 멤버 (senior-citizen은 person의 하위 개체)
- User-defined
하나의 일반화에서 개체가 하나 이상의 하위 레벨 개체로 속할 수 있는지에 대한 제약 조건
- Disjoint : 개체는 오직 하나의 하위 레벨 개체 집합에 속함
ER 다이어그램에서 같은 삼각형으로 연결된 여러 하위 레벨 개체 집합을 가지는 것으로 표현 - Overlapping : 개체는 하나 이상의 하위 레벨 개체 집합에 속할 수 있음
완전 제약 조건(Completeness Constraint)은 상위 레벨 개체 집합에 속하는 개체가 최소한 하나의 하위 레벨 개체에 속해야 하는지 여부를 특정함
- Total 전체 : 개체는 하위 레벨 개체 집합 중 하나에 반드시 속해야 함
- Partial 부분 : 개체는 하위 레벨 개체 집합 중 하나에 속할 필요가 없음 (Default 값)
특수화 스키마 표현 방법
표기법
ER 다이어그램 예
Company는 Employees, Departments, Projects 등을 가짐 / Company는 Department로 구성
각 Department는 고유 이름, 고유 번호, 부서를 관리하는 특정 직원을 가짐 / 그 직원이 관리하기 시작한 날짜를 추적
부서는 여러 위치를 가질 수 있음 / 하나의 부서는 여러 프로젝트를 관리
각 프로젝트는 고유 이름, 고유 번호, 단일 위치(single location)를 가짐
직원의 이름, 주민등록번호, 주소, 급여, 성별, 생일을 저장 / 직원은 하나의 부서에 할당
직원은 여러 프로젝트에서 일할 수 있음 / 그 프로젝트들은 동일한 부서에서 관리되지 않을 수 있음
각 직원이 각 프로젝트에서 일주일에 몇 시간 일하는지 추적 / 각 직원의 직속 상사를 추적
보험 목적으로 각 직원의 부양 가족을 추적 / 가족의 이름, 성별, 생일, 직원과의 관계를 저장
- Dependents 속성으로는 이름, 성별, 생년월일, 관계(부, 모, 배우자, 아들, 딸 등등)이 있는데, 주 키를 할 수 있는 속성이 없으므로 “약한 개체”가 됨 (만약 주민번호가 있다면 강한 개체가 될 수 있음)
- 그림에서 타원은 속성을 표현
- Name 속성은 Fname, Minit, Lname으로 구성되는 복합 속성을 의미하며
- 두 개의 타원으로 표현된 Location 속성은 다수 값 속성을 의미
- DEPENDENT weak entity type의 Name(점선 밑줄이 있음) 속성은 부분 키를 표현
'Database [DB]' 카테고리의 다른 글
[DB] 08. Database Design Theory (1) | 2024.01.09 |
---|---|
[DB] 06. Application Development (0) | 2024.01.08 |
[DB] 05. Major Functionalities of Database Systems (2) | 2024.01.08 |
[DB] 04. SQL 2 (0) | 2024.01.07 |
[DB] 03. SQL 1 (1) | 2024.01.07 |