ch6. Entity-Relationship Diagram

Sieun·2022년 10월 27일
2

데이터베이스

목록 보기
3/7
post-thumbnail

1. Entity-Relationship Model

  • DB 논리적 단계를 위한 Design tool
  • E-R 모델은 논리적 스키마로 변환됨. ex) 관계형 모델의 테이블
  • E-R 데이터 다이어그램은 DB의 전체 논리 구조를 나타내는 Enterprise schema(조직의 스키마)를 명시함으로써 데이터베이스 설계를 쉽게 하도록 개발됨.
  • E-R 모델은 실세계의 조직의 의미와 상호 작용을 개념적 스키마로 나타내는 데 매우 유용함.
    ➡️ 많은 DB 설계 도구들이 E-R 모델 개념에 기반을 둠.
  • E-R 모델은 관계형 모델뿐만 아니라 어떤 DB 모델로든 변환될 수 있음.
  • E-R 모델은 개체 집합(entity set), 관계 집합(relationshop set), 속성(attribute)라는 3가지 기본 개념을 가지고 있음.

1.1 개체 집합

🔹 개체(entity): 실세계에서 다른 모든 객체와 구별되는 사물 또는 객체로, 속성들의 집합에 의해 표현됨.
\🔹 속성(attribute): 각 개체 집합의 각 구성원들이 가지는 기술적 특성.
🔹 개체 집합(entity set): 같은 속성을 공유하는 같은 유형들의 entity들의 집합

  • 각 개체는 각각의 속성에 대하여 값(value)를 가짐.

1.2 관계 집합

🔹 관계(relationship): 여러 개체들 사이의 연관성
🔹 관계 집합(relationship set): 같은 유형의 관계들의 집합

🔹 참가(participation): 개체 집합 사이의 연관성
E-R 스키마에서 관계 인스턴스(relationship instance)는 실제 존재하는 개체들 사이의 연관성이 존재함을 나타냄.
🔹 역할(role): 관계에서 개체가 행하는 기능. 일반적으로는 각 개체가 구분되기 때문에 따로 명시하지 않지만, 관계의 의미를 명확하게 할 필요가 있을 때는 역할을 명시함. 관계에 참가하는 개체들이 한 번 이상 다른 역할을 가지고 참가하는 경우처럼 개체들이 서로 구분되지 않을 때가 그런 경우임.(아래 그림의 경우)

  • Relationship set 또한 속성을 가질 수 있음. (설명 속성)

    점선으로 Relationship entity와 Relationship의 속성을 연결함.

🔹 관계 집합의 차수(degree): Relationship set에 참가하는 entity set의 수

  • binary relationship(이진 관계 집합): 두 entity set이 관련된 relationship set degree=2 DB 내대부분의 관계가 binary임.
  • non-binary relationship
    ex) Ternary Relationship(삼진 관계) degree=3

1.3 속성

🔹 속성: 각 entity set의 각 구성원들이 가지는 기술적 특성
🔹 도메인(domain): 각 속성에 대해서 허용되는 값의 집합
🔹 속성의 유형
ㅤㅤ▪️ simple attribute(단순 속성): 더 이상 작은 단위로 나뉘지 않는 속성
ㅤㅤ▪️ composite attribute(복합 속성): 더 작은 단위로 나뉠 수 있는 속성

ㅤㅤ▪️ single-valued attribute(단일값 속성): 특정 entity의 속성이 오직 하나의 값만을 가질 수 있음.
ㅤㅤ▪️ multivalued attribute(다중값 속성): 특정 entity의 속성이 여러 개의 값을 가질 수 있음. ex) 전화번호

ㅤㅤ▪️ derived attribute(유도된 속성): 다른 속성들이나 객체들의 값들로부터 유도되는 속성 ex) 생일로부터 나이를 계산함.

2. E-R 다이어그램

2.1 기본 구조

🔹 사각형: entity set(개체 집합)을 나타냄. 두 부분으로 이루어져, 윗부분은 entity set의 이름을 포함하고 아랫부분은 entity set의 모든 속성들의 이름을 표현함.

🔹 밑줄 그어진 속성: primary key 속성임을 나타냄.
🔹 다이아몬드: relationship set(관계 집합)을 나타냄.

