데이터베이스 설계 단계
- 데이터베이스 설계: 사용자의 다양한 요구 사항을 고려하여 데이터베이스를 생성하는 과정
- 관계 데이터베이스의 대표적인 설계 방법
- E-R 모델과 릴레이션 변환 규칙을 이용한 설계
- 정규화를 이용한 설계 (9장)
개념적 설계- DBMS에 독립적, 논리적 설계- DBMS에 적합. 단계와 결과물이 핵심
요구 사항 분석
- 설계 1단계: 요구 사항 분석
- 목적: 사용자의 요구 사항을 수집하고 분석하여 개발할 데이터베이스의 용도를 파악
- 결과물: 요구 사항 명세서
- 주요 작업
- 데이터베이스를 실제로 사용할 주요 사용자의 범위를 결정
- 사용자가 조직에서 수행하는 업무를 분석
- 면담, 설문 조사, 업무 관련 문서 분석 등의 방법을 이용해 요구 사항 수집
- 수집된 요구 사항에 대한 분석 결과를 요구 사항 명세서로 작성
개념적 설계
- 목적
- DBMS에 독립적인 개념적 스키마 설계
- 요구 사항 분석 결과물을 개념적 데이터 모델을 이용해 개념적 구조로 표현
- 결과물: 개념적 스키마. 일반적으로는 E-R 다이어그램
- 주요 작업: 요구 사항 분석 결과를 기반으로 중요한 개체를 추출하고 개체 간의 관계를 결성하여 E-R 다이어그램으로 표현
(** 개체, 관계, 속성을 추출 - 작업 과정
- STEP 1) 개체 추출, 각 개체의 주요 속성과 키 속성 선별
- STEP 2) 개체 간의 관계 결정
- STEP 3) E-R 다이어그램으로 표현
- STEP 1) 개체와 속성 추출
- 개체: 저장할 만한 가치가 있는 중요 데이터를 가진 사람이나 사물 등
- 개체 추출 방법: 요구 사항 문장에서 업무와 관련이 깊은 의미 있는 명사 찾기 (업무와 관련이 적은 일반적이고 광범위한 의미의 명사는 제외. 너무 좁은 범위의 명사도 제외.)
- 찾아낸 명사를 개체와 속성으로 분류
- STEP 2) 관계 추출
- 관계: 개체 간의 의미 있는 연관성
- 관계 추출 방법: 요구 사항 문장에서 개체 간의 연관성을 의미 있게 표현한 동사 찾기 (의미가 같은 동사가 여러 개일 경우에는 대표 동사 하나만 선택)
- 찾아낸 관계에 대해 매핑 카디널리티(일대일, 일대다, 다대다)와 참여 특성(필수적 참여, 선택적 참여)을 결정
- STEP 3) E-R 다이어그램 작성
논리적 설계
- 설계 3단계: 논리적 설계
- 목적: DBMS에 적합한 논리적 스키마 설계. 개념적 스키마를 논리적 데이터 모델을 이용해 논리적 구조로 표현
- 결과물: 논리적 스키마. (릴레이션 스키마)
- 주요 작업: 개념적 설계 단계의 결과물인 E-R 다이어그램을 릴레이션 스키마로 변환
- E-R 다이어그램을 릴레이션을 스키마로 변환하는 규칙
- 규칙 1: 모든 개체는 릴레이션으로 변환한다.
- 규칙 2: 다대다(n:m) 관계는 릴레이션으로 변환한다.
- 규칙 3; 일대다(1:n) 관계는 외래키로 변환한다.
- 규칙 4: 일대일(1:1) 관계는 외래키로 변환한다.
- 규칙 5: 다중 값 속성은 릴레이션으로 변환한다.
- 변환 규칙을 순서대로 적용하되, 해당되지 않는 규칙은 제외함
- (규칙 1) 모든 개체는 릴레이션으로 변환한다
- E-R 다이어그램의 각 개체는 하나의 릴레이션으로 변환
- 개체의 이름 → 릴레이션의 이름
- 개체의 속성 → 릴레이션의 속성
- 개체의 키 속성 → 릴레이션의 기본키
- 개체의 속성이 복합 속성인 경우에는 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환
규칙1: 모든 개체는 릴레이션으로 변환한다. 복합 속성의 경우, 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환
- E-R 다이어그램의 각 개체는 하나의 릴레이션으로 변환
- (규칙 2) 다대다 관계는 릴레이션으로 변환한다
- E-R 다이어그램의 다대다 관계를 하나의 릴레이션으로 변환
- 관계의 이름 → 릴레이션의 이름
- 관계의 속성 → 릴레이션의 속성
- 관계에 참여하는 개체를 규칙 1에 따라 릴레이션으로 변환한 후 이 릴레이션의 기본키를 관계 릴레이션에 포함시켜 외래키로 지정하고, 외래키들을 조합하여 관계 릴레이션의 기본키로 지정
규칙2: 다대다 관계는 릴레이션으로 변환. 고객 릴레이션과 상품 릴레이션의 PK는 주문 릴레이션의 FK가 되고, 두 FK를 조합한 PK로 지정 (또는 주문번호 PK 지정)
- E-R 다이어그램의 다대다 관계를 하나의 릴레이션으로 변환
- (규칙 3) 일대다 관계는 외래키로 표현한다
- E-R 다이어그램의 일대다 관계는 외래키로만 표현
- (규칙 3-1) 일반적인 일대다 관계는 외래키로 표현한다.
- 일대다(1:n) 관계에서 1측 개체 릴레이션의 기본키를 n측 개체 릴레이션에 포함시켜 외래키로 지정
- 관계의 속성들도 n측 개체 릴레이션에 포함시킴
규칙3-1: 1측의 PK를 n측의 FK로 지정. 관계의 속성을 n측의 속성으로 지정
- (규칙 3-2) 약한 개체가 참여하는 일대다 관계는 외래키를 포함해서 기본키로 지정한다.
- 일대다(1:n) 관계에서 1측 개체 릴레이션의 기본키를 n측 개체 릴레이션에 포함시켜 외래키로 지정
- 관계의 속성들도 n측 개체 릴레이션에 포함시킴
- n측 개체 릴레이션은 외래키를 포함하여 기본키를 지정함
- 약한 개체는 강한 개체에 따라 존재 여부가 결정되므로 강한 개체의 기본키를 이용해 식별해야 함
규칙3-2: n측 개체 릴레이션은 FK를 포함하여 PK를 지정
- (규칙 3-1) 일반적인 일대다 관계는 외래키로 표현한다.
- E-R 다이어그램의 일대다 관계는 외래키로만 표현
- (규칙 4) 일대일 관계는 외래키로 표현한다
- E-R 다이어그램의 일대일 관계는 외래키로만 표현
- (규칙 4-1) 일반적인 일대일 관계는 외래키로만 표현
- 관계에 참여하는 개체 릴레이션들이 서로의 기본키를 주고받아 외래키로 지정
- 관계의 속성들도 모든 개체 릴레이션에 포함시킴
- 불필요한 데이터 중복이 발생할 수 있음
규칙4-1: 일반적인 일대일 관계는 외래키로만 표현
- (규칙 4-2) 필수적으로 참여하는 개체 릴레이션만 외래키를 받는다.
- 관계에 필수적으로 참여하는 개체 릴레이션에만 외래키를 포함시킴
- 관계의 속성들은 관계에 필수적으로 참여하는 개체 릴레이션에 포함시킴
규칙4-2: 필수적으로 참여하는 개체 릴레이션만 외래키와 관계의 속성을 받음
- (규칙 4-3) 모든 개체가 필수적으로 참여하면 릴레이션 하나로 합친다.
- 관계에 참여하는 개체 릴레이션들을 하나의 릴레이션으로 합쳐서 표현
- 관계의 이름을 릴레이션 이름으로 사용하고, 관계에 참여하는 두 개체의 속성들을 관계 릴레이션에 모두 포함시킴
- 두 개체의 키 속성을 조합하여 관계 릴레이션의 기본키로 지정
규칙4-3: 모든 개체가 필수적으로 참여하면 릴레이션 하나로 합침
- (규칙 4-1) 일반적인 일대일 관계는 외래키로만 표현
- E-R 다이어그램의 일대일 관계는 외래키로만 표현
- (규칙 5) 다중 값 속성은 릴레이션으로 변환한다.
- E-R 다이어그램의 다중 값 속성은 독립적인 릴레이션으로 변환
- 다중 값 속성과 함께 그 속성을 가지고 있던 개체 릴레이션의 기본키를 외래키로 가져와 새로운 릴레이션에 포함시킴
- 새로운 릴레이션의 기본키는 다중 값 속성과 외래키를 조합하여 지정
규칙5: 다중 값 속성은 릴레이션으로 변환
- E-R 다이어그램의 다중 값 속성은 독립적인 릴레이션으로 변환
- 기타 고려 사항
- 모든 관계를 독립적인 릴레이션으로 변환할 수 있다.
- 속성이 많은 관계는 유형에 상관없이 릴레이션으로 변환을 고려할 수 있음
속성이 많은 관계는 유형에 상관없이 릴레이션으로의 변환을 고려할 수 있음
- 속성이 많은 관계는 유형에 상관없이 릴레이션으로 변환을 고려할 수 있음
- 개체가 자기 자신과 관계를 맺는 순환 관계도 기본 규칙을 그대로 적용
개체가 자기 자신과 관계를 맺는 경우도 기본 규칙 적용
- 모든 관계를 독립적인 릴레이션으로 변환할 수 있다.
- 테이블 명세서 작성
- 릴레이션 스키마 변환 후 속성의 데이터 타입과 길이, 널 값 허용 여부, 기본값, 제약조건 등을 세부적으로 결정하고 문서화시킴
- 테이블 명세서: 릴레이션 스키마에 대한 설계 정보를 기술한 문서
테이블 명세서
물리적 설계와 구현
- 설계 4단계: 물리적 설계
- 하드웨어나 운영체제의 특성을 고려하여 필요한 인덱스 구조나 내부 저장 구조에 대한 물리적인 구조를 설계
- 설계 5단계: 구현
- SQL로 작성한 명령문을 DBMS에서 실행하여 데이터베이스를 실제로 생성
'데이터베이스' 카테고리의 다른 글
[데이터베이스론] 10장. 회복과 병행제어 (0) | 2024.06.07 |
---|---|
[데이터베이스론] 9장. 정규화 (0) | 2024.06.07 |
[데이터베이스론] 7장. SQL (0) | 2024.04.12 |
[데이터베이스론] 6장. 관계 데이터 연산 (0) | 2024.04.12 |
[데이터베이스론] 5장. 관계 데이터 모델 (0) | 2024.04.11 |