관계형 데이터베이스 실전 입문 3장

정규화 논리 - 함수 종속성

정규화란 헤드의 속성 그룹이 잘못된 것들 프로젝션 통하여 고치는 것이라고 말할 수 있다. 원래의 릴레이션으로 만들어 주기 위해 join을 이용한다. 또 정규화는 attribute의 부분집합들 간에 양화논리이다.

정규화

정규화의 이점으로 모순을 방지할 수 있다. 모순이란 데이터가 논리적인 불일치가 일어나는 상태를 말한다. 그리고 관계형 모델에서 중복이 변칙을 일으키는 주 요인이다. 한개의 릴레이션에 같은 데이터가 여러개 존재하는 것을 말한다.

1NF

1NF를 하기 위한 요건이 릴레이션이어야 한다는 SQL에 적용되는 조건이다. 애초에 관계형 모델에서는 릴레이션이 전부이고, 릴레이션은 1NF의 요건을 충족한다. 따라서 SQL에서 테이블이 릴레이션의 조건을 만족하냐가 1NF를 만족하는 여부이다.

  1. 행이 위에서 아래로 정렬돼 있지 않다.
  2. 열이 왼쪽에서 오른쪽으로 정렬돼 있지 않다.
  3. 중복하는 행이 존재하지 않는다
  4. 각 행과 열의 교차점(즉 열의 값)은 도메인(데이터형)에 속하는 요소의 값을 딱 한개만 갖는다.
  5. 모든 열의 값은 정의된 것이어야 하고 각 행은 항상 존재한다.

후보키와 슈퍼키

이부분은 대표님과 책의 내용이 전혀 다르게 설명을 하고 있어서 가장 혼란이 큰 내용들이다.

후보키(또는 단순히 키)는 그 릴레이션에 포함된 튜플의 값을 고유하게 하는 속성의 집합으로 Irreducible을 말한다. 후보키라고 불리는 이유는 튜플의 값을 고유하게 요구하는 속성의 집합이 한 종류밖에 없는 것은 아니기 때문이다.

후보키는 추가 속성이 없는 속성의 집합이지만, 후보키의 슈퍼셋 즉 추가 속성을 가지는 키를 슈퍼키라고 한다. 슈퍼키도 튜플의 값이 고유하다는 점은 후보키와 같다. 단순히 추가(고유한 값을 구하는데 도움되지 않는)속성을 가지고 있는것 뿐이다.

하지만 위의 두 설명은 실장님이 해주신 설명과 많이 다르다. 후보키의 설명은 슈퍼키에 대한 설명이며, 후보키는 도메인을 갖는 속성이라고 설명할 수 있다. 후보키와 후보키의 곱연산으로 되어진 릴레이션이라면 두개의 후보키를 묶어서 슈퍼키로 쓰며 슈퍼키가 실제 릴레이션에서 고유하게 만들어주는 고유키인 것이다.


Written by@Zero1
This blog is for that I organize what I study and my thinking, feeling and experience.

GitHub