0. 데이터베이스 설계
- 종류(2): 개념적 데이터베이스 설계, 물리적 데이터베이스 설계
- 개념적 데이터베이스 설계: 엔티티, 관계, 프로세스, 무결성 제약조건 등을 나타내는 추상화 모델 구축.
- 물리적 데이터베이스 설계: 물리적인 저장 장치, 접근 방식을 다룸.
- 엔티티: 조직체에서 데이터베이스에 나타내려는 객체.(사람, 장소, 사물 등)
- 관계: 두 개 이상의 엔티티들 간의 연관
- 프로세스: 관련된 활동 (?)
- 무결성 제약조건: 데이터의 정확성, 비즈니스 규칙을 의미.
1. 개념적 수준의 모델
: 특정 데이터 모델과 독립적으로 응용 세계를 모델링 할 수 있도록 함. 하향식 개발을 위한 틀을 제공.
→ 인기 개념적 수준의 모델: 엔티티-관계(Entity-Relationship) 모델
+ 구현 데이터 모델: 개념적 데이터 모델이 사상 될 수 있는 모델.
+ 구현 단계에서 사용하는 데이터 모델(3): 관계/계층/네트워크 데이터 모델
5-1 데이터베이스 설계의 개요
1. 데이터베이스 설계
- 정의: 한 조직체의 운영과 목적을 지원하기 위해 데이터베이스를 생성하는 과정.
- 목적: 사용자들이 요구하는 데이터, 데이터 간의 관계를 표현하는 것.
+ 좋은 설계?: 시간에 따른 모든 데이터 측면 표현, 데이터 중복 최소화, 효율적인 접근, 무결성 제공, 이해하기 쉬움
2. 단계(5+2)
- 요구사항 수집과 분석 - 엔티티, 애트리뷰트, 관계 등을 설문조사, 인터뷰를 통해 파악.
- 개념적 설계 - 데이터 모델을 기반으로 개념적 스키마를 만듦. 대표적으로 ER모델 사용. 엔티티 타입, 관계 타입, 애트리뷰트들을 식별하고, 도메인을 결정하고, 후보키와 기본키 애트리뷰트를 결정.
- (DBMS 선정 - 기술적, 정치적, 경제적 요인을 고려해 선정.)
- 논리적 설계 - 선정된 DBMS를 고려하여 ER 스키마(개념적 스키마)를 릴레이션(논리적 스키마)들로 사상.
- 정규화
- 물리적 설계 - 저장 구조, 접근 경로 결정.
- (트랜잭션 설계 - 데이터베이스에서 동작할 응용프로그램 설계. 독립적.)
5-2 ER 모델
1. ER 모델
: 개념적 설계를 위한 모델로, 대표적임. 요즘은 EER(Enhanced)모델이 널리 사용됨.
→ 실세계를 엔티티, 애트리뷰트, 관계로 표현 (+ 카디날리티 비율, 참여 제약조건 등)
2. 엔티티
: 사람, 장소, 사물 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체.
3. 엔티티 타입
- 하나의 엔티티는 한 개 이상의 엔티티 집합에 속할 수 있음.
- 엔티티 타입 - 관계 모델의 릴레이션의 "내포"
- 엔티티 집합 - 관계 모델의 릴레이션의 "외연"
- 엔티티 타입과 집합을 엄격히 구분할 필요는 없음.
- ER 다이어그램에서 엔티티 타입은 직사각형으로 나타냄.
- 강한 엔티티 타입: 자신의 키 애트리뷰트를 사용해 고유하게 엔티티들을 식별할 수 있는 엔티티 타입.
- 약한 엔티티 타입: 키를 형성하기 충분한 애트리뷰트들을 갖지 못한 엔티티 타입. 약한 엔티티 타입이 존재하려면 소유 엔티티 타입이 있어야 함.(식별을 가능케 해줌.)
4. 애트리뷰트
- 하나의 엔티티는 연관된 애트리뷰트들의 집합! (사원 - 이름, 직책,급여...)
- 여러 애트리뷰트가 동일한 도메인을 공유할 수 있음.
- 요구사항 명세에서 명사나 형용사로 표현됨.
- 엔티티와 달리독립적인 의미를 갖지 않음.
- ER 다이어그램에서 애트리 뷰트는 타원형으로 나타냄.
- ER 다이어그램에서 애트리뷰트와 엔티티 타입은 실선으로 연결.
- 애트리뷰트 종류(6)
▶ 단순 애트리뷰트: 더 이상 다른 애트리뷰트로 나눌 수 없는 애트리뷰트. 대부분 단순 애트리뷰트임.
▶ 복합 애트리뷰트: 두 개 이상의 애트리뷰트로 이루어진 애트리뷰트. 밀접하게 연관된 것을 모아놓은 것.
▶ 단일 값 애트리뷰트: 각 엔티티마다 딱 하나의 값을 갖는 애트리뷰트. 단순 애트리뷰트와 동일하게 표현.
▶ 다치 애트리뷰트: 각 엔티티마다 여러 개의 값을 가질 수 있는 애트리뷰트.
▶ 저장된 애트리뷰트: 다른 애트리뷰트와 독립적으로 존재하는 애트리뷰트. 단순 애트리뷰트와 동일하게 표현.
▶ 유도된 애트리뷰트: 다른 애트리뷰트의 값으로부터 얻어진 애트리뷰트.
- 예시
- Jumin, Name: 단순 애트리뷰트, 단일 값 애트리뷰트, 저장된 애트리뷰트.
- Age: Jumin으로부터 유도된 애트리뷰트, 단순 애트리뷰트, 단일 값 애트리뷰트.
- Empno: 단순 애트리뷰트, 단일 값 애트리뷰트, 저장된 애트리뷰트, 키 애트리뷰트.
- Address: 복합 애트리뷰트, 단일 값 애트리뷰트, 저장된 애트리뷰트.(?독립적이지 않지 않나)
- Hobby: 단순 애트리뷰트, 다치 애트리뷰트, 저장된 애트리뷰트
5. 약한 엔티티 타입
: 키를 형성하기 충분한 애트리뷰트들을 갖지 못한 엔티티 타입.
: ER 다이어그램에서 이중선 직사각형으로 표기.
→ 소유 엔티티 타입 or 식별 엔티티 타입: 약한 엔티티 타입에게 키 애트리뷰트를 제공하는 엔티티 타입.
(소유 엔티티 타입이 존재하지 않으면 약한 엔티티 타입은 존재하지 못함.)
→ 부분 키: 한 사원에 속한 부양가족 내에서는 서로 다르지만, 회사 전체 사원들의 부양가족들 전체에서는 같은 경우가 생길 수 있은 애트리뷰트. ER 다이어그램에서 점선으로 밑줄 그음.
6. 관계와 관계 타입
- 관계 타입: 동질의 관계들의 집합.
- 관계 집합: 동질의 관계들의 틀.
- ER 다이어그램에서 다이아몬드로 표기.
- 요구사항 명세에서 "동사"가 관계로 표현됨.
<<관계의 애트리뷰트>>: 관계의 특징을 기술하는 애트리뷰트. 관계 타입은 애트리뷰트를 갖지 않음
<<차수>>: 관계로 연결된 엔티티 타입들의 개수. 2진 관계가 가장 흔함.
<<카디날리티>>: 한 엔티티가 참여할수 있는 관계의 수.
+ 카디날리티 비율의 최소값과 최대
- min: 이 엔티티 타입 내의 각 엔티티는 적어도 min번 관계에 참여함.
- min=0은엔티티가 반드시 관계에 참여할 필요는 없음.
- max: 이 엔티티 타입 내의 각 엔티티는 최대 max번 관계에 참여함.
- max=*는 어떤 엔티티가 관계에 임의의 수만큼 참여할 수 있음을 의미.
car-sell (0,1): 차가 팔리거나, 안팔리거나
customer-sell (0, m): 차를 안사거나, 1대 사거나, 최대 m대 사거나
sell-salesper(0,n): 차를 못팔거나, 1대 팔거나, 최대 n대 팔거나
<<역할>>: 관계 타입의 의미를 명확하게 하기 위해 사용.
<<전체 참여와 부분 참여>>
- 부분참여: 일부 사원들만 부서의 관리자가 될수 있음
- 전체참여: 모든 부서 엔티티에 대해서 각 부서마다 반드시 1명의 관리자가 있어야함.
<<다중 관계>>: 두 엔티티 타입 사이에 두 개 이상의 관계 타입이 존재할 수 있음.
<<순환적 관계>>: 하나의 엔티티 타입이 동일한 관계 타입에 두 번 이상 참여하는 것.
7. ER 스키마를 작성하기 위한 지침
- 엔티티는 키 애트리뷰트 이외에 설명정보를 추가로 가짐.(추가로 갖지 않으면 애트리뷰트로 취급해야함!)
- 다치 애트리뷰트는 엔티티로 분류해야함.(관계DBMS를 사용해 구현하려면 엔티티로 분류해야함.)
- 애트리뷰트들이 직접적으로 설명하는 엔티티에 애트리뷰트들을 붙임.
- 가능한 한 복합 식별자를 피함.
- 관는 일반적으로 독자적으로 존재할 수 없지만 엔티티 타입과 관계 타입을 절대적으로 구분하는 것은 어려움.
8. 데이터베이스 설계 과정
- 응용 요구사항 수집.
- 엔티티 타입 식별.
- 관계 타입 식별. 관계의 카디날리티 비율 결정.
- 애트리뷰트 식별. 각 애트리뷰트가 가질 수 있는 집합 식별.
- 기본 키 식별.
- ER 스키마 다이어그램 그림.
- ER 스키마 다이어그램이 응용에 대한 요구사항과 부합되는지 검사.
- ER 스키마 다이어그램을 DBMS에서 사용되는 데이터베이스 모델로 변환.
9. ER 모델의 또 다른 표기법
'Computer Science > DataBase' 카테고리의 다른 글
[데이터베이스] 6장 물리적 데이터베이스 설계 (1) | 2023.11.26 |
---|---|
[데이터베이스] 5장 데이터베이스 설계와 ER모델 (2) (0) | 2023.11.26 |
[데이터베이스] 4장 관계 대수와 SQL (0) | 2023.11.03 |
[데이터베이스] 3장 오라클 (0) | 2023.11.02 |
[데이터베이스] 2장 관계 데이터 모델과 제약 조건 (0) | 2023.10.12 |