강의 순서

Chap 2. Entity-Relationship Model

Chap 3. Relational Model

Chap 4. Relational Commercial Languages - SQL

Chap 7. Relational Database Design

[Chap 11. Storage and File Structure]

Chap 12. Indexing and Hashing

Chap 15. Transactions

[Chap 16. Concurrency and Serializability]

*강의 HomePage: http://comedudb6.knue.ac.kr/tykim//Myhome/note.html

CHAP 2. Entity-Relationship Model

*Textbook: Chapter 7 (6판), Chapter 6(7판)

• DB 구축 대상을 어떻게 파악하여 표현할 것인가?

(ex) 은행:

고객 - 이순신, 안중근, 유관순

계좌 - 900, 556, 647, 801

계좌개설

(ex) 학교:

교수 - 김태영, 김영식, 송기상, 이태욱, 이영준, 김성식

강좌 - Database, OS, Graphics, CAI, Programming, Data Structure

학생 - 홍길동, 김철수, 박미영

강좌개설

수강현황 및 학점

⇒ How to represent the real world into the DB?

Database Design 순서

① The specification of an enterprise scheme: 조직 내에서 어떤 데이터가 어디서 발생하며, 어떤 경로로 유통되는가(Data flow)를 파악 - 문서, 관계자 interview 등.

↓

② E-R diagram: A set of basic objects called entities and relationships among these entities.

↓

③ Design of tables and keys.

↓

④ Creation of tables and associated characteristics (keys, integrity constraints, indexes, ... ) using DBMS.

Entities and Entity sets

• Entity: An object that exists, and is distinguishable from other objects.

(ex) 이순신, 안중근, 유관순 - Visible

김태영, 김영식, 송기상, 이태욱, 이영준, 김성식

Database, OS, Graphics, CAI, Programming, Data Structure - Invisible

900, 556, 647, 801

⇒ An entity is represented by a set of attribute valeues(속성값) in DB.

(ex) {이순신, 대구, 수성동}, {안중근, 서울, 신촌}, {유관순, 대전, 둔산동}

{900, 100,000}, {556, 90,000}, {647, 85,000}, {801, 150,000}

• Entity sets: A set of entities of the same type.

(ex) 고객, 교수, 강좌, 계좌

⇒ An entity set is represented by a set of attributes(속성) in DB.

(ex) 고객(고객명, 시, 동, 계좌번호), 계좌(계좌번호, 예금액)

*참조: 그림 7.1 (p.240)

• The domain of an attribute: A set of permitted values for an attribute.

(ex) 10≤고객나이≤120

• The types of an attribute

- Composite attribute

*참조: 그림 7.4 (p.244)

- Multivalued attribute

- Derived attribute

• Key: Entity set에서 오직 하나의 entity를 골라낼 수 있는 특수한 attribute들의 집합.

(예) 고객-{고객번호}, 계좌-{계좌번호}, 대한민국국민-{주민번호}

- 무결성(integrity) 조건: DB내에 올바른 데이타를 유지하기 위한 조건.

① Entity integrity: 각 개체는 고유해야 한다. 즉, Key 값은 고유해야 한다.

⇒ Key는 null 값을 가질 수 없다.

② Domain integrity: 속성이 가질 수 있는 값은 어떤 범위 내에 있어야 한다.

③ Referential integrity: entity들이 서로 관련되었을 때, 해당하는 entity들이 entity set에 존재해야 한다.

⇒ 참조할 수 없는 참조 Key 값을 가질 수 없다.

• Strong/Weak Entity Sets

*참조: 그림 7.14 (p.256), p.255

Relationship and Relationship sets

• Relationship: An association among several entities.

(ex) {이순신, 대구, 수성동} - {900, 100,000},

{안중근, 서울, 신촌} - {556, 90,000},

{안중근, 서울, 신촌} - {647, 85,000},

{유관순, 대전, 둔산동} - {647, 85,000},

{유관순, 대전, 둔산동} - {801, 150,000}

• Relationship sets: A set of relationship of the same type.

(ex) 고객 -<개설>- 계좌,

학생 -<수강>- 강좌,

남 -<?>- 여

*참조: 그림 7.2 (p.241)

• A relationship may also have attributes.

(ex) 개설:{개설일}

수강:{신청학기, 학점}

*참조: 그림 7.3 (p.242)

• Mapping cardinalities(수, 농도): Express the number of entities to which another entity can be associated via a relationship set.

- For a binary relationship set R between entity sets A and B,

① one to one	(p.245, 그림 7.5 (a))

② one to many	(p.245, 그림 7.5 (b))

③ many to one	(p.245, 그림 7.6 (a))

④ many to many	(p.245, 그림 7.6 (b))

ex) 판매사원 -<판매>- 자동차?

학생 -<수강>- 강좌?

남 -<결혼>- 여?

직원 -<관리>- 상사?

- 항상 정해져 있지는 않음. 즉, 조직의 업무 운영방법에 따라 다를 수 있다.

ex) 고객 -<개설>- 계좌: one to many OR many to many.

① An account can belong to only one customer and a customer can have several accounts.

② An account can belong to serveral customers (i.e., joint account).

