🔹 개체(entity): 실세계에서 다른 모든 객체와 구별되는 사물 또는 객체로, 속성들의 집합에 의해 표현됨.
\🔹 속성(attribute): 각 개체 집합의 각 구성원들이 가지는 기술적 특성.
🔹 개체 집합(entity set): 같은 속성을 공유하는 같은 유형들의 entity들의 집합
🔹 관계(relationship): 여러 개체들 사이의 연관성
🔹 관계 집합(relationship set): 같은 유형의 관계들의 집합
🔹 참가(participation): 개체 집합 사이의 연관성
E-R 스키마에서 관계 인스턴스(relationship instance)는 실제 존재하는 개체들 사이의 연관성이 존재함을 나타냄.
🔹 역할(role): 관계에서 개체가 행하는 기능. 일반적으로는 각 개체가 구분되기 때문에 따로 명시하지 않지만, 관계의 의미를 명확하게 할 필요가 있을 때는 역할을 명시함. 관계에 참가하는 개체들이 한 번 이상 다른 역할을 가지고 참가하는 경우처럼 개체들이 서로 구분되지 않을 때가 그런 경우임.(아래 그림의 경우)
점선으로 Relationship entity와 Relationship의 속성을 연결함.
🔹 관계 집합의 차수(degree): Relationship set에 참가하는 entity set의 수
degree=2
DB 내대부분의 관계가 binary임.
degree=3
🔹 속성: 각 entity set의 각 구성원들이 가지는 기술적 특성
🔹 도메인(domain): 각 속성에 대해서 허용되는 값의 집합
🔹 속성의 유형
ㅤㅤ▪️ simple attribute(단순 속성): 더 이상 작은 단위로 나뉘지 않는 속성
ㅤㅤ▪️ composite attribute(복합 속성): 더 작은 단위로 나뉠 수 있는 속성
ㅤㅤ▪️ single-valued attribute(단일값 속성): 특정 entity의 속성이 오직 하나의 값만을 가질 수 있음.
ㅤㅤ▪️ multivalued attribute(다중값 속성): 특정 entity의 속성이 여러 개의 값을 가질 수 있음. ex) 전화번호
ㅤㅤ▪️ derived attribute(유도된 속성): 다른 속성들이나 객체들의 값들로부터 유도되는 속성 ex) 생일로부터 나이
를 계산함.
🔹 사각형: 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)을 나타냄.
🔹 대응수(Cardinality): Relationship을 통해서 다른 entity와 관련될 수 있는 entity의 수
🔹 전체적(total, =): 모든 개체가 적어도 한 관계에 참가하는 경우
🔹 부분적(partial, -): 일부 개체만 관계에 참가하는 경우
🔹 복잡한 제약조건의 표기
min..max
- 최소 및 최대 cardinality를 나타냄
- 최소 cardinality가 1 ➡️ Total Participation
- 최대 cardinality 값이 * ➡️ 제한 없음을 의미함.
🔹 키: 각각의 entity들을 서로 구별해주기에 충분한 속성의 집합
🔹 수퍼키(super key): 각각의 entity를 unique하게 구별할 수 있는 속성 또는 속성들의 집합 유일성
🔹 후보키(candidate key): 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합. 기본키가 될 수 있는 후보들 유일성, 최소성
🔹 기본키(primary key): 후보키들 중에서 선택된 키 유일성, 최소성
🔹 대체키(alternate key): 기본키를 지정하고 남은 후보키들
🔹 외래키(foreign key): 테이블이 다른 테이블의 primary key를 참조하여 테이블 간의 관계를 연결함. 다른 테이블의 데이터를 참조할 때 없는 값으 참조할 수 없음.
🔹 Relationship의 key: 관계에 참여하는 entity들의 primary key의 집합
🔹 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(이중선)
🔹 Extended E-R은 객체지향 개념을 다룸.
🔹 Extended E-R = E-R + 상속(Inheritance)
🔹 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 집합에 속해야만 함. 하나의 화살표
🔹 동일한 여러 개의 속성들을 가지는 entity set들을 상위 단계 entity set으로 합치는 것
🔹 Bottom-up design process
🔹 상위클래스와 하위클래스superclass-subclass
전체 일반화/세분화(total) & 부분 일반화/세분화(partial)
➡️ 빈 화살표 + 점선으로 표현💭ch6 p.45 강의안 그림 오류?
🔹 통합화: 관계를 상위 entity로 취급하는 추상화 기법
🔹 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)
🔸 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)
🔹 인공적으로 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
🔹 제약조건도 변경해주어야 함.
🔹 Method 1. 상위 entity 스키마를 만들고, 각 entity의 속성 & 상위 entitiy의 primary key를 포함하는 하위 entity 스키마를 만듦.
🔹 Method 2. 모든 entity에 대한 스키마를 만들고, 속성과 상속된 속성을 모두 표현함.
🔹 UML(Unified Modeling Language): 소프트웨어 시스템의 다양한 구성요소(component)들의 명세서를 만들기 위해 OMG(Object Management Group)의 원조 아래 개발된 표준
🔹 E-R vs UML Class Diagram