데이터베이스 설계
사용자의 다양한 요구사항을 고려하여 데이터베이스를 생성하는 과정
E-R모델과 릴레이션 변환 규칙을 이용한 설계/정규화를 이용한 설계 로 구분 가능
01. E-R모델과 릴레이션 변환 규칙을 이용한 설계
1단계 : 요구사항 분석
목적 | 사용자의 요구사항을 수집하고 분석 -> 개발할 DB의 용도 파악 ex) 업무에 필요한 데이터가 무엇인지, 그 데이터에 어떤 처리가 필요한지 |
결과물 | 요구사항명세서 |
주요작업 | DB를 실제로 사용할 주요 사용자의 범위 결정 사용자가 조직에서 수행하는 업무 분석 면담, 설문조사, 업무 관련 문서 분석 등의 방법 이용해 요구사항 수집 -> 요구사항을 분석한 결과를 요구사항명세서로 작성 |
예시
2단계 : 개념적 설계
목적 | DBMS에 독립적인 개념적 스키마 설계 개념적 모델링 : E-R 모델을 이용해서 요구사항명세서를 개념적 구조로 표현 |
결과물 | 개념적 스키마(E-R 다이어그램) |
주요 작업 | 요구사항분석결과를 기반으로 step1. 중요한 개체와 속성 추출 step2. 개체간의 관계를 결정 step3. E-R 다이어그램으로 표현 |
step1. 개체와 속성 추출
개체 : 저장할만한 가치가 있는 중요 데이터를 가진 사람.사물
ex) 병원 DB 개발에 필요한 개체
병원 운영에 필요한 사람 : 환자, 의사, 간호사 등
병원 운영에 필요한 사물 : 병실, 수술실, 의료장비 등
개체 추출 방법 : 요구사항 문장에서 업무와 관련이 깊은 명사 찾기
- 업무와 관련이 적은 일반적이고 광범위한 의미의 명사는 제외
- 의미가 같은 명사가 여러개일 때는 대표 명사 하나만 선택
-> 찾아낸 명사를 개체와 속성으로 분류
예시
추출 결과
개체 : 회원
'회원' 개체의 속성 : 회원아이디, 비밀번호, 이름, 나이, 직업, 등급, 적립금
step2. 관계 추출
관계 : 개체 간 의미있는 연관성
관계 추출 방법
요구사항 문장에서 개체간 연관성을 의미있게 표현한 동사 찾기
- 의미가 같은 동사가 여러개일 경우 대표 동사 1개만 선택
찾아낸 관계에 대해 매핑 카디널리티와 참여 특성을 결정
* 매핑 카디널리티 : 일대일, 일대다, 다대다
* 참여 특성 : 필수적 참여, 선택적 참여
예시
step3. E-R 다이어그램으로 표현
3단계 : 논리적 설계
목적 | DBMS에 적합한 논리적 스키마 설계 논리적 모델링 : 개념적 스키마를 논리적 데이터 모델을 이용해 논리적 구조로 표현 일반적으로 관계 데이터 모델을 많이 이용 |
결과물 | 논리적 스키마(릴레이션 스키마) |
주요 작업 | 개념적 설계 단계의 결과물인 E-R 다이어그램을 릴레이션 스키마로 변환 (**변환규칙 기반) 릴레이션 스키마로 변환한 후 속성의 데이터타입, 길이, 널 값 허용 여부, 기본값, 제약조건 등을 세부적으로 결정하고 결과를 문서화 |
변환규칙
규칙을 순서대로 적용하되, 해당되지 않는 규칙은 제외
규칙1 : 모든 개체는 릴레이션으로 변환
규칙2 : 다대다 관계는 릴레이션으로 변환
규칙3 : 일대다 관계는 외래키로 표현
규칙4 : 일대일 관계는 외래키로 표현
규칙5 : 다중 값 속성은 릴레이션으로 변환
규칙1 : 모든 개체는 릴레이션으로 변환
개체 이름 -> 릴레이션 이름
개체 속성 -> 릴레이션 속성
개체 키 속성 -> 릴레이션의 기본 키
개체 속성이 복합 속성인 경우 : 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환
규칙2 : 다대다 관계는 릴레이션으로 변환
관계 이름 -> 릴레이션 이름
관계 속성 -> 릴레이션 속성
관계에 참여하는 개체를 규칙 1에 따라 릴레이션으로 변환
이 릴레이션의 기본키를 관계 릴레이션에 포함시켜 외래키로 지정
외래키들을 조합하여 릴레이션의 기본키로 지정
규칙3 : 일대다 관계는 외래키로 표현
3-1 : 일반적인 일대다 관계는 외래키로 표현
일대다 관계에서 1측 개체 릴레이션의 기본키를 n측 개체 릴레이션에 포함시켜 외래키로 지정
관계의 속성들도 n측 개체 릴레이션에 포함시킴
3-2 : 약한 개체가 참여하는 일대다 관계는 외래키를 포함하여 기본키로 지정
일대다 관계에서 1측 개체 릴레이션의 기본키를 n측 개체 릴레이션에 포함시켜 외래키로 지정
관계의 속성들도 n측 개체 릴레이션에 포함
n측 개체 릴레이션은 외래키를 포함하여 기본키 지정
약한 개체는 강한 개체에 따라 존재여부가 결정되므로, 강한 개체의 기본키를 이용해 식별해야 함
규칙4 : 일대일 관계는 외래키로 표현
4-1 : 일반적인 일대일 관계는 외래키를 서로 주고받음
- 관계에 참여하는 개체 릴레이션들이 서로의 기본키를 각각 외래키로 지정
- 관계의 속성들도 모든 개체 릴레이션에 포함
- 불필요한 데이터 중복이 발생할 수 있음
4-2 : 일대일 관계에 필수적으로 참여하는 개체의 릴레이션만 외래키를 받음
- 관계에 필수적으로 참여하는 개체 릴레이션만 외래키를 포함시킴
- 관계의 속성들은 관계에 필수적으로 참여하는 개체 릴레이션에 포함시킴
4-3 : 모든 개체가 일대일 관계에 필수적으로 참여하면 릴레이션 하나로 합침
- 관계에 참여하는 개체 릴레이션들을 하나의 릴레이션으로 합쳐서 표현
- 관계의 이름 = 릴레이션 이름, 관계에 참여하는 두 개체의 속성 -> 관계 릴레이션에 모두 포함시킴
- 두 개체 릴레이션의 키 속성을 조합 -> 릴레이션의 기본키로 지정
규칙 5: 다중 값 속성은 릴레이션으로 변환
E-R 다이어그램의 다중값 속성은 독립적인 릴레이션으로 변환
- 다중값속성고 함꼐 그 속성을 가지고 있던 개체 릴레이션의 기본키를 외래키로 가져와 새로운 릴레이션에 포함
- 새로운 릴레이션의 기본키는 다중값속성과 외래키를 조합하여 지정
다음과 같이 사원 릴레이션을 만들면 사원 릴레이션은 '속성에 다중값을 저장할 수 없다' 는 릴레이션 특성 위반
다음과 같이 사원 릴레이션을 만들면 릴레이션 특성을 위반하지는 않지만 사원번호, 사원명, 직위 속성의 값이 불필요하게 중복 저장되는 문제가 발생
결론 : 다중값속성을 독립적인 릴레이션으로 변환하면 불필요한 중복을 제거하면서도 릴레이션의 특성을 만족시킬 수 있음