[Database System] Data Modeling Using the Entity-Relationship (ER) Model - 요구사항으로 ER 다이어그램 만들기, Entity Types, Entity Sets, Attributes, and Keys

2024. 9. 23. 08:00CS/Database System

데이터베이스를 설계할 때 테이블을 바로 만드는 것이 아니고, 테이블을 설계할 때부터 근거가 있어야 한다.

그 첫 단계가 바로 ER 다이어그램이다.

 

데이터베이스의 설계 과정은 다음과 같다.

  1. 인터뷰나 업무에 대한 문서를 보고 분석한다.
  2. 요구사항 수집
    • 이 단계에서 요구사항이 무슨 엔티티, 테이블이 필요하고 그런 형태가 아니라 학생들은 무슨 과목을 수강할 수 있어야 한다. 와 같은 방식이다.
    • 요구사항은 굉장히 일반적인 단어 예를 들어 학생, 필수 과목, 이런식으로 일반인들이 사용하는 일반적인 단어로 구성된다.
  3. 요구사항을 바탕으로 ER 다이어그램 모델링
  4. ER 다이어그램으로 테이블 구성
  5. 만들어진 테이블의 중복성을 제거하기 위해 normalization 수행
    • 정규화의 핵심은 테이블을 분리시켜서 중복성을 제거하는 것이다.
  6. 정규화된 테이블을 역정규화
    • 역정규화는 다시 일부 테이블을 원상복구시키는 것인데, 역정규화를 하는 이유는 속도를 보장하기 위해서이다.
    • 테이블이 다 분리되어서 JOIN이 너무 많으면 검색 속도가 느리기에 중복성을 어느 정도 감수하고 테이블을 붙이는 경우도 있다.

이번 챕터에서는 1~3의 내용만 다룬다.

중요한 것은 ER 다이어그램을 그릴 수 있어야 하고, 다이어그램을 보고 테이블을 만들 수 있어야 한다. 3 정규화 단계까지도 꼭 할 수 있어야 한다.

역정규화는 현업에서 많이 사용하고 학부생 수준에서는 요구되지 않는다.

1. Using High-Level Conceptual Data Models for Database Design

용어부터 짚고 넘어가자.

릴레이션 용어 같은 의미로 통용되는 용어 파일 시스템 용어
릴레이션(relation) 테이블 파일
스키마(schema) 내포(intension) 헤더
인스턴스(instance) 외연(extentsion) 데이터
튜플(tuple) 레코드
속성(attribute) 필드

 

 

수집한 요구사항은 일반적인 단어로 되어있다. 요구사항에서 테이블을 추출해야 한다.

예를 들어 생각해보자.

위의 요구사항을 보고 분석해 보면 다음과 같은 사실을 얻을 수 있다.

  • 데이터베이스는 직원들의 주민번호, 주소, 급여, 성별, 생년월일을 저장해야 한다.
    • 각 직원은 한 부서 혹은 여러 부서에서 일을 할 수 있다.
    • DB는 직원이 각 프로젝트에서 한 주에 몇 시간 일을 했는지 track 해야 한다.
    • 각 직원의 supervisor가 있는데, supervisor도 track 할 수 있어야 한다.
  • 각 직원은 부양가족을 가지고 있다.
    • 각 부양가족에 대한 이름, 성별, 생년월일, 직원과의 관계를 저장해야 한다.

요구사항만 보고서는 데이터베이스 설계를 위해 어떤 엔티티나 테이블이 필요한지 가시적으로 알 수 없다. 따라서 ER 다이어그램을 그려야 하고, 위의 요구사항을 그려보면 아래와 같다.


2. Entity Types, Entity Sets, Attributes, and Keys - ER Model

Entities and Attributes

  • Entity는 ER 모델의 기본 개념으로 mini-world의 개체를 의미한다.
    • 예를 들어 학생 A, 학생 B는 각각 하나의 엔티티가 된다.
  • Attributes는 엔티티를 설명하기 위해 부여하는 속성으로 값을 갖는다.
    • 학생의 이름, 성별, 학번 등 엔티티를 설명하기 위해 부여하는 것이 Attribute가 된다.
    • 각 속성은 아무 값이나 갖는 것이 아니라 BirthDate는 09-JAN-55와 같은 날짜 형식이 되어야 하는 것처럼 data type이 정해져야 한다.

Types of Attributes

Simple

  • atomic value, 즉 더 이상 분리가 되지 않는 값이다.
  • 예를 들어 SSN, Sex 등이 된다.

Composite

  • 몇 개의 컴포넌트로 구성되어 있는 값이다.
  • 예를 들어 Address는 Street, City, State, Zip으로 구성되어 있다.