- 일대일/일대다의 경우는 entitiy set의 속성으로 옮길 수 있다.

일대일: 양쪽 어느 쪽도 가능.

일대다: 다-쪽의 entity set.

• Existence-dependencies (존재 종속)

ex) 사원 -<부양>- 부양가족

사원				부양가족
사원	이름	직급		가족명	관계	나이
111	이순신	부장		박명숙	처	55
				이현철	자	20

If the existence of entity x depends on the existence of entity y, then x is said to be existence-dependent on y.

⇒ If y is deleted, so is x.

ex) 부양가족이 사원에 existence-dependent함.

사원: A dominant entity set.

부양가족: A surbordinate entity set. (strong or weak)

*참조: 그림 7.14 (p.256)

• Total participation

Double lines: Entity가 Relationship에 ‘모두’ 관련됨을 표시

Key

• Specify how entities and relationships are distinguished.

⇒ The difference among them must be expressed in terms of their attribute values.

ex)

학생
학번	성명	주민번호	주소	전화번호

• Superkey: A set of one or more attributes which allow us to identity uniquely an entity (a relationship) in the entity set (a relationship set)

ex) {학번}: superkey?

{학번, 성명}: superkey?

{성명, 주소}: superkey?

{주민번호}: superkey?

{성명, 주민번호, 주소}: superkey?

{학번, 성명, 주민번호, 주소, 전화번호}: superkey?

• Candidate keys (후보키): If k is a superkey, so is any superset of k. Thus, superkeys for which no proper subset is a superkey.

⇒ minimal superkeys

ex) {학번}, {주민번호}

• Primary key (주키): A candidate key that is chosen by the DB designer as the principal means of identifying an entity (a relationship) within an entity set (a relationship set).

ex) {학번}

- A weak entity set: Does not have sufficient attributes to form a primary key. (but, 구별자(discriminator) 존재)

A strong entity set: Has a primary key.

*참조: 그림 7.14 (p.256)

ex) 사원 -<부양>- 부양가족

사원				부양가족
사원	이름	직급		가족명	관계	나이
111	이순신	부장		박명숙	처	55
112	안중근	부장		이현철	자	20
				박명숙	처	50

⇒ weak entity set의 table은 종속하는 strong entity set으로부터 주키를 빌려옴.

• Existence-dependency와 Primary key와의 관계: Existence dependent 하더라도 반드시 weak entity set은 아니다.

⇒ 즉, 존재종속 하더라도 주키를 가질 수도 있다.

ex) 부양가족(주민번호, 가족명, 관계, 나이)

Database

• How to represent the real world into the DB?

⇒ A collection of tables representing entity sets and relationship sets.

(Entity set들과 relatinship set들을 table 형태로 표현함.)

(ex) 은행 DB

고객 table- 이순신, 안중근, 유관순

계좌 table - 900, 556, 647, 801

계좌개설 table

(ex) 학교 DB

교수 table - 김태영, 김영식, 송기상, 이태욱, 이영준, 김성식

강좌 table - Database, OS, Graphics, CAI, Algorithm, AI

학생 table - 홍길동, 김철수, 박미영

강좌개설 table

수강현황 및 학점 table

• ER Diagram

<방법 #1> 대안적 표기 방법

<방법 #2> Textbook (6판/7판)

ex) p.257 그림 7.15 (대학)

E-R diagram

• Specifies entity sets and relationship sets into a diagram.

- Entity set: a set of attributes, a primary key, a weak/strong entity set를 파악.

- Relationship set: a set of attributes, a mapping cardinality를 파악.

*그림 7.7(p.250), 그림 7.8(p.251)

• Components

*비교: p.278 그림 7.24 ⇔ p.279 그림 7.25 (대안 표기법)

- Rectangles: Entity sets

- Ellipses: Attributes

- Diamonds: Relationship sets	(ex) p.250 그림 7.7

p.251 그림 7.8

- Lines: Attribute ↔ entity sets and relationship sets

- Composite/Multivalued/Derived attributes	ex) p.253 그림 7.11

Multivalued Attribute: e.g. 전화번호 (집전화/핸드폰)

Derived Attribute: e.g. 나이

- Underline: Primary keys

- Arrows: Mapping cardinalities	ex) p.251 그림 7.9,

⇔ Cardinality limits	ex) p.252 그림 7.10

- Cardinality Limit의 표현: Relationship set와 Entity set간.

ℓ..h: ℓ-최소 cardinality, h-최대 cardinality

ex)	1: entity가 많아야 하나의 relationship과 관련

*: 무제한

⇒ 1..*: Double lines와 동일

ex) p.252 그림 7.10

0..*: 교수가 학생을 안 받을 수도, 혹은 여러 명 지도할 수도 있음

1..1: 각 학생은 정확하게 하나의 교수와 연관됨.

- Role indicators	ex) p.253 그림 7.12

- Doubly outlined rectangles and diamonds: Weak entity sets

ex) p.256 그림 7.14

⇒ A dotted line: A discriminator (A weak entity set의 구별자)

- 일반화(ISA - Generalization)

①Total generalization: 상위개체는 하위개체 집합 모두에 속함.

