티스토리 뷰

728x90
SMALL

mysql은 쪼개서 관리하고 join을 쓰는게 기본이라고 들었을 것입니다. 들어보지 못했다고 해도 상관없습니다.

그런의미에서 정규화에 대해 알아보겠습니다.

 

정규화

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다.

 

왜??

왜 정규화를 해야되는지 알아야 합니다. 그러기 위해서 오늘은 이상현상과 함수적 종속성에 대해 알아보겠습니다.

 

 

 

이상현상

 정규화(Nomalization)를 거치지 않으면 데이터베이스 내에 데이터들이 중복되어 릴레이션 조작 시 문제가 발생하는데 이를 이상(Anomaly)라 하며 종류로는 삽입 이상, 삭제 이상, 갱신이상이 있습니다.

 

이해를 돕기 위해 데이터베이스 하나를 가지고 설명하겠습니다. 아래는 학점 table입니다.

이때 student_id와 course_id가 key입니다.

student_id student_name department course_id grade
2016001 민수 수학과 AA001 A
2016001 민수 수학과 AA002 A
2016002 민아 컴퓨터공학과 BB001 B
2016003 민지 컴퓨터공학과 BB002 B
2016004 민호 기계공학과 CC001 C

삽입이상

새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제를 삽입이상 이라고 한다.

여기에 수업을 듣지 않은 학생을 추가하려고 합니다. 그런데 course__id가 key이므로 null일 수 없습니다. 이를 해결하려면 "00000"같이 새로운 과목코드를 만들어야 합니다. 이를 삽입이상이라고 합니다. 

갱신이상

중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제를 갱신이상 이라고 한다.

민수가 수학이 싫어 국문학과로 전과할 경우 두 컬럼을 모두 바꿔야 합니다. 실수로 하나만 바꾸는 경우 민수의 과를 알 수 없게 됩니다. 이를 갱신이상이라고 합니다.

삭제이상

튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제를 삭제이상 이라고 한다.

민호가 학점이 마음에 들지 않아 수강취소를 해서 삭제를 할 경우 학생정보까지 날라가게 됩니다. 이를 삭제이상이라고 합니다. 

 

 

 

함수적 종속성

고등학교 때 함수를 생각하면 쉽습니다. x=>y 를 생각하면

x값에 따라 y가 결정되고 y는 x에 종속되어 있습니다.

일단은 이정도만 알아도 문제되지 않습니다.

 

ex)

student_id student_name department course_id grade
2016001 민수 수학과 AA001 A
2016001 민수 수학과 AA002 A
2016002 민아 컴퓨터공학과 BB001 B
2016003 민지 컴퓨터공학과 BB002 B
2016004 민호 기계공학과 CC001 C

위 테이블에서는

student_id => student_name, department

student_id, course_id => grade

가 됩니다.

이때 garde의 경우에는 함수의 종속성이 두개 입니다. 이경우에 부분 함수적 종속과 완전 함수적 종속을 구분할 수 있습니다. 

 

 

부분 함수적 종속 (Partial Functional Dependency)

속성집합 Y 가 속성집합 X 의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미한다.

grade에 해당됩니다.

완전 함수적 종속 (Full Functional Dependency)

속성집합 Y 가 속성집합 X 전체에 대해서만 함수적으로 종속된 경우를 말한다.

student_id에 해당됩니다.


일반적으로 함수적 종속성을 말하면 완전함수종속을 의미합니다.

 

 

 


다음 시간에는 정규화에 대해서 알아보겠습니다.

 

 

참고글 

https://yaboong.github.io/database/2018/03/09/database-anomaly-and-functional-dependency/

 

데이터베이스 정규화 - 이상현상 & 함수적 종속성

개요 삽입이상 (Insertion Anomaly), 갱신이상 (Update Anomaly), 삭제이상 (Deletion Anomaly) 설명 함수적 종속성 (Functional Dependency) 에 대해 알아본다.

yaboong.github.io

 

728x90
LIST
댓글
공지사항