/////
Search
📝

5월29일(수)

데이터베이스 설계 : ERR Diagram , Relational Database Model , Normalization

EER 모델

Entity Relation Model
Entity : 시스템에 요구되는 기본적인 객체 Relation : 객체들 사이의 연관성
시험에서 주는 내용을 토대로 알맞게 모델을 그려내셔야 합니다. 이 내용을 바탕으로 밑에 과정들은 한 번 해보시면 좋을 것 같습니다

관계형 모델

관계형 데이터베이스 모델

관계형 데이터베이스는, 테이블을 활용해 표현
각 테이블은, Relation : 여러 속성(attribute)들의 모임으로 정의, 테이블 열(column) 머리 부분에 표시 테이블의 각 행은, Tuple : 연관된 데이터 값들의 모임, 실세계의 엔티티나 관계를 나타냄

매핑(1단계)

관계는 우선 생각하지말고, 각 엔티티들의 데이터 타입부터 생각해줍니다.

매핑(2단계)

두 엔티티 타입이 binary(이차) 관계 타입으로, 일대일 대응 관계를 가지면, 이 관계 타입은 두 엔티티 타입 중 하나에 포함될 수 있음 (만약 참여 제약 조건이 필수인 엔티티 타입이 있으면, 필수인 엔티티 타입에 관계 타입을 포함시키는 것이 일반적!)
직원과 부서는 binary(이차) 관계.. 직원의 입장에선, 부서를 manage해도 되고, 안 해도 됩니다. 부서의 입장에선, 해당 부서를 누군가가 반드시 manage가 포함되어야합니다(Mandatory) → 매니지 테이블을 부서 테이블에 넣어준다.

매핑(3단계)

두 엔티티 사이의 관계가 1대N(1대다) 매핑의 경우, 일(1-side)로 참여하는 엔티티 타입의 테이블에 관계 타입을 묶어 표현
다수(N-side)로 참여하는 엔티티에, 일(1-side)로 참여하는 엔티티의 주 키를 외래키로 포함
교수는 지도시킬 학생이 없을 수도 있음. || 학생은 무조건 지도 교수가 필요함 교수가 1-side, 학생은 N-side → 학생 테이블에 교수 엔티티의 주 키를 외래키로 넣어줌

매핑(4단계)

두 엔티티 타입 사이에 이차 다 대 다(many to many) 관계가 있는 경우, 관계 타입을 위해 독립적인 테이블 S를 만든다. 관계 타입의 차수가 3차 이상인 경우 새로운 테이블 S를 만든다

매핑(5단계)

매핑(6단계) - 계층적 구조(선택1)

상위 클래스 테이블 만들기
상위 클래스에 해당하는 테이블 생성 → 상위 클래스에 주키를 포함한 모든 속성을 포함시키기

매핑(6단계) - 계층적 구조(선택2)

각 하위 클래스에 대해 테이블 만들기

매핑(6단계) - 계층적 구조(선택3)

하위 클래스를 모두 합하여 하나의 테이블로 만들기

매핑(6단계) - 계층적 구조(선택4)

하위 클래스를 모두 합하여 하나의 테이블로 만들기(중복시) (이정도로 세분화하진 않습니다. 복잡해서 잘 사용 안해요)

정규화(Normalization)

데이터의 중복성은 많은 문제를 야기 → 데이터의 불필요한 중복성을 줄이고, 정보의 검색이 용이하도록 테이블들을 정의하는 일 중요
데이터베이스에 있는 각 테이블에 필드와 속성을 배정하여 테이블을 설계하는 과정
단순하고 융통성 있는 중복 없는 데이터베이스 설계
3차 정규형이 목표

비정규형 설계

반복 그룹

단일 레코드 안에 여러번 출현하는 하나 이상의 필드

비정규형 설계

반복 그룹에 포함된 테이블의 설계

문제점

기본키(ORDER-NUM)만으론 어떤 제품을 구매했는지 알 수 없음

해결방법

1차 정규형(1NF: first normal form) 반복 그룹이 포함되어 있지 않은 테이블

비정규형을 1차 정규형으로 바꾸기 위하여 1. 반복그룹을 없애고 2. 테이블의 기본키를 확장하여 반복 그룹의 기본키를 포함(기본키와 반복 그룹 기본키 조합) → 조합키 생성
 1차 정규형의 문제점
부분 함수 종속성 문제” X → Y (X는 x1, x2의 조합 구성) 여기서 문제가 발생하는데, x1은 z에 영향을 주는 키고, x2가 q에 영향을 주는 키라고 할때, x1 or x2만 변경되어서 다른 곳에 의도치 않게 종속 문제를 주는 경우

2차 정규형(2NF)

1차 정규형이면서 기본 필드가 아닌, 모든 필드가 전체 기본 필드에 함수 종속되는 경우 즉, 1NF 테이블에 있는 필드가 조합 기본키에 있는 필드의 하나에만 종속되는 경우 (ORDER-DATE, PRODUCT-DESC)는 2NF가 아님
 2차 정규형의 문제점
“이행 함수 종속성” X→Y, Y→Z, X→Z 함수일때, X와 Y가 각각 별도로 Z에 영향을 줄 수 있음(서로 별도의 종속관계 → 의도치 않은 문제 발생 가능)

3차 정규형(3NF)

키 이외의 모든 필드가 키에만 종속되는 경우 → 기본키 이외의 다른 컬럼이 그외 다른 컬럼을 결정할 수 없도록 만들어주기

데이터베이스 설계하기

비정규형

1차 정규형

1차 정규형에선 다음과 같은 “문제점”들이 존재

2차 정규형

1차 정규형의 문제점들 해결해주기 위해 다음과 같이 테이블 설계
예제를 살펴봅시다

비정규형

테이블 생성

1차 정규형

유효한 key를 테이블에 생성

2차 정규형

이행 함수 종속성 문제

3차 정규형

이행 함수 종속성 문제 를 해결하기 위해, 교수 → 개설학과 & 과목 → 교수로 아예 테이블을 더 쪼갬