②Disjoint    〃      : 하나의 상위개체는 여러 하위개체 집합 중 하나에만 속함.

ex) Account - Checking Account OR Savings Account

ex) 일반화: p.271 그림 7.21,

p.278 그림 7.24, p.279 그림 7.25

- 대안적 표기방법

p.278 그림 7.24, p.279 그림 7.25

Reducing E-R diagrams to tables

• Principle: For each entity set and each relationship set,

⇒ There is a unique table.

ex) 방법 #1: 대안적 표기 방법 (은행)

ex) 방법 #2: p.257 그림 7.15 (대학) - Textbook (6판/7판)

1. Strong entity sets

Let E be a strong entity set with attributes a1, ... , an.

⇔ A table called E with n distinct columns.

ex) p.258 – p.260: 강성 개체집합의 표현

2. Weak entity sets

Let E be a weak entity set with attributes a1, ... , am.

Let B be a strong entity set on which E is dependent, and

let attributes bi be the primary key of B.

⇔ A table called E with one column for each attribute of the set,

{a1, ..., am} U {bi}

- The primary key of a weak entity set

ex) 사원 -<부양>- 부양가족

사원				부양가족
사번	이름	직급		가족명	관계	나이
111	이순신	부장		박명숙	처	55
112	안중근	부장		이현철	자	20
				박명숙	처	50

The primary key of the strong entity set on which is existence-dependent, plus its discriminator (구별자).

⇒ 종속하는 strong entity set으로부터 주키를 빌려옴,

ex) p.260: 약성 개체집합의 표현

3. Relationship sets

Let R be a relationship set involving entity sets, E1, ... , Em

with primary keys, (a1), ... , (am).

Let R consist of n attributes {b1, ... , bn}.

⇔ A table called R with one column for each attribute of primary keys and  each attribute of R,

{a1} U , ... , U {am} U {b1, ... , bn}

Attribute(R) = Primary key(E1) U , ... , U Primary key(Em) U {b1, ... , bn}

⇔ Primary key for a relationship set

IF	many-to-many	: Primary keys from all entities

many-to-one	: Primary keys from many side entities

one-to-one	: Primary keys from either side entities

+ the possible addition of one or more of {b1, ... , bn} - discriminator.

ex) p.262 그림 7.16

개설						수강
강좌번호	교원번호	개설학기	장소	수강인원		강좌번호	학번	수강학기	학점
310	97-100	2019/2	응317	35		310	15-1111	2019/2	F
315	99-111	2020/1	교211	40		315	14-2222	2020/1	A
310	97-100	2020/2	응419	42		310	15-1111	2020/2	B

P.K.=(강좌번호, 개설학기)	P.K.=(강좌번호, 학번, 수강학기)

• Relationship sets with NO attributes linking a weak entity set to its corresponding strong entity set

- Need NOT be present in a table because of 'redundancy'.

ex) 사원 -<부양>- 부양가족, p.263: 스키마의 중복성 (약성 개체집합)

• Combination of Tables

- Entity set R에서 S로 가는 relationship set RS(one-to-many/one-to-one)인 경우

⇒ RS table은 S table에 포함시킬 수 있음. (why? cardinality)

Ex) 개설 table을 강좌 table에 포함.

강좌
강좌번호	교원번호	강좌명	개설학기	장소	수강인원

*참조: p.263-p.264: 스키마의 조합 (관계)

• Tenany relationship sets

*참조: 그림 7.13 (p.254)

• Higher-level and lower-level entity sets

ex)                    □□□□□□

□생물□       Higher-level entity sets   Generalization

□□□□□□

□□□□□□□        □□□□□□

□동 물□        □식물□

□□□□□□□        □□□□□□

□□□□□□     □□□□□□

□변온□     □항온□

□□□□□□     □□□□□□

□□□□□□□□□□□□□ □□□□□  □□□□□

□ 어□ 양□ 파□ □ 조□   □ 포□  Lower-level entity sets    Specialization

□ 류□ 서□ 충□ □ 류□   □ 유□

□   □ 류□ 류□ □   □   □ 류□

□□□□□□□□□□□□□ □□□□□  □□□□□

*참조: 그림 7.21 (p.271)

- Generalization: Emphasize the similarities.

Specialization: Emphasize the differences.

- Attribute inheritance: The attribute of the higher-level entity sets are inherited by lower-level entity sets.

ex) p.272: 속성의 상속

- Two different methods for transforming an E-R diagram into tables.

ex)

방법 1:

계좌
계좌번호	예금액

예금계좌
계좌번호	이자율

당좌계좌
계좌번호	초과발행액

방법 2:

예금계좌
계좌번호	예금액	이자율

당좌계좌
계좌번호	예금액	초과발행액

ex) p.276: 일반화의 표현

Method 1:

① Create a table for the higer-level entity set.

② For each lower-level entity set, create a table with a column for each of the attributes plus a column for each attribute of the primary key of the higer-level entity set.

Method 2:

① For each lower-level entity set, create a table with a column for each of the attributes plus a column for each attribute of the higer-level entity set.

⇒ Which one is right or more efficient?