Overview of Database Design Process
다음은 데이터베이스 설계 과정을 단순화한 것이다. 크게 4가지로 나눌 수 있다.
- 요구사항 수집 및 분석
- 데이터 요구사항을 이해하고 기능적 요구사항 명시
- 개념 스키마(conceptual schema) 만들기
- 데이터 타입, 관계, 제약 조건 자세하게 설명
- 논리적 설계(데이터 모델 mapping)
- 개념 스키마를 구현 데이터 모델로 변환
- 물리적 설계(physical design)
- 데이터베이스 파일들에 대한 내부 저장 구조, 파일 구성, 인덱스, 접근 경로, 물리적 파라미터 등 명시
Methodologies for Conceptual Design
- Use of Design Tools in industry for designing and documenting large scale designs
- ER diagrams(Entity Relationship)
- EER diagram(Enhanced Entity Relationship diagrams
- UML Class Diagrmas(Unified Modeling Language)
- 개념적 데이터베이스 설계를 문서화하기 위해 업계에서 널리 사용
ER Model Concepts
ER 모델은 데이터를 엔티티, 관계, attribute로 기술한다.
- Entity and Attributes
- Entity
- 엔티티는 실세계에서 독립적으로 존재하는 실제로 존재하는 객체이거나 회사, 직업 등 개념적으로 존재하는 객체이다.
- 특정 엔티티는 각 attribute에 대한 값을 가진다.
- Attributes
- 각 엔티티를 설명하는 값.
- Entity
다음은 두 개의 엔티티(사원 e1과 회사 c1)와 attribute이다.
Types of Attributes
ER 모델에는 여러 가지 attribute 유형이 있다.
- Simple attributes
- 더이상 나눌수 없는 attribute를 말한다.
- Composite attributes
- 더 작은 구성 요소들로 나눌 수 있는 attribute
- Multi-valued attributes
- 한 attribute에 대해 여러 값을 가지는 attribute
위 그림을 예시로 설명하면 Address는 Street, City, State, Zip으로 나눌 수 있으므로 복합 어트리뷰트이고, Number, Street는 더이상 나눌 수 없으므로 단순 어트리뷰트이다.
multi-valued attribute는 예시를 들자면 자동차에 대한 Color attribute를 예시로 들 수 있다. 한 색깔을 가진 자동차는 단일값을 가지는 반면 두가지 색을 띤 자동차는 두 개의 값을 가지게 된다.
Entity Types and Key Attributes
- Entity type
- 동일한 attributes를 갖는 엔티티들의 집함.
- entity type은 ER 다이어그램에서 ractanguar box로 보여진다.
- Key attribute
- 엔티티 타입은 엔티티 집합 내에서 각 엔티티마다 서로 다른 값을 가지는 한 개 이상의 attribute를 가진다. 이러한 attribute를 key attribute라고 한다.
- 만약 COMPANY 엔티티 타입에서 회사마다 다른 이름을 가진다면 Name attribute가 키가 된다.
- 전형적인 예 : SSN(Social Security Number) -주민등록번호
- ER 다이어그램에서 각 키 attribute는 이름에 밑줄을 그어 표시한다.
두 개 이상의 key attribute를 가지는 엔티티 타입도 있다.
엔티티 타입 CAR에서 Vehicle_id와 Registration attribute는 각각 key이다.
Registration attribute는 두 개의 단순 attribute인 RegistrationNumber와 State로 구성된 복합키이며, 각 구성 attribute는 독자적으로는 키가 될 수 없다.
NOTATION for ER diagrams
Initial Conceptual Design of Entity Types for the COMPANY Database Schema
Relationships
- A relationship
- 어떤 엔티티 타입의 한 attribute가 다른 엔티티 아빙르 참조할 때, 두 엔티티 간에는 관계가 성립된다.
- Relationship type
- 관계 타입은 엔티티 타입들에 속하는 엔티티들 간의 연관(association)들의 집합으로 정의한다.
- ER 다이어그램에서, 관계 타입은 다이아몬드 타입으로 나타내며 관계 타입에 참여하는 엔티티 타입으로 표현하는 사각형들과 직선으로 연결된다.
The degree of a relationship type
- 관계 타입의 차수(degree)는 참여하고 있는 엔티티 타입들의 개수이다.
- 아래 그림에서 WORKS_FOR 관계 타입의 degree는 2이다.
Constraints on Relationship Types
- 카디널리티 비율 (maximum participate 지정)
각 엔티티가 참여할 수 있는 관계 인스턴스의 최소 수를 명시- 1:1 (one-to-one)
- 1:N or N:1 (one-to-many or many-to-one)
- M:N (Many-to-many)
- 존재 종속성 (existence dependency)
- 사원 엔티티들의 전체집합에 속하는 모든 엔티티들이 반드시 WORKS_FOR에 의해서 한 부서 엔티티와 연관되어야 한다는 것을 의미한다.
- ER diagram에서 전체 참여(존재 종속성)는 참여하고 있는 엔티티 타입을 관계에 이중선으로 연결하여 나타내고, 부분 참여는 단일선으로 연결하여 나타낸다.
예시) EMPLOYEE 엔티티 타입과 DEPARTMENT 엔티티 타입 간의 관계 타입 WORKS_FOR
Many-to-one (N:1) Relationship
WORKS_FOR 내의 각 관계 인스턴스는 하나의 사원 엔티티와 하나의 부서 엔티티를 연관시킨다. 각 관계 인스턴스 ri는 ri에 참여하는 사원 엔티티와 부서 엔티티에 연결되어 있다.
Many-to-many (M:N) Relationship
관계 집합 WORKS_ON은 하나의 EMPLOYEE 엔티티와 하나의 PROJECT 엔티티와 연관이 있다.
예를 들면 한 사원이 여러 개의 PROJECT에 참여할 수 있거나, 여러 사원이 한 PROJECT에 참여할 경우 M:N으로 나타낼 수 있다.
Recursive Relationship Type
- 같은 엔티티 타입에 참여하는 관계 타입은 관계 내에서 특정한 역할을 담당한다. (example : SUPERVISION relationship)
- SUPERVISION 관계 타입은 사원과 상사를 연관시킨다.
- 여기서 사원 엔티티와 상사 엔티티는 같은 EMPLOYEE 엔티티 집합의 원소들이다.
- 그러므로 EMPLOYEE 타입은 SUPERVISION 관계 타입에 두 번 참여한다.(한번은 상사의 역할, 한번은 부하의 역할)
ER DIAGRAM
Weak Entity Types
- 약한 엔티티 타입(weak entity types)
- 자신의 키 attribute가 없는 엔티티 타입
- 반면 키 attribute를 가지는 정규 엔티티 타입을 강한 엔티티 타입이라고 한다.
- 약한 엔티티 타입의 엔티티들은 그들의 attribute 값들 중 하나를 통해 다른 엔티티 타입의 엔티티들과 연계됨으로써 식별할 수 있다. 이런 역할을 담당하는 다른 엔티티 타입을 식별 엔티티 타입이라고 한다.
ER 다이어그램의 또 다른 표기법(Alternative (min,max) notation)
구조적 제약 조건(관계차수 1:1, 1:N, N:M과 단일선과 이중선)을 대체하는 대안 표기법을 소개한다.
관계 타입 R에서 엔티티 타입 E의 참여마다 정수의 쌍(min,max)을 연계시키는 방법이다.
- 이 정수의 쌍은 E의 각 엔티티 e에 대하여 e는 항상 min과 max 사이의 관계 인스턴스 수만큼 참여해야 한다는 것을 나타낸다.
- min이 0이면 부분 참여를 의미하고 min이 0보다 크면 전체 참여를 의미한다.
- 관리자에 직원을 참여시키려면 (0,1)
- 관리자의 부서 참여를 (1,1)
직원은 정확히 한 부서에서만 근무할 수 있지만 한 부서에 여러 명의 직원이 있을 수 있다.
- WORKS_FOR에 직원을 참여시키려면 (1,1)
- WORKS_FOR에 부서를 참여시키려면 (1,N)
ER diagram(The (min,max) notation for relationship constraints)
'데이터베이스' 카테고리의 다른 글
More SQL (0) | 2024.04.22 |
---|---|
Basic SQL (0) | 2024.04.16 |
The Relational Data Model (0) | 2024.04.15 |
Database System Concepts and Architecture (0) | 2024.04.08 |
Databases and Database Users (0) | 2024.04.07 |