ER - model
1. ER - model 이란?
Database Design 간단하게 아래 6단계 정도로 구분된다.
Requirements Analysis -> Conceptual Design -> Logical Design -> Schema Refinement
-> Physical design -> Security Design
그 중 Conceptual design은 기능과 형태를 광범위하게 표현하는 단계이다. 바꾸어 말하면, 어떻게 디자인하려고 한다는 것을 정리하는 단계이다.
주로 ER - model을 이용해서 그래프를 베이스로 해서, database의 기능과 요소를 표현한다. ER diagram은 데이터의 집합 중 특정한 부분을 묘사하기 때문에 schema라고 할 수 있다.
2. 관련 용어
Data model : 데이터를 묘사하기 위한 concepts의 집합
Schema : data model을 이용하여, 데이터의 집합 중 특정한 부분을 묘사
Relational model of data :모든 관계는 스키마를 가진다.
3. ER - model 구성요소
ER - model은 Entity Relation Model로 개체(Entity)와 관계(Relationship)를 나타내는 모델이이다. 이름에서 알 수 있듯이, ER - model의 구성요소는 크게 개체(Entity)와 관계(Relationship) 그리고 속성(Attribute)로 나눌 수 있다.
Entity : A real - world object described by a set of attribute values
Enity Set : A collection of similar entities.
Entity는 개체이다. Entity를 이해하기 위해서는 먼저 Entity set을 이해할 수 있어야 한다. "학생" 이라는 Entity Set이 있으면, 그 안에 "홍길동" 이라는 학생 1명이 Entity가 되는 것이다. Entity의 특징은 다음 과 같다.
- 하나의 Entity Set 안에 있는 모든 Entity는 같은 attribute(속성)을 가져야 한다.
- 각각의 Entity는 하나의 Key를 가져야 한다.
각각의 attribute는 domain(가능한 값)을 가져야 한다.
Attribute : Entity가 가진 속성
개체가 갖는 속성을 의미한다. 예를 들면 "학생"이 가진 학번, 이름, 학년 등의 정보를 속성이라고 한다.
- Key attribute (키 속성) : 모든 Entity를 구분해주는 고유한 속성 ex. 주민번호, 학번
- composite attribute (복합 속성) : 주소를 시 - 군 - 동 - 건물 이름 으로 나누어 표현하는 것과 같다. 더 편한 검색을 위한 방법.
- Multi - Valued attribute (다중 속성) : 학생 Entity가 갖는 학과 Attibute에 여러개의 값(복수 전공과 같은)이 있는 것을 의미한다.
- Derived attribute (유도된 속송) : 다른 속성으로 부터 유도된 속성. 생년월일을 알 고 있으면, 나이라는 속성이 유도됨.
Relationship : Association among two or more entities
Relationship Set : Collection of similar relationships
말 그대로 개체들 사이의 관계를 나타내주는 관계성이다. 관계를 나타내기 때문에 주로 동사를 사용한다. (ex 근무하다. 수강하다 등)
다음과 같은 ER diagram이 있다면, Student 개체와 Course 사이를 Takes라는 관계가 묶어주고 있다.
- Key Contrains : 학생은 여러 수업을 들을 수 있고, 한 강의 역시 여러 학생을 받을 수 있다. 또한 학생을 아무 강의를 듣지 않아도 되지만, 강의는 한명의 학생이라고 있어야 한다. 이런 식으로 개체들 사이에 수적인 관계가 필요하다.
위 그림에 나타난 실선이 다대다 관계를 나타내고, 화살표가 at most one을 나타내고, bold 선이 al least one을 의미한다.혹은 아래 그림처럼 관계를 직접 작성해서 나타내기도 한다. (1:1 / 1:n / n:m)
4. 실습
이제 직접 ER diagram을 그려보도록 하자.