데이터베이스 정규화
데이터베이스 설계를 할 때, 빼놓을 수 없는 중요한 개념 중 하나가 바로 '정규화'다.
짧게 말하자면 정규화는 데이터베이스의 데이터를 구성하는 프로세스다.
이 과정에서는 데이터를 보호하고, 중복성과 일관성 없는 종속성을 제거하여 데이터베이스를 보다 유연하게 만들기 위해 설계된 규칙에 따라 테이블을 만들고, 해당 테이블 간에 관계를 설정한다.
즉, 정규화는 테이블을 어떻게 나누어야하는 것인가에 대해서 기준을 제시한다고 볼 수 있다.
정규화의 규칙: 1, 2, 3 정규화
데이터베이스 정규화에는 몇 가지 규칙이 적용됩니다. 각 규칙을 "일반 양식"이라고 합니다. 첫 번째 규칙이 관찰되면 데이터베이스는 "첫 번째 일반 형식"이라고 합니다. 처음 세 규칙을 관찰하는 경우 데이터베이스는 "세 번째 일반 형식"으로 간주됩니다.
1 정규화
첫 번째 정규 형식은 개별 테이블에서 반복되는 그룹을 제거하는 거다. 그래서 각 관련 데이터 집합에 대해 별도의 테이블을 만들고, 기본 키를 사용하여 각 관련 데이터 집합을 특정할 수 있다.
예를 들어, 아래와 같은 테이블이 있다고 가정해보자.
Student# | Advisor | Adv-Room | Class1 | Class2 | Class3 |
---|---|---|---|---|---|
1022 | Jones | 412 | 101-07 | 143-01 | 159-02 |
4123 | Smith | 216 | 101-07 | 143-01 | 179-04 |
이 테이블을 첫 번째 정규 형식에 맞게 변환하면 아래와 같이 된다.
Student# | Advisor | Adv-Room | Class# |
---|---|---|---|
1022 | Jones | 412 | 101-07 |
1022 | Jones | 412 | 143-01 |
1022 | Jones | 412 | 159-02 |
4123 | Smith | 216 | 101-07 |
4123 | Smith | 216 | 143-01 |
4123 | Smith | 216 | 179-04 |
2 정규화
2 정규화는 여러 레코드에 적용되는 값 집합에 대해 별도의 테이블을 만드는 것이다. 이를 위해 외래 키를 사용해 이런 테이블 간의 관계를 설정해줘야만 한다.
위의 테이블을 두 번째 정규 형식에 맞게 변환하면 아래와 같이 된다.
Students:
Student# | Advisor |
---|---|
1022 | Jones |
4123 | Smith |
Faculty:
Name | Room | Dept |
---|---|---|
Jones | 412 | 42 |
Smith | 216 | 42 |
Registration:
Student# | Class# |
---|---|
1022 | 101-07 |
1022 | 143-01 |
1022 | 159-02 |
4123 | 101-07 |
4123 | 143-01 |
4123 | 179-04 |
3 정규화
3 정규화는 키에 의존하지 않는 필드를 제거하는 것입니다. 해당 레코드의 키에 속하지 않는 레코드의 값은 테이블에 속하지 않아야한다.
위의 테이블을 세 번째 정규 형식에 맞게 변환하면 다음과 같습니다.
Students:
Student# | Advisor |
---|---|
1022 | Jones |
4123 | Smith |
Faculty:
Name | Room | Dept |
---|---|---|
Jones | 412 | 42 |
Smith | 216 | 42 |
Registration:
Student# | Class# |
---|---|
1022 | 101-07 |
1022 | 143-01 |
1022 | 159-02 |
4123 | 101-07 |
4123 | 143-01 |
4123 | 179-04 |
이렇게 정규화를 하면 데이터베이스의 효율성을 높이고, 데이터의 일관성을 유지하면서도, 데이터 관리의 복잡성을 줄일 수 있다. 이는 당연하게도 데이터베이스를 설계할 때 우선적으로 고려해야할 중요한 부분이며, 이를 이해하고 적용시켜야한다.
참고 : https://learn.microsoft.com/ko-kr/office/troubleshoot/access/database-normalization-description
데이터베이스 정규화 설명 - Office
데이터베이스를 정규화하는 방법과, 형식을 정규화하는 대신 사용할 수 있는 여러 가지 방법을 설명합니다. 데이터베이스 원칙을 이해하려면 데이터베이스 원칙을 마스터하거나 문서에 나와
learn.microsoft.com