정규화의 개념
함수적 종속성 등의 종속성 이론을 활용합니다. 이상한 디자인된 관계형 스키마입니다. 이러한 스키마를 더 작은 속성의 세트로 쪼갭니다. 그러면 바람직한 스키마로 생성해가는 과정을 의미합니다. 훌륭한 데이터베이스 스키마를 만들어 냅니다. 불필요한 데이터의 반복을 방집합니다. 정보 검색을 효율적으로 할 수 있도록 허용합니다.
정규화의 목적
데이터 구조의 안전성을 최대화합니다. 반복 데이터를 최소화합니다. 수정, 삭제 시 에러 현상을 최소화합니다. 테이블이 일치하지 않는 위험을 간소화합니다.
정규화의 의의
디비의 변경시 이상 현상을 삭제합니다. 테이블을 변경시, 원치 않는 동작이 발생할 수 있습니다. 이 부작용은 충분히 정규화되지 않았을 때 발생할 수 있는 현상입니다. 충분히 정규화를 진행하지 않은 테이블은 다음과 같습니다.
같은 정보가 여러개의 열에서 나타납니다. 그래서 갱신은 논리적인 역설을 낳게 됩니다. 고용자의 기술이라는 테이블에서 모든 레코드가 고용자 ID, 고용자 주소가 내포하고 있습니다. 특정 고용자의 주소 변경 시 여러 개의 레코드를 수정해야 합니다.
성공적인 갱신이 이루어지지 않은 경우, 즉 변경된 고용자의 주소가 그가 가지고 있는 기술 레코드들 중에서 일부는 변경되었습니다. 일부는 변경되지 않는 경우, 고용자의 기술 테이블은 모순 상태가 됩니다. 특히 고용자의 주소가 어떤것인가에 대한 질문에 대해서 혼동스러운 답안을 만들게 됩니다. 이 현상을 갱신 이상이라고 합니다.
어떠한 특저아 팩트를 전혀 리코드되지 않는 경우가 생깁니다. 이 현상을 삽입 이상이라고 합니다. 데이터의 삭제가 전혀 다른 사실에 대한 데이터의 삭제도 필요로 하게 되는 현상이 있습니다. 이 현상을 삭제 이상이라고 합니다.
데이터베이스 구조 확장 시 재 디자인 최소화합니다. 정규화된 데이터 베이스 구조가 있습니다. 새로운 데이터 형의 추가로 인해 확장할 수 있습니다. 그 구조를 변경하지 않아도 되거나 일부 변경해도 되는 경우가 있습니다. 이 데이터베이스와 싱크된 애플리케이션에 최소한의 영향을 주고 프로그램의 생명이 길어집니다.
사용자에게 데이터 모델을 더욱 의미 있게 합니다. 정규화된 테이블들과 정규화된 테이블간의 관계들이 있습니다. 이것들은 현실 세계에서의 개념들과 그들의 관계들을 반영합니다. 즉 데이터 모델을 사용자에게 더욱 유익하게 합니다.
다양한 질의를 지원합니다. 정규화된 테이블은 일반적인 목적의 질의에 적당합니다. 이는 테이블에 대하여 세밀한 사항이 예측되지 않은 미래의 질의를 포함합니다. 이렇게 포함한 어떠한 질의도 지원한다는 의미입니다. 반대로 정규화되지 않은 테이블은 어떤 질의들은 서포트하지 않을 수 있습니다.
예를 들어서, 고객이 가지고 싶은 책들의 목록을 가지고 있는 온라인 서점을 생각합니다. 그러나, 분명하게예상되는 질의를 고객이 원하는 책이 있습니다. 이것은 고객이 가지고 싶은 책들의 목록 테이블에 저자와 제목이 있습니다.
이 테이블 디자인은 그 한 질의에 대해서는 답할 수 있습니다. 그러나, 다른 예상되거나 관심 있는 질의들은 답할 수 없습니다. 고객들이 가장 선호하는 책이 있습니다. 어떤 고객들이 2차 세계대전 스파이들에 대해서 관심이 있습니다. 이 질의에 대한 답을 구하기 위해서는 데이터베이스와 완전히 분리되어 있습니다. 이 질의를 다루는 소프트웨어를 구현하여야 합니다. 이 소프트웨어의 목표는 한가지 입니다. 비 정규화된 항목을 정규화합니다. 정규화된 테이블에서는 예측되지 않는 질의입니다. 순전히 데이터 베이스의 테두리 안에서 쉽게 답변이 가능합니다.
이상
삽입 이상 : 데이터를 삽입합니다. 이 떄, 불필요한 데이터가 함꼐 삽입되는 현상입니다.
삭제 이상 : 릴레이션의 한 튜플을 삭제합니다. 연쇄 삭제로 인해 정보의 손실을 발생시킵니다.
갱신 이상 : 튜플 중에서 일부 속성을 갱신합니다. 정보의 모순성이 발생합니다.
함수적 종속적 의미
개체 내에 존재하는 속성들 간의 관계가 있습니다. 종속적인 관계로 정리하는 방법이 있습니다. 데이터 속성들의 의미와 속성들 간의 상호 관계로부터 도출되는 제약 조건이 있습니다. 릴레이션에 존재하는 데이터 항목들 중, 속성 Y가 속성 X에 함수적으로 종속된다는 말은 속성 X를 이용해 속성 Y를 식별할 수 있습니다.
기준 값을 결정자라 하고 종속되는 값을 종속자라고 합니다. 속성 Y는 속성 X에 함수적으로 종속된다는 말이 있습니다. 말은 속성 X를 이용해 속성 Y를 분별할 수 있습니다. 이행 함수적 종속이란 속성 X, Y, Z가 주어져 있습니다. X -> Y, Y -> Z 이면, X -> Z가 성립됩니다.
완전 함수적 종속이 있습니다. 복함 속성 X에 대하여 X -> Y가 성립하였습니다. 속성 Y는 속성 X에 함수적 종속이라 합니다. 표현은 X -> Y 라고 표현입니다. 이 때, X를 결정자, Y를 종속자라고 부릅니다.
정규화 과정
1정규형 : 하나의 항목에는 중복된 값이 입력될 수 없습니다. 하나의 속성만 있어야 합니다. 반복되는 속성을 별도 테이블로 분리합니다. 어떤 릴레이션에 속한 모든 도메인이 원자값 만으로 되어 있는 릴레이션입니다.
2정규형 : 기본키가 아닌 속성 모두가 기본키에 완전 함수 종속이 됩니다. 그렇게 하여, 부분 함수적 종속에 해당하는 속성을 별도 테이블로 분리합니다.
3정규형 : 1정규형, 2정규형을 만족합니다. 이행 함수적 종속을 제거합니다. 이행 함수적 종속 A -> B, B -> A, A -> C 를 의미합니다.
BCNF 정규형 : 1정규형, 2정규형, 3정규형을 만족합니다. 결정자가 후보키가 아닌 함수적 종속을 제거합니다. 강력한 3정규형이라고도 합니다.
4정규형 : 1정규형, 2정규형, 3정규형, BCNF 정규형을 만족합니다. 그리고 다가 종속을 제거합니다.
5정규형 : 1정규형, 2정규형, 3정규형, BCNF 정규형을 만족합니다. 그리고 4정규형을 만족하고, 후보키를 통하지 않은 조인 종속을 제거합니다.
'SW > 면접' 카테고리의 다른 글
프로그래밍에서 자주 저지르는 실수와 그 해결 방법 (0) | 2024.11.16 |
---|---|
소프트웨어 엔지니어가 되는 길: 로드맵 가이드 (0) | 2024.11.13 |
SW면접 : 데이터베이스 : 관계 모델, 장점, 단점, 종류, 개념 (0) | 2020.09.01 |
SW 면접 : 데이터베이스 : Trigger(트리거) 개념, 장점 (0) | 2020.08.31 |
SW 면접 : 데이터베이스 : 클러스터드 인덱스, 넌클러스터드 인덱스 : 개념, 차이점, 성능 비교 (0) | 2020.08.26 |