2023. 4. 18. 00:36ㆍDataBase/DB 문제풀이
[DataBase System] ch07 - 데이터 종속성과 정규화
책정보, 데이터베이스 시스템 : 네이버 책 (naver.com)
데이타베이스 시스템 : 네이버 도서
네이버 도서 상세정보를 제공합니다.
search.shopping.naver.com
문제풀이
1 ) 관계 데이터베이스 설계와 바람직하지 않은 변경 이상과의 관계를 예를 들어 설명하라
설계의 불완전은 데이터의 중복과 같은 문제가 발생할 수 있다. 그에 따라 릴레이션에 존재하는 데이터 값을 변경하려고 하면 이상이라는 현상이 발생할 수 있다.
- 삭제 이상 : 데이터 값을 변경하려고 하려고 하나의 투플을 삭제할 때 유지를 해야 하는 정보도 같이 연쇄삭제가 되는 현상이다.
- 삽입 이상 : 어떤 데이터를 삽입하려고 할 때 불필요하고 원하지않은 데이터를 함께 삽입해야 하는 경우이다.
- 갱신 이상 : 중복된 튜플들 중에서 일부 튜플의 애트리뷰트 값만 갱신시키면서 생기는 정보의 모순성을 의미한다.
2 ) 직원(직원번호, 직원이름, 봉급, 과장, 과이름) 릴레이션이 있을 때 다음 물음에 대해 답하라. 단 직원은 한 과에 속하고 각 과에는 한 사람의 과장이 있다.
-데이터 정규형
데이터 정규형은 관계형 데이터베이스 설계에서 릴레이션의 구조를 평가하는 기준입니다. 데이터 정규화는 릴레이션을 분해하여 중복성을 제거하고 변경 이상을 방지하는 과정입니다. 정규화의 목적은 데이터베이스의 일관성과 무결성을 유지하는 것입니다.
데이터 정규형에는 여러 단계가 있습니다. 각 단계는 이전 단계의 조건을 만족하면서 추가적인 조건을 만족해야 합니다. 일반적으로 사용되는 데이터 정규형에는 제1 정규형(1NF), 제2 정규형(2NF), 제3 정규형(3NF), 보이스-코드 정규형(BCNF), 제4 정규형(4NF) 등이 있습니다.
- 제1정규형(1NF): 릴레이션의 모든 속성 값이 원자값(분해할 수 없는 값)으로 되어 있어야 합니다.
- 제2정규형(2NF): 제1 정규형을 만족하면서 부분 함수 종속성이 없어야 합니다. 즉, 기본키가 아닌 모든 속성은 기본키 전체에 대해 함수 종속성을 가져야 합니다.
- 제3정규형(3NF): 제2 정규형을 만족하면서 이행적 함수 종속성이 없어야 합니다. 즉, 기본키가 아닌 모든 속성은 기본키에 대해서만 함수 종속성을 가져야 합니다.
- 보이스-코드 정규형(BCNF): 제3 정규형을 만족하면서 결정자가 모두 후보키여야 합니다.
- 제4정규형(4NF): 다치 종속성이 없어야 합니다.
데이터 정규화는 데이터베이스 설계에서 중요한 역할을 하지만, 항상 최고 단계의 정규형을 사용하는 것이 좋은 것은 아닙니다. 때로는 성능 향상을 위해 의도적으로 중복성을 허용하기도 합니다.
2 - 1 ) 이 직원 릴레이션의 투플 예를 4개만 들어라
직원번호 | 직원이름 | 봉급 | 과장 | 과이름 |
001 | 홍xx | 3000 | 김xx | 인사과 |
002 | 박oo | 300 | 이xx | 총무과 |
003 | 오ss | 6000 | 박xx | 자재과 |
004 | 한 | 6000 | 김xx | 인사과 |
2 - 2 ) 위 릴레이션의 기본 키는 무엇이 되겠는가?
- 개인마다 가지고 있는 직원번호가 기본키가 될 것이라 생각한다.
2 - 3 ) 이 릴레이션에 있는 함수 종속을 모두 찾아보아라
- ※ 함수 종속 : 어떤 릴레이션에서 하나의 애트리뷰트 값이 1대 1로 결괏값으로 연결되어 있는 것을 의미
현재 릴레이션에서 직원번호를 통하면 각각의 중복되는 값으로 혼동이 오지않고 해당되는 결과 애트리뷰트를 접근할 수 있다.
- 직원번호 → 직원이름
- 직원번호 → 봉급
- 직원번호 → 과장
- 직원번호 → 과이름
- 과이름 → 과장
2 - 4 ) 이 릴레이션의 함수 종속 다이어그램을 그려라
- pass
2 - 5 ) 이 릴레이션은 어떤 정규형에 속하는가?
- 2NF : 각 애트리뷰트가 모두 기본키에 속해있다.
2 - 6 ) 이 릴레이션에 있는 변경 이상의 예를 들어보고, 그 원인이 되는 함수 종속을 찾아보라
- 직원이 없으면 과장은 삽입 x - 삽입 이상
- 직원을 삭제 시 과장의 정보도 연쇄 삭제 - 삭제 이상
- 만약 인사과의 과장 이름을 김 xx에서 신 oo로 변경하고자 한다. 그렇다면 인사과에 속한 모든 사람의 과장 이름을 해당 이름으로 변경이 되는 경우가 생긴다. - 갱신 이상
직원 번호를 통해 과장과 과 이름에 접근을 할 수 있지만 과 이름을 통해 또 과장에 접근할 수 있게 된다. 그렇기에 해당 과장이라는 애트리뷰트가 문제가 되는 원인이라 생각한다.
2 - 7 ) 변경 이상을 제거하기 위해 무손실 분해하고, 어떤 정규형인지 분석하여 보라
- 직원번호 - { 직원이름, 봉급, 과 이름 }
- 과이름 - { 과장 }
해당 정규형은 보이스/코드 정규형(BCNF)이다.
3 ) 정규화의 목적과 정규형 간의 관계를 설명해 보라
- 데이터의 중복성을 제거하여 이에 수반되는 이상(현상)을 제거하기 위해서이다.
- 정규형간의 관계는 포함관계이다.
비정규 릴레이션 ⊃ 제1 정규형 ⊃ 제2 정규형 ⊃ 제3 정규형 ⊃ BCNF(보이스-코드) ⊃ 제4 정규형 ⊃ 제5 정규형
6 ) 다치 종속(MVD)의 정의를 기술하고, 왜 MVD는 항상 쌍으로 나타나는지 그 이유를 설명하라
7 ) 2NF의 지도 릴레이션을 3NF로 만들기 위해 분해할 때 책에서 분해한 것과 달리 학생지도(학번, 지도교수)와 학번학과(학번, 학과) 릴레이션으로 분해하였다면 어떻게 되는지 비교 설명하고, 일반적인 분해 방법을 제인해 보라.
- 책 기준 학생지도(학번, 지도교수) , 자도교수학과(지도교수, 학과)
- 만약 학생지도와 학번학과로 나눠지게 된다면 학번을 통해 학과까진 접근이 가능하지만 지도교수가 어떤 학과를 맡고 있는지 알기 위해서는 지도교수 - 학번 - 학과로 접근을 해야 한다. 또한 학번학과로 나눠진 경우에도 키가 학번인 경우가 되는데, 그렇다면 학번은 두 개의 릴레이션에서 키로 존재하는 상황이 되며 두 릴레이션은 독립된 릴레이션이 아니게 된다. 릴레이션을 독립적으로 나눠야 하기에 책에서 한 방식으로 진행하는 게 맞다고 생각한다.
8 ) 다음과 같은 릴레이션 스키마와 이 스키마에 포함되어 있는 함수 종속을 생각해 보자
R(A, B, C, D, E)
{A, B} → C
{A} → D
{A} → E
{D} → E
이 릴레이션 스키마를 단계뼐로 최대한 분해하여 정규화를 해보라. 각 단계마다 그 분해 이유와 해당 정규형을 식별해 보라. 최종적으로 분해된 릴레이션들이 속하는 모든 정규형을 식별하고 그 이유를 설명해 보라.
'DataBase > DB 문제풀이' 카테고리의 다른 글
[DataBase System] ch09 - 데이터베이스 설계 (0) | 2023.04.24 |
---|---|
[DataBase System] ch08 - 데이터 모델링 (0) | 2023.04.18 |
[DataBase System] ch06 - SQL (0) | 2023.04.14 |
[DataBase System] ch04 - 관계 데이터베이스 (0) | 2022.04.23 |
[DataBase System] ch03 - 데이터베이스 시스템의 구성 (0) | 2022.04.11 |