본문 바로가기

Database [DB]

[DB] 07. Entity-Relationship Data Model

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