🔹 선: entity set을 relationship set에 연결함. 간선의 집합 = Relationship set
🔹 점선: relationship set의 속성들을 그 relationship set에 연결함.
🔹 이중선: entity의 relationship set에의 전체적 참가를 나타냄.
🔹 이중 다이아몬드: weak entity set으로 연결된 식별관계 집합(identifying relationship set)을 나타냄.

2.2 제약조건

2.2.1 Cardinality (대응수)

🔹 대응수(Cardinality): Relationship을 통해서 다른 entity와 관련될 수 있는 entity의 수

  • 일대일
  • 일대다
  • 다대일
  • 다대다
    🔹 화살표(→): Cardinality "1"을 나타냄.
    🔹 직선(ㅡ): Cardinality "다수"를 나타냄.

2.2.2 참가 제약조건

🔹 전체적(total, =): 모든 개체가 적어도 한 관계에 참가하는 경우
🔹 부분적(partial, -): 일부 개체만 관계에 참가하는 경우

🔹 복잡한 제약조건의 표기 min..max

  • 최소 및 최대 cardinality를 나타냄
  • 최소 cardinality가 1 ➡️ Total Participation
  • 최대 cardinality 값이 * ➡️ 제한 없음을 의미함.

2.2.3 key

🔹 키: 각각의 entity들을 서로 구별해주기에 충분한 속성의 집합
🔹 수퍼키(super key): 각각의 entity를 unique하게 구별할 수 있는 속성 또는 속성들의 집합 유일성
🔹 후보키(candidate key): 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합. 기본키가 될 수 있는 후보들 유일성, 최소성
🔹 기본키(primary key): 후보키들 중에서 선택된 키 유일성, 최소성
🔹 대체키(alternate key): 기본키를 지정하고 남은 후보키들
🔹 외래키(foreign key): 테이블이 다른 테이블의 primary key를 참조하여 테이블 간의 관계를 연결함. 다른 테이블의 데이터를 참조할 때 없는 값으 참조할 수 없음.
🔹 Relationship의 key: 관계에 참여하는 entity들의 primary key의 집합

2.2.4 weak entity

🔹 weak entity set: primary key가 없는 entity set
🔹 strong entity set: primary key가 있는 entity set
- weak entity set은 식별 개체와 total, 다대다 관계로 연관되어야 함. 식별 관계는 이중 다이아몬드로 표현됨.
🔹 구별자(discriminator): weak entity의 속성들
🔹 weak entity의 primary key: weak entity가 의존하는 strong entity의 primary key와 weak entity의 구별자(속성)들
weak entity의 participation은 항상 total(이중선)

3. Extended E-R Features(FER, 확장된 E-R)

🔹 Extended E-R은 객체지향 개념을 다룸.
🔹 Extended E-R = E-R + 상속(Inheritance)

3.1 Specializaiton(세분화)

🔹 entity set 내에서 하위 그룹을 표시하는 과정
🔹 Top-down design process
🔹 Attribute inheritance: 하위 레벨 entity set은 상위 레벨 entity set의 모든 속성들과 관계 참여를 상속받음.하위 entity는 상위 entity가 참가하는 모든 관계에 참가할 수 있음.
🔹 ISA 관계: "is a"를 의미함.
🔹 세분화 관계는 상위클래스-하위클래스 관계로 불리기도 함. superclass-subclass

🔸overlapping specialization(중복되는 세분화): 복수의 세분화된 entity 집합에 속할 수 있음. 두 개의 분리된 화살표
🔸disjoint specialization(중복되지 않는 세분화): 최대해 하나의 세분화된 entity 집합에 속해야만 함. 하나의 화살표

3.2 Generalizaiton(일반화)

