1. 데이터베이스 설계 과정 2. 개체-관계(ER) 모델의 개념 3. ERD의 다양한 표현 방법 4. 고차원 관계 5. 예제 UNIVERSITY 데이터베이스
1. 데이터베이스 설계 과정
📌 과정
요구 사항 분석
개념적 설계 (DBMS 종속 전)
논리적 설계 (DBMS 종속)
물리적 설계 (DBMS 종속)
📌 개념적 설계
특정 체계의 정보 요구사항을 구성하는 개체와 관계, 그리고 속성들을 파악하는 과정
ER(Entity Relationship) Diagram : 파악한 정보를 도형화/명세화한 것
필요성
데이터 독립성 제공을 위한 안정된 자료 구조 창출
특정 DBMS, H/W, S/W에 독립적
특정 DBMS에 적합한 데이터 모델로 변환하기 용이하다. (이전하기도 좋다.)
ER Model과 관련 명세서를 통한 산출물로 이해도 증진
📌 논리적 설계
개념적 스키마 (ER 모델) → DBMS 논리적 스키마로 변환
개념적 설계: 스키마의 표현력과 완전성을 추구
논리적 설계: 논리적 모델이 제공하는 자료 구조와 제약사항을 효율적으로 이용\
논리적 설계 접근 방향
ER Diagram을 그린다
단순한 ER Diagram으로 변환한다.
DBMS의 논리적 모델로 변형
📌 물리적 설계
논리적 스키마 → 효율적인 물리적 데이터 베이스로 구성
구조
저장 레코드 형식
저장 순서
접근 경로
물리적 저장 장치의 할당 등
참고 사항
물리적 DB 구조는 세부적인 성능에 영향을 준다.
물리적 설계 단계에서 고려할 사항들 대부분은 특정 DBMS에 의해 해결된다.
DBA만이 물리적 DB 구조의 구성에 관여할 수 잇다.
📌 예제
아래부터는 다음 예제를 활용하여 설명을 한다.
회사의 사원, 부서, 프로젝트를 관리하는 DB
회사는 여러 개의 부서(department)로 구성
각 부서는 이름과 번호, 그리고 한 명의 부서장을 가진다.
부서장이 취임한 날짜를 저장해야 한다.
각 부서는 여러 개의 지점들을 갖는다.
각 부서는 여러 개의 프로젝트(project)를 수행
프로젝트마다 이름, 번호, 그리고 위치를 하나씩 갖는다.
사원(employee)의 이름, 주민번호, 주소, 연봉, 성별, 생일 정보를 유지
각 사원은 한 부서에 근무, 여러 개의 프로젝트에 참여
사원이 각 프로젝트에서 수행한 주당 업무 시간을 저장한다.
각 사원의 직속 상관도 유지해야 한다.
사원마다 여러 명의 부양가족(dependent)이 존재한다.
각 부양가족에 대해 이름, 성별, 생일, 사원과의 관계 등을 저장한다.
2. 개체-관계(ER) 모델의 개념
• Entities and Attributes • Entity Types, Value Sets, and Key Attributes • Relationships and Relationship Types • Weak Entity Types • COMPANY Schema에 대한 ERD
📌 Entities and Attributes
Entity: DB에서 표현해야 하는 핵심적인 사물혹은 개념
Attribute: Entity를 표현하기 위해 사용하는 속성
특정 개체는 각 속성에 대해 값을 가질 수 있다.
값이 없는 속성도 있을 수 있다. (NULL 속성)
각 속성은 value set (또는 data type, domain)을 갖는다.
🟡 속성의 분류
단순/복합 속성
단순 속성: 더 이상의 작은 요소로 분할할 수 없는 값 (ex. 주민번호, 성별)
복합 속성: 몇 개의 더 작은 속성들로 분할 가능한 속성
다만, ER 모델은 최대한 충실하게 현실을 반영하는 것이 초점을 둔다. 복합키를 반영할 지는 논리적 설계 단계에서 고려한다.
단일 값/다중 값 속성
단일 값 속성: 하나의 값만 가질 경우
다중 값 속성: 여러 개의 값을 가질 경우 (ex. 취미)
복합-다중 값 속성의 혼합도 가능 (ex. 학생의 이전 학위(대학, 연도, 학위명, 분야))
NULL 속성
값이 입력되지 않은 속성
유도 속성
다른 속성의 값을 이용하여 유도할 수 있는 속성 (ex. 나이는 주민등록번호나 생일로 유도 가능한 정보)