데이터베이스 설계
사용자의 다양한 요구 사항을 고려하여 데이터베이스를 생성하는 과정
관계 데이터베이스의 대표적인 설계 방법
E-R 모델과 릴레이션 변한 규칙을 이용한 설계
데이터베이스 설계 단계
1단계 : 요구 사항 분석
데이터베이스의 용도 파악
요구 사항 명세서 작성
2단계 : 개념적 설계
DBMS에 독립적인 개념적 구조 설계
개념적 스키마 ( E-R 다이어그램) 만들기
사람마다 각각 다르게 설계하는 단계이므로 어떻게 설계하느냐가 중요 !
3단계 : 논리적 설계
DBMS에 적합한 논리적 구조 설계
논리적 스키마 ( 릴레이션 스키마 ) 만들기
4단계 : 물리적 설계
DBMS로 구현 가능한 물리적 구조 설계
하드웨어나 운영체제의 특성을 고려하여 필요한 인덱스 구조나 내부 저장 구조 등에 대한 물리적인 구조를 설계
ex) 회원테이블에서 SELECT 할때 주로 하는 검색 연산을 보고 어느 속성에 인덱스를 만들어야 할지 결정하기
물리적 스키마 만들기
5단계 : 구현
SQL로 작성한 명령문을 DBMS에서 실행하여 데이터베이스를 실제로 생성
1단계 : 요구 사항 분석
목적
사용자의 요구 사항을 수집하고 분석하여 개발할 데이터베이스의 용도를 파악
업무에 필요한 데이터가 무엇인지, 그 데이터에 어떤 처리가 필요한지 등을 고려
주요 작업
- 데이터베이스를 실제로 사용할 주요 사용자 범위 결정
- 사용자가 조직에서 수행하는 업무 분석
- 면담, 설문조사, 업무 관련 문서 분석 등의 방법을 이용해 요구 사항 수집
- 수집된 요구 사항에 대한 분석 결과를 요구 사항 명세서로 작성
Ex) 인터넷으로 회원들에게 상품을 판매하는 마트의 데이터베이스 개발
2단계 : 개념적 설계
목적
DBMS에 독립적인 개념적 스키마(E-R 다이어그램) 설계
요구 사항 분석 결과물을 개념적 데이터 모델링을 통해 개념적 구조로 표현
주요 작업
요구 사항 분석 결과를 기반으로 중요한 개체를 추출하고 개체 간의 관계를 결정하여 E-R 다이어그램으로 표현
3단계 : 논리적 설계
목적
DBMS에 적합한 논리적 스키마(릴레이션 스키마) 설계
개념적 스키마를 논리적 데이터 모델링을 통해 논리적 구조로 표현
주요 작업
- E-R 다이어그램( 개념적 설계 단계의 결과물 ) → 릴레이션 스키마로 변환
- 릴레이션 스키마로 변환 후 속성의 데이터 타입, 길이, 널 값 허용 여부, 기본 값, 제약 조건 등을 세부적으로 결정하고 결과를 문서화시킴
E-R 다이어그램을 릴레이션 스키마로 변환하는 규칙
1. 모든 개체는 릴레이션으로 변환한다
기본 원칙
개체의 이름 → 릴레이션의 이름
개체의 속성 → 릴레이션의 속성
개체의 키 속성 → 릴레이션의 기본키
복합 속성
복합 속성 자체는 버린다
복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환
다중값 속성
다중값 속성을 독립적인 릴레이션으로 분할
외래키는 다른 릴레이션의 기본키이고 기본키는 외래키를 포함한다
※ 다중값 VS 약한개체
다중값 : 한 종류의 속성 값만 가짐 ex) 부하직원의 이름
약한 개체 : 여러 종류의 속성 값 가짐 ex) 부하직원의 이름 ,나이, mbti
2. 모든 관계는 릴레이션으로 변환한다
기본 원칙
관계의 이름 → 릴레이션의 이름
관계의 속성 + 외래키 (연관된 개체의 기본키) 속성 → 릴레이션의 속성
관계를 나타내는 릴레이션의 기본키 정의
- 다 대 다 관계 : 연관된 개체의 기본키 속성의 합집합
- 일 대 다 관계 : 다 개체의 기본키 속성
제조업체가 정해지면 레코드가 하나로 결정되지 않지만, 상품번호가 정해지면 해당되는 제조업체는 정해진다
→ 후보키는 최소성과 유일성을 가져야하므로 최소성을 위해 '다'쪽에 있던 기본키만 사용한다
- 일 대 일 관계 : 연관된 개체 중 하나의 기본키 속성
여자 번호만 주어져도 남자가 정해지고, 남자 번호만 주어져도 여자가 정해진다
→ 후보키는 최소성과 유일성을 가져야하므로 최소성을 위해 한쪽에 있는 기본키만 사용한다. 어느 쪽을 기본키로 두어도 상관없다
관계를 나타내는 릴레이션의 외래키 정의
연관된 개체의 기본키 속성
3. 존재 종속 관계의 특성을 릴레이션에 반영한다 ( 특수한 CASE )
약한 개체 타입의 변환
속성 → 강한 개체 타입의 기본키 추가
키 속성 → 강한 개체의 기본키 + 약한 개체의 부분키
대출상환 릴레이션은 양쪽 기본키를 가져오는데 대출번호는 중복되므로 하나만 써주어 대출번호, 상환번호가 기본키가 된다
4. 관계 릴레이션의 중복을 제거
관계 릴레이션 제거
중복 제거 후 관계 릴레이션은 다대다만 남고 일대다와 일대일은 모두 개체쪽으로 정보가 넘어간다
- 일 대 다 관계 : 관계의 모든 속성을 '다' 개체로 이동
상품 릴레이션과 공급 릴레이션의 기본키가 같으므로 두 릴레이션을 합칠 수 있다
→ '다' 개체에 '일'개체의 기본키 속성 및 관계의 모든 속성을 추가할 수 있다
- 일 대 일 관계 : 관계의 모든 속성을 개체 중 하나 ( 기본키를 가져온 곳 ) 로 이동
남자 릴레이션과 결혼 릴레이션( Or 여자 릴레이션과 결혼 릴레이션 )의 기본키가 같으므로 두 릴레이션을 합칠 수 있다
→ 하나의 개체에 다른 개체의 기본키 속성 및 관계의 모든 속성을 추가
- 존재 종속 관계 ( 특수 CASE ) : 식별관계의 모든 속성을 약한 개체로 이동
대출상황 릴레이션과 상환 릴레이션의 기본키가 같으므로 두 릴레이션을 합칠 수 있다
→ '다'개체 ( 약한 개체 )에 '일'개체 ( 강한 개체 )의 기본키 속성 및 관계의 모든 속성을 추가
※ 기본 일대다 vs 존재 종속 관계인 일대다
기본 일대다 : 외래키가 기본키에 속하지 않는다
존재 종속 관계인 일대다 : 외래키가 기본키의 일부가 된다
논리적 설계 Ex )
중복 제거를 하면 주문 릴레이션만 남고 공급 질레이션은 상품 릴레이션 쪽으로 정보가 넘어가고, 작성 릴레이션은 게시글 릴레이션으로 정보가 넘어간다
릴레이션 스키마 변환 후 속성의 데이터 타입과 길이, 널 값 허용 여부, 기본값, 제약조건 등을 세부적으로 결정하고 문서화 시켜 테이블 명세서를 작성한다