🔹 동일한 여러 개의 속성들을 가지는 entity set들을 상위 단계 entity set으로 합치는 것
🔹 Bottom-up design process
🔹 상위클래스와 하위클래스superclass-subclass

  • 일반화의 제약조건: entity가 하위 entity의 구성원이 될 수 있을지 결정함.
    🔸condition-defined(조건에 의한 정의): entity의 조건 만족 여부에 의해 평가됨.
    ex) 모든 하위 개체들이 동일한 속성에 의해 평가됨 ➡️ 속성에 의한 정의(attribute-defined)
    🔸user-defined(사용자에 의한 정의): 사용자에 의해 정의된 하위 entity는 멤버십 조건에 의해 제약받지 않음
  • entity들이 단일 일반화(single generalization)에서 하나 이상의 하위 entity에 속하는가 아닌가.
    🔸분리(disjoint): 분리 제약조건에서 하나의 entity는 오직 하나의 하위 entity에만 속해야함.
    🔸중첩(overlapping): 동일한 entity가 단일 일반화의 하나 이상의 하위 entity에 속할 수 있음.
    🔸완전성 제약조건(completeness constraint): 상위 entity가 반드시 하나 이상의 하위 entity에 속해야 하는지 아닌지 전체 일반화/세분화(total) & 부분 일반화/세분화(partial) ➡️ 빈 화살표 + 점선으로 표현

💭ch6 p.45 강의안 그림 오류?

3.3 Aggregation(통합화)

🔹 통합화: 관계를 상위 entity로 취급하는 추상화 기법

4. 릴레이션 스키마로의 변환(converting to tables)

🔹 E-R diagram을 table로 변환함. (주로 소프트웨어가 자동적으로 처리)
🔹 Entity set과 relationship set은 Relation schema로 표현됨.
🔹 One entity ➡️ One table & One relationshop ➡️ one table

🔹 strong entity set은 속성을 가진 스키마로 표현함.
🔹 weak entity set은 식별 관계의 strong entity set의 primary key를 포함하는 테이블로 변환됨. section(course_id, sec_id, semester, year)

4-1. Relationship set의 표현

🔸 Method 1. 각각의 entity의 primary key를 포함
- relationship의 cardinality나 participation에 관계없이 항상 적용됨. 🌟
- 다대다 관계는 관계에 참여하는 2개의 entity set의 primary key 속성을 포함하는 스키마로 표현될 수 있음. 아래 그림 ➡️ advisor = (i_id, s_id)

data vs schema: https://techvu.dev/131

🔹 Method 2. 한 entity의 primary key가 다른 entity로 삽입됨.
- method 1보다 효율적임.
- cardinality가 일대다(또는 다대일)이고, '다'인 쪽의 참여가 total일 때만 적용 가능함. 🌟 아래 그림 ➡️ inst_dept(stud_dept) 관계 생성 대신에, dept_name 속성을 instructor(student)에 추가함.
💥 그렇다면 스키마를 어떻게 표현할 수 있는 것임? advisor = (i_id, s_id, dept_name)??

💥 ch6 p.52 아예 이해안감. 먼소리지

🔹 여러 개의 값을 가지는 속성(multi-valued attribute)은 separate한 튜플로 매핑된다.
ex) instructor entity with primary key 22222 & phone numbers 456-7890 and 123-4567 maps to two tuples: (22222, 456-7890) and (22222, 123-4567)

4-2. 비이진관계를 이진관계로 변환

🔹 인공적으로 Entity를 하나 추가하여 비이진관계를 이진관계로 변환함.
ex) Replace R between entity sets A, B and C by an entity set E, and
three relationship sets:

(1) RA, relating E and A
(2) RB, relating E and B
(3) RC, relating E and C

🔹 제약조건도 변경해주어야 함.

4-3. 일반화의 스키마 표현

🔹 Method 1. 상위 entity 스키마를 만들고, 각 entity의 속성 & 상위 entitiy의 primary key를 포함하는 하위 entity 스키마를 만듦.

🔹 Method 2. 모든 entity에 대한 스키마를 만들고, 속성과 상속된 속성을 모두 표현함.

- 일반화가 joint & total ➡️ 상위 entity 스키마 필요 없음. student(ID, name, street, city, tot_cred), employee(ID, name, street, city, salary) - 일반화가 overlapping & total ➡️ 상위 entity 스키마 필요함. _person(ID, name, street, city)_, student(ID, name, street, city, tot_cred), employee(ID, name, street, city, salary)

4-4. E-R Notation에 사용되는 기호들

4-5. E-R Notation의 다른 표현

4-6. UML

🔹 UML(Unified Modeling Language): 소프트웨어 시스템의 다양한 구성요소(component)들의 명세서를 만들기 위해 OMG(Object Management Group)의 원조 아래 개발된 표준

🔹 E-R vs UML Class Diagram

profile
AI/ML 공부중👩🏻‍💻

0개의 댓글