1. 개요
ER 모델 (Entity-Relationship model)은 데이터베이스를 디자인 하기 위해 이용되는 모델링 기법으로, 데이터베이스에 대한 요구 사항을 그래픽적으로 표현하는 방법이다. ER 모델에서는 데이터베이스에 저장되는 데이터들을 추상화하여 나타내기 때문에 특정 DBMS 및 하드웨어에 독립적으로 데이터베이스의 구조를 나타낼 수 있다.
2. 개체 (Entity)
ER 모델에서 개체는 개별적으로 구별될 수 있는 모든 것을 말한다. 예를 들어, 어떠한 회사의 직원 정보가 저장된 데이터베이스에서는 직원, 부서 등이 개체가 된다. 개체에는 weak entity와 regular entity가 있다.
- weak entity: 개체가 가진 속성들로는 개체를 고유하게 정의할 수 없는 개체를 말한다. 예를 들어, 학과 (department)라는 개체는 A라는 학교와 B라는 학교 모두에 존재할 수 있기 때문에 학교라는 개체와의 관계를 명시해야 학과라는 개체를 정의할 수 있다. 따라서, 학과라는 개체는 weak entity에 해당한다.
- regular entity: weak entity가 아닌 모든 개체를 말한다.
3. 속성 (Property)
속성은 각 개체가 가질 수 있는 정보들을 말한다. 학생이라는 개체는 이름, 학번, 성별, 소속 학과, 나이 등의 속성을 가질 수 있다.
- simple attribute: 더 이상 나누어지지 않는 속성을 말하며, simple attribute로는 번지, 도시 등이 있다.
- composite attribute: 두 개 이상의 속성으로 구성된 것을 말한다. 국가와 도시, 번지 등으로 구성되는 주소는 composite attribute에 해당한다.
- key attribute: 객체를 유일하게 구별할 수 있는 속성이다.
- single-valued attribute: 하나의 객체가 하나의 값만 가질 수 있는 속성을 말한다. 사람의 성별은 single-valued attribute에 해당한다.
- multi-valued attribute: 하나의 객체가 여러 값을 가질 수 있는 속성을 말한다. 어떠한 사람의 취미는 여러 개가 존재할 수 있기 때문에 취미에 해당하는 속성은 multi-valued attribute이다.
- base attribute: 다른 속성으로부터 유도되지 않고, 오직 해당 속성을 참조해야만 값을 알 수 있는 속성을 말한다.
- derived attribute: 다른 속성으로부터 값이 결정될 수 있는 속성을 말한다. 예를 들어, 어떠한 사람의 나이는 그 사람의 주민등록번호를 참조하면 결정할 수 있기 때문에 나이는 derived attribute에 해당한다.
4. 관계 (Relationship)
ER 모델에서 관계는 두 개 이상의 개체 사이의 연관성을 의미한다. 개체 사이에 존재하는 관계의 종류로는 다음과 같은 것이 있다.
- one-to-one: 두 개체의 instance가 각각 하나씩 연관되는 관계이다.
- one-to-many: 한 개체의 하나의 instance가 다른 개체의 여러 instance에 연관되는 관계이다.
- many-to-many: 한 개체의 여러 instance와 다른 개체의 여러 instance가 연관되는 관계이다.
- total participation: 한 개체의 모든 instance가 반드시 어떠한 관계를 통해 다른 개체의 instance와 연관되는 관계를 말한다. 예를 들어, Employee와 Department라는 개체를 이용하여 사원들의 부서를 관리하는 테이블 WORK_FOR를 만들면, Employee와 Department는 total participation 관계이다. Employee의 모든 instance는 반드시 Department의 instance와 WORK_FOR 테이블에서 연관되어야 하기 때문이다.
- recursive relation: 한 개체가 자기 자신을 참조하는 관계를 말한다.
5. 개체의 subtype과 supertype
모든 개체는 적어도 하나 이상의 개체 타입을 갖는다. 관계형 데이터베이스에서는 개체가 갖는 타입에 대해 subtype과 supertype라는 개념이 존재한다. 예를 들어, 직원 정보가 저장된 데이터베이스에서 Programmer에 해당하는 개체는 Employee라는 개체의 subtype이며, 반대로 Employee라는 개체는 Programmer라는 개체의 supertype에 해당한다. 이러한 subtype과 supertype 관계에 있는 개체는 다음과 같은 속성을 갖는다.
- supertype에 해당하는 개체가 갖는 모든 속성은 subtype에 해당하는 개체에 적용할 수 있다. 그러나 그 반대는 항상 가능하지 않다.
- subtype에 해당하는 개체는 자동적으로 supertype에 해당하는 개체가 연관된 모든 관계에 포함된다.
프로그래밍에서 OOP의 개념을 익힌 사람이라면, 위에서 설명한 subtype과 supertype 관계에 있는 두 개체가 갖는 속성을 쉽게 이해할 수 있을 것이다.
위의 Employee와 Programmer의 예시에서 Employee라는 개체는 Programmer라는 개체의 generalization이고, Programmer라는 개체는 Employee라는 개체의 specialization에 해당한다. 또한, 모든 Programmer 개체는 Employee 개체이다 (ISA hierarchy).
'데이터베이스' 카테고리의 다른 글
[관계형 데이터베이스] - ER 다이어그램 (Entity-Relationship Diagram) (0) | 2016.12.10 |
---|---|
[관계형 데이터베이스] - 데이터베이스 정규화 (Database Normalization) (1) | 2016.12.09 |
[관계형 데이터베이스] - 함수 종속성 (Functional Dependency) (1) | 2016.11.13 |
[관계형 데이터베이스] - 데이터베이스와 뷰 (1) | 2016.11.13 |
[관계형 데이터베이스] - 무결성 (Integrity) (1) | 2016.11.13 |