-
프로젝트 성패를 결정짓는 데이터 모델링 이야기2STUDY/DB 2021. 7. 8. 14:04
story 07. Back to the Basic, 정규화 이론
- 데이터 이상 현상이 존재하는 테이블
학번 과목코드 성명 과목명 평가코드 101 CR03 박영진 공업수학 C 101 CR11 박영진 심리학개론 A 103 CR11 김영희 심리학개론 B 103 CR15 김영희 논리학개론 F * 데이터 이상 현상 : 표를 구성하는 속성의 값을 수정할 떄나 표에 새로운 개체를 삽입하거나 삭제할 때 의도하지 않은 다른 데이터에 문제가 발생하는 현상
- 평가코드 결과가 없는 홍길동이라는 학생에 대한 정보는 입력이 불가하다.
- 과목코드가 CR11인 과목의 이름이 다른것으로 변경되면, CR11 관련 열을 모두 찾아서 수행해야 한다.
- 김영희의 F학점 평가 결과를 삭제하면 논리학개론 과목도 같이 삭제된다.
데이터 이상 현상이 발생하는 원인은 데이터가 독립적이지 않고 중복으로 관리되어 데이터 간의 종속성에 계속 영향을 받기 때문이다.
함수 종속(function dependency)은 하나의 집합 안에 존재하는 속성 사이의 연관 관계이다. 집합 내 속성 A가 속성 B의 값을 유일하게 식별하는 결정자라면 속성 B는 속성 A에 함수적으로 종속된다.
- 종속성0 : 속성 A -> 속성 B
- 종속성1 : 학번 -> 성명
- 종속성2 : 과목코드 -> 과목명
- 종속성3 : 학번+과목코드 -> 평가코드
이상 현상이 발생하지 않기 위해서는 속성들의 종속성을 분석해서 하나의 종속성이 하나의 표로 관리되도로 분해해가는 과정이 필요한데, 이를 정규화하고 한다.
즉, 정규화 이론이란 종속성을 기준으로 데이터를 어떻게 담는 것이 최적인가에 대한 방법론이다.
- 제 1정규화 - 반복 속성, 다수의 값을 갖는 속성은 별도 엔티티로 분리한다.
제 1정규형에서는 모든 속성이 값을 반드시 하나만 가져야 한다. 어떤 속성이 값을 여러 개 가지고 있거나 물리적으로는 하나만 갖지만 유사한 형태의 반복 속성이 존재해서 논리적으로는 다수의 값을 갖는 것과 마찬가지라면 별도의 엔티티로 분리해야 한다.
- 제 2정규화 - 주 식별자 일부에만 종속된 속성은 별도의 엔티티로 분리한다.
제 2정규형에서는 모든 속성이 반드시 주 식별자 전부에 종속되어야 한다. 주 식별자 일부에만 종속될 경우에는 해당 종속성을 별도 엔티티로 분리해야 한다. 제 1정규화로 생성된 집합은 자식이 되지만, 제 2정규화로 분리된 집합은 부모가 된다.
- 제 3정규화 - 주 식별자 외의 모든 속성은 상호 독립적이어야 한다.
제 3정규형에서는 주 식별자가 아닌 모든 속성이 상호 종속 관계여서는 안된다. 속성 간에 종속성이 있으면 별도 엔티티로 분리해야 한다.
* 정규화 과정을 통해 정제된 정규하 모델의 중요한 특징
- 속성간의 종속성을 기준으로 성격이 유사한 속성들은 모이고 관계없는 속성들은 분리된다. 즉, 속성들이 자연스럽게 자기 자리를 찾게 된면서 데이터 집합의 범주화가 이루어진다.
- 하나의 주제로 집약된 데이터 구조, 제대로 된 엔티티가 도출된다. 정규화는 함수 종속을 없애고 밀접한 속성을 하나의 표에 집약시키는 체계적인 방법이기 때문에, 데이터는 응집고는 높고 결합도는 낮게 분리된다.
- 데이터 중복이 최소화된 효율적이고 구조화된 모델이 나온다. 중복에 따른 데이터 이상 현상이 사라지고, 저장 용량 측면에서도 효율적이다.
- 데이터 간의 종속성을 분석하기 때문에 엔티티명과 더불어 엔티티의 정체성을 가장 잘 표현하는 주 식별자가 도출된다.
- 엔티티가 명확하고 정확해졌기 떄문에 업무 변경에 따른 확장성이 좋아진다.
- 데이터 중복을 최소화함으로써 데이터 무결성을 극대화한다.
story 08. 엔티티 정의가 가장 중요하다.
수학적 집합의 개념
- 집합은 구체적이고 객관적인 기준에 의해 그 원소를 명확히 구분할 수 있어야 한다. 즉, 집합을 구성하는 개체들은 집합 내에서 유일하게 식별될 수 있어야 한다.
- 논리적인 개념도 집합의 구성 요소가 될 수 있다. 눈으로 보거나 손으로 만질 수 없더라도 첫 번째 조건을 충족하는 개념이라면 이 역시 집합이 될 수 있다.
이러한 수학적 집합의 개념을 바탕으로 엔티티를 정의하면,
엔티티는 업무의 기준이 되는 유·무형의 사물과 정보, 이를 기초로 발생하는 사건, 거래 혹은 행위 객체들을 성격이 유사한 것끼리 모아놓은 집합이다.
- 엔티티를 명확히 정의한다는 의미는 집합의 성격에 부합하는 엔티티명을 지어준다는 뜻도 있지만, 그 집합의 개체들이 어떤 기준으로 발생되고 관리되는지 명시적으로 규정하는 것, 속성들이 어떤 수준이나 존재(엔티티)에 고유한 특성인지 파악하는 것이다.
- 개체의 발생 규칙과 주 식별자가 일치하는지 검증하는 것도 엔티티의 정의에서 중요한 과정이다.
- 주 식별자는 엔티티에 존재하는 개체의 유일성을 보장하며 엔티티에서 관리할 개체가 어떤 기준에 의해서 생성되는지 결정하는 결정자이다.
- 엔티티 모델링이 어려운 이유
- 데이터 집합을 정의하기가 쉽지 않다. 모델링은 업무 데이터의 분류와 묶음이라는 행위인데, 그 기준이 없거나 애매하면 데이터 집합을 정의하기가 어렵다.
- 데이터의 본질을 볼 줄 알아야 엔티티를 정확하게 정의할 수 있는데, 어떠한 대상에서 비즈니스 관점을 제거하는게 쉽지 않다.
- 엔티티의 추상화 수준을 결정하는 것이 어렵다.
- 하위의 트랜잭션 데이터만을 보고 부모 역할을 하는 상위의 논리적인 집합을 발견하는 것이 어렵다.
- 업무의 방대함과 복잡도에 의해, 데이터의 정체성, 성격, 특징을 파악하고 데이터가 생성되는 규칙까지 읽어 모델을 만드는 것이 어렵다.
'STUDY > DB' 카테고리의 다른 글
그림으로 공부하는 오라클 구조 : 오라클의 여러 프로세스 (0) 2022.04.25 그림으로 공부하는 오라클 구조 : I/O와 디스크의 관계 (0) 2022.04.24 JOIN (0) 2021.07.06 프로젝트 성패를 결정짓는 데이터 모델링 이야기1 (0) 2021.06.25 SQL : INSERT+UPDATE (0) 2021.04.28