Database
3 posts
데이터베이스 정규화 이론 1. 정규화이론이란?

정규화 이론이란? 정규화란 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스다. 정규화 이론은 RDB 설계 이론의 왕도라고 알려져있다. 따라서 정규화 이론이 RDB의 일부라고 생각할 수 있지만 이는 사실이 아니다. 관계형 모델 자체는 정규화 되어있지 않아도 똑같이 릴레이션 연산을 처리할 수 있다. 하지만 정규화 되어있지 않은 RDB의 릴레이션 연산은 어려워질 수 있다. 그렇다면 데이터베이스를 정규화 했을 때 우리가 얻을 수 있는 장점은 무엇일까? 바로 모순을 방지할 수 있다는 것이다. 모순이란 데이터가 논리적으로 불일치가 일어나는 상태이며, 이런 모순이 일어난 상태를 **변칙(Anomalies)**라고 하기도 한다. 즉, 이 변칙을 방지할 수 있는 설계 이론이 바로 정규화 이론이다. 모순, 이상 그렇다면 실제로 정규화 되어있지 않은 데이터베이스는 어떤 문제가 발생할 수 있을까? 다음과 같은 예를 생각해보자. 이름 학과 등록금 이도환 경영학과 400 노종수…

August 28, 2021
Database
데이터베이스 정규화 이론 2. 1NF

1NF 1NF의 조건은 한마디로 정리하면 “릴레이션 이어야 한다”는 것이다. 관계형 모델이야 당연히 릴레이션으로 구성되겠지만 SQL과 같은 우리가 실제로 사용하는 데이터베이스에 적용되는 조건이다. SQL의 테이블이 1NF이기위한 조건은 다음과 같다. 행이 위에서 아래로 정렬돼 있지 않다. 열이 왼쪽에서 오른쪽으로 정렬돼 있지 않다. 중복하는 행이 존재하지 않는다. 각 행과 열의 교차점(즉 열의 값)은 도메인(데이터형)에 속하는 요소의 값을 딱 한개만 가진다. 모든 열의 값은 정의된 것이어야 하고 각 행은 항상 존재한다. 1번, 2번 조건 실제 SQL 사양에서는 테이블 컬럼에 순서가 존재하기에 이를 만족하지 않는다. 하지만 이는 엄밀히 따졌을 때의 얘기이고 실제론 컬럼이나 행의 위치에 위존하는 쿼리를 작성하지 않으면 된다. 데이터베이스 사양에서 순서가 존재하더라도 그 순서에 의존하지 않는 쿼리를 작성하지 않는다면 1NF 1, 2번 조건을 만족할 수 있다는 것이다. 컬럼의 순서에 의존…

August 28, 2021
Database
데이터베이스 정규화 이론 3. 2NF, 3NF, BCNF

후보키, 슈퍼키 이전 글에서 얘기한 함수 종속성을 알아보기 위해서는 후보키와 슈퍼키라는 개념을 알아야 한다. 후보키란 릴레이션에서 튜플의 값을 고유하게 만드는 속성의 집합이다. 즉, 후보키가 정해지면 해당 row의 값이 모두 정해진다는 것이다. 이 때 후보키는 더는 속성을 줄일 수 없는 상태여야 한다. 잘 와닿지 않으니 다음 테이블들을 살펴보며 이해해보자. id 이름 1 A 2 B 3 C 가장 간단한 예다. id가 정해지면 그에 따라 이름도 정해지는 것을 알 수 있다. SQL에서 우리가 보는 Primary Key가 후보키의 대표적인 예다. id가 정해지면 다른 row의 값이 모두 결정된다. 주민번호 출생지 이름 20200101 서울 A 19870312 경기 B 19990815 서울 C Primary Key만이 후보키가 될 수 있는 건 아니다. 다음과 같은 예를 생각해보자. 이 테이블에는 id 컬럼이 존재하지 않는다. 하지만 주민번호가 결정되면 출생지와 이름 모두 결정된다는 사실을 …

August 28, 2021
Database