더보기
- 정규화와 이상현상
- 함수 종속성
- 기본 정규형
데이터베이스 설계(database design)
| 대량의 데이터를 데이터베이스 안에 어떻게 조직하여 구성하느냐는 중요한 문제 현실 세계를 정확하고 자연스럽게 반영할 수 있도록 데이터베이스의 논리적 구조를 결정 전체 데이터베이스에 대한 통합된 하나의 스키마(schema)를 정의 |
이상 현상
| 잘못된 스키마 정의는 원하지 않는 여러 이상 현상을 발생시킴 SELECT문으로 검색할 경우는 아무런 이상 현상이 발생하지 않음 INSERT, UPDATE, DELETE문으로 데이터를 변경할 때는 3가지 이상 현상이 발생 |
정규화
| 잘못된 스키마 정의를 바로 잡는 데이터베이스 설계 방법 * 기말 : 정규화 & 이상현상 중요 |
이상 현상
| 1) 삽입 이상(insertion anomaly) |
|
| 2) 갱신 이상(update anomaly) |
|
| 3) 삭제 이상(deletion anomaly) |
|
정규화의 개념
| 이상현상 발생 원인 |
| 속성 사이의 많은 연관 관계를 무리하게 하나의 릴레이션으로 표현할 때 발생 이를 방지하려면 속성 사이의 연관 관계 즉, 종속성(dependency)을 분석하여 하나의 릴레이션에는 하나의 종속성만 표현되도록 릴레이션을 분해하면 됨 기본적으로 연관성이 높은 속성들을 하나의 릴레이션으로 구성하는 것이 바람직 |
| 정규화(normalization) |
| 데이터 이상 방지를 위해 중복을 감소시키는 구조로 단계적 규칙에 따라 릴레이션을 분 해하는 과정 잘못된 설계를 바로 잡는 과정 정규화 과정에서 이상 문제를 해결하려면 연관성이 높은 속성들로만 릴레이션을 구성해야 함 릴레이션 속성 사이의 연관성을 평가하기 위한 척도가 필요 -> 함수 종속성 |
함수 종속성
|
| 어떤 속성2의 값이 다른 속성1의 값에 의해 결정되는 함수 종속 관계 속성1은 속성2를 결정하는 결정자(determinant), 속성2는 속성1에 종속된 종속자 (dependent ![]() |
함수 종속 다이아그램(FD diagram
|
학생_1’ 릴레이션의 모든 함수 종속성을 함수 종속 다이아그램으로 표현![]() |
완전 함수 종속과 부분 함수 종속성
완전 함수 종속 |
| 특정 속성이 결정자인 둘 이상의 전체 속성 조합에는 함수 종속이면서 결정자의 어떤 일 부 속성에도 함수 종속이 아닐 때 |
|
부분 함수 종속 |
| 특정 속성이 결정자인 둘 이상의 전체 속성 조합에도 함수 종속이면서 결정자의 일부 속 성에도 함수 종속일 때 |
![]() |
기본 정규형
정규형(NF:normal Form)
- 정규화 과정에서 릴레이션이 만족해야 하는 특정한 함수 종속성의 충족 조건 특정 정규형이 요구하는 충족 조건을 릴레이션이 만족하면 해당 수준의 정규형을 충 족함을 의미함
- 제3정규형제3 정규형 이상의 정규형을 충족하면 충분한 정규화가 이루어졌다고 봄 보통 제3 정규형 또는 보이스 코드 정규형까지만 정규화를 진행

제1 정규형 |
|
제2 정규형 |
![]()
|
![]() |
문제점 |
![]() 삽입 이상 : 과목개설학과인 ‘통계’학과의 학과장이 ‘홍장미’라는 사실만 따로 삽입할 수가 없음 수정 이상 : 컴퓨터학과의 학과장이 ‘박유찬’에서 ‘홍길동’으로 변경될 경우, 여전히 과목개설학과 ‘컴퓨터’인 모든 투플을 찾아 ‘학과장’ 속성 값을 한꺼번에 ‘홍길동’으로 변경해야 함 삭제 이상 : 과목번호 ‘c002’의 등록을 취소하여 이 투플을 삭제하면 ‘경영’학과의 학과장이 ‘김철 수’라는 원하지 않은 정보까지 함께 삭제됨 |
문제점 해결 |
제2정규형을 충족하는 ‘과목_1’ 릴레이션에 삽입,수정,삭제 이상이 발생하는 이유
![]() |
제3 정규형 |
![]()
|
![]() |
문제점 |
![]() 삽입 이상 : 과목번호 'c004'의 강의담당교수가 'p005'이라는 사실만 따로 삽입할 수는 없음 수정 이상 : 강의담당교수 ‘p001’의 담당 과목번호가 ‘c005’로 변경될 경우, ‘p001’과 관련된 모 든 투플을 찾아 ‘과목번호’ 속성 값을 한꺼번에 ‘c005’로 변경해야 함 삭제 이상 : 학번 ‘s002’인 학생이 교과번호 ‘c002’의 수강을 취소하여 이 투플을 삭제하면 ‘p002’ 교수가 ‘c002’ 과목을 강의한다는 정보까지 함께 삭제됨 |
| ‘수강_4’ 릴레이션에 삽입, 수정, 삭제 이상이 발생 원인: 기본키가 아닌 속성이 기본키 일부 속성의 결정자가 되기 때문 릴레이션의 후보키가 둘 이상이고 기본키가 둘 이상의 속성 조합일 때 발생 해결방법 : 기본키가 아닌 결정자를 분리하여 2개의 릴레이션으로 분해 ![]() |
보이스 코드 정규형 |
![]() |
| 제3정규형이더라도 기본키 속성이 기본키 속성이 아닌 일반 속성에 종속적일 때 보이스 코드 정규형에 위배됨 모든 결정자를 후보키로 만듦 → 기본키가 아니면서 결정자 역할을 하는 속성과 그 결정자에 함수 종속되는 속성을 하나의 릴레이션으로 분리 (결정자는 원 릴레이션에도 남김 = 외래키 역할을 하도록 함) ![]() |
정규화 |
릴레이션을 정보 표현 측면에서 동등하면서도 중복을 감소시키는 더욱 작은 릴레이션들 로 무손실 분해함으로써 이상 현상을 제거하는 데이터베이스 설계의 한 방법![]() |
반정규화 |
정규화의 반대 개념, ‘역정규화’
|
높은 정규형을 만족하는 릴레이션 스키마가 반드시 최적이라고 할 수는 없음
|
반정규화는 다음 과정을 포함 -릴레이션들을 병합
|
| 반정규화는 데이터베이스 설계의 최종 단계에서 신중하게 고려 |
'2022 > DB 데이터베이스' 카테고리의 다른 글
| [DB] 221201 실습 (0) | 2022.12.04 |
|---|---|
| [DB] E-R 모델 (0) | 2022.11.24 |
| 0) [DB] SQL 응용 3 - 트랜잭션 (0) | 2022.11.03 |
| [DB]SQL응용 2 (트리거, 사용자 정의 함수) (0) | 2022.11.03 |
| [DB] SQL 응용 1 (내장 함수 | 저장 프로시저) (0) | 2022.11.03 |















