본문 바로가기
데이터베이스 & 웹/데이터베이스

ER 모델링

by tryotto 2020. 4. 29.

< 개론 >



# ER Modeling


- 의의 : 모든 데이터베이스는 entity 의 집합과, 각 entity 간의 relationship 으로 나타낼 수 있다

- 구조 :

      > entity 는 attribute 를 갖고 있다

      > 여러개의 entity 가 모이면 entity set 이 된다

      > 여러개의 relationship 이 모이면 데이터베이스가  생성된다

- 주의 : Logical 에선 relation 이 하나의 "테이블"을 의미하나, ER 에선 그런 의미로 안 쓰인다





< Attribute >


- 개념

      > Domain : 각 entity 가 가질 수 있는 attribute 범위

      > 적용 대상 : relationship, entity 

- 종류

      > 여러 뜻을 갖고있는가?

1) Simple : 하나의 attribute 는 오직 그 attribute 만을 갖고 있다. 다른 복합적인 의미가 없다.

2) Composite : 하나의 attribute 안에, 여러 attribute 들이 복합적으로 섞여있다

      > 하나의 entity 가 해당 attribute 에 대해 여러 개의 값을 가질 수 있는가?

1) Single-valued    ex) 주민등록번호는 1인당 하나

2) Multivalued      ex) 한 사람당 여러 전화번호 가질 수 있다 (대포폰)

      > 다른 attribute 로부터 산출된 것인가?

1) Derived : 예를 들면, 생년월일을 이용해서 나이를 유추할 수 있다.

- 종류별 부호 표시

      > 한 칸 Tab : Simple 과 Composite 관계

      > { ~ } : Multi-valued

      > function (~) : Derived

      > 밑줄

1) 실선 : Primary key

2) 점선 : Partial Key = Discriminator

- 주의 : Redundant Attribute

      > 양 쪽의 entity 에 중복되는 attribute 가 있음에도 불구하고 Relationship 을 형성했을 경우

> 아예 Relationship 을 만들지 않든

            > 중복되는 Attribute 를 지우든 해야 한다

- Logical Level 과의 차이 : 

       > composite, multi valued, derived 는 atomic 하지 않다 

> Logical Level 에선, 이런걸 허용하지 않는다




< Keys >

- Super > Candidate > Primary key

- Relationship Set 에서 Super Key

     1) 일반적인 relationship 관계 : 양쪽 entity set 의 primary key 를 하나씩 가져온 쌍

     2) Strong & Weak 관계 : Strong 쪽의 primary + Weak 쪽의 모든 attribute

> 특징 : 한 쌍의 entity set 에서, 오직 한가지의 relationship 을 가질 수 있다





< Relation >



# Relationship set & Relationship


- Relationship : "한 쌍" 의 entity 가 관계를 이루고 있는 것

- Relationship Set : 관계를 이루고 있는 "모든 관계" 들의 집합




# Degree 


- 하나의 Relationship set 을 이루고 있는 entity set 의 갯수

      > Binary Relationship : 두 개의 entity set 으로 이뤄진 경우

      > tenary Relationship : 세 개의 entity set 으로 이뤄진 경우






< Relation 2 Relation >


# Roles


- 동일한 entity 로부터 두 번 이상의 참조를 하는 relation 관계

- 각각 참조할때, course_id, prereq_id 같이 따로 이름지어서 뽑아낸다



# Cardinality Constraints


- Cardinality : 상대쪽 entity 1개를 기준, 자신쪽 entity 가 최대 몇 개 연결될 수 있는가?

- N:N 관계를 표현하는 것

      > 화살표 방향, 기호 등 여러가지 방식 사용

- 종류 :

      1) one to one

      2) one to many

      3) many to many

- Alternative Notation

      1-1) 0.. : 연결된 해당 entity 는 partial

      1-2) 1.. : 연결된 해당 entity 는 total

      2-1) ..1 : 반대편 entity 는 one

      2-2) ..* : 반대편 entity 는 many



# Participation


1) Total : 모든 entity 가 해당 relation 에 참여한다

2) Partial : 일부 entity 가 해당 relation 에 참여하지 않을수도 있다




# Tenary Relationship


- 3차원 이상의 relationship

- 주의 : tenary 의 경우, 화살표는 최대 한 개만 사용할 수 있다

> 2개 이상일 경우, 해석의 모호성이 있기 때문에 금지한다




# Strong & Weak Entity Set


- Weak : primary key 를 갖고 있지 않은 entity set

      > 자신을 표현할 수 있는 다른 entity 와 연결 필요

- Strong : Weak 를 표현해줄 수 있도록 하는 entity set

      > identifying entity set

- Weak & Strong 의 관계 : identifying relationship

- 이때의 Cardinality

      > one(strong) to many(weak)

> discriminator(=partial key) : many 쪽에 있는 모든 attributes 집합 

> weak entity set 의 primary key : strong의 primary key + discriminator

- 표시 방법 :

      > 이중 다이아몬드 : identifying relationship

      > 점선 밑줄 : weak entity set 의 partial key (=discriminator)


'데이터베이스 & 웹 > 데이터베이스' 카테고리의 다른 글

데이터베이스 - 생활코딩  (0) 2020.02.04