Multi-valued

  • two tone car를 생각해 보면 color 속성이 balck, white 두 개의 값을 가져야 한다.

ER 다이어그램에서는 Composite, Multi-value를 허용하지만 실제로 잘 사용되지는 않는다. 실제 테이블로 구성하게 되면 두 타입은 모두 허용되지 않기 때문이다. 나중에 정규화 과정에서 이런 타입들은 다 걸러지게 된다.

예를 들어 아래의 테이블을 생각해 보자.

name  phone  previous major
A 010-1111 CS
A 010-1111 economy

Multi value를 허용한 값이기 때문에 위의 테이블처럼 구성된다.

만약 학생의 전화번호가 바뀌면 엔티티 두 개의 전화번호를 바꿔줘야 한다. 이는 일관성 문제의 위험성을 안고 있다. 둘 중 하나만 바뀐다면 일관성이 깨지게 되고 데이터 중복이 발생했기에 이런 문제가 생긴다.

그래서 나중에 테이블을 만들 때 composite, multi-valued 타입은 다 걸러지지만 ER 다이어그램에서만 허용되는 것이다.

 

Entity Types and Key Attributes

entity를 모아놓은 것에 대해 이름을 부여할 수 있는데 그게 Entity type이다.

즉, entity를 모아놓은 집합에 대해 EMPLOYEE, COMPANY와 같이 이름을 붙일 수 있다.

같은 속성을 갖는(값이 같다는 게 아님) entity 집합이 entity set이 되고 집합에 대한 이름이 entity type name이 된다.

EMPLOYEE라 하면 Entity Type Name, ENtity Set 둘 다를 의미한다.

 

unique 한 속성은 엔티티 간의 구별이 가능하므로 entity의 key가 될 수 있다.

  • key attribute는 composite가 될 수 있다. 이름 + 학과가 unique 하다면 이름 + 학과를 key로 설정할 수 있는 것이다.
    • 예를 들어 미국의 자동차 번호는 (Number, State)로 구성된다. 이 두 값을 조합해서 차량을 unique 하게 구분할 수 있다.
  • ER 다이어그램에서 각각의 key는 underline을 긋는다. 실제 ralational schema에서 테이블로 만들 때는 primary key 하나만 underline을 긋지만 ER 다이어그램에서는 모든 key에 underline을 긋는다.

위의 ER 다이어그램에서 Registration이 composite key, Vechicle_id는 key, Color은 multi-valued를 의미한다.

 

위의 다이어그램에서 실제 들어가는 entity는 다음과 같다.

ER다이어그램에서 entity라 부르는 것이 relational data model에서는 tuple이 되고, 실제 table에서 구현하면 record가 된다.

 

Entity Set

  • 각 entity type은 entities의 집합을 가진다. 이를 entity set이라 부른다.
  • entity type name은 entity type, entity set 둘 다를 지칭한다.

  • 그 둘을 구별하고 싶다면 다른 이름을 줄 수 있다.
  • Entity set은 엔티티의 현재 상태이다. 인스턴스가 변경될 수 있는 것처럼 확장 가능하다는 의미에서 extension이라 불린다.

Value Sets of Attributes

  • 각 simple 속성은 value set(domain)과 연관되어 있다. domain은 값이 가질 수 있는 한계를 의미하는데 예를 들어 last name은 15자 이하, 날짜라면 MM-DD-YYYY 형태 이런 게 다 domain이다.
  • value set은 domain of values를 의미한다.

Displaying an Entity type

entitty type은 사각형 box로 그린다. 속성은 타원형으로 그린다.

  • 각 속성은 entity type으로 연결된다.
  • composite 속성의 컴포넌트는 타원으로 그리고 composite 속성과 연결한다.
  • 각 key 속성은 underlined 된다.
  • multivalued 속성은 double 타원으로 그린다.

Initial Conceptual Design of Entity Types for the COMPANY Database Schema

  • 요구사항에 근거해서 initial entity type을 식별할 수 있다.
    • DEPARTMENT
    • PROJECT
    • EMPLOYEE
    • DEPENDENT
  • initial attributes는 요구사항 설명에서 보인다. 예를 들어 EMPLOYEE는 뭐가 필요하고, 뭐가 필요하고 등이다.

요구사항을 보고 위의 ER 다이어그램을 그릴 수 있어야 한다. 요구사항을 보고 뭐가 key가 될 수 있는지, 뭐가 composite, multi-valued인지 잘 구분해 보자.

여기까지만 그리고 테이블을 만들어서는 안 된다. ER 다이어그램은 아직 끝이 아니다. Relationship에 대한 이야기가 빠져있다.