[sql] 정규화된 테이블의 데이터 중복성 해결 방법

데이터베이스 테이블에서 중복된 데이터는 보고, 조작 및 관리하는 데에 있어서 문제를 일으킬 수 있습니다. 이때 테이블을 정규화하여 중복성 문제를 해결할 수 있습니다. 본 글에서는 정규화를 통해 데이터 중복성을 해결하는 방법을 살펴보겠습니다.

1. 제 1 정규형 (1NF)

제 1 정규형은 모든 열이 원자 값(Atomic Value)을 갖도록 하는 것입니다. 이를 위해 열을 적절하게 세분화하여 중복을 제거하고, 중첩 구조를 없앱니다.

CREATE TABLE 학생 (
    학번 INT PRIMARY KEY,
    이름 VARCHAR(50),
    연락처 VARCHAR(15)
);

위의 테이블에서 연락처가 학생 이름에 종속되어 있는 중복성이 존재합니다.

2. 제 2 정규형 (2NF)

제 2 정규형은 기본 키에 완전 함수 종속인 열들로만 구성되어야 합니다. 이를 위해 부분 함수 종속이 존재하는 열들을 별도의 테이블로 분리합니다.

CREATE TABLE 학생 (
    학번 INT PRIMARY KEY,
    성명 VARCHAR(50),
    학과 INT,
    FOREIGN KEY (학과) REFERENCES 학과(학과코드)
);

CREATE TABLE 학과 (
    학과코드 INT PRIMARY KEY,
    학과명 VARCHAR(50)
);

위의 테이블에서 학과명이 부분 함수 종속되어 있는 중복성이 존재합니다.

3. 제 3 정규형 (3NF)

제 3 정규형은 이행 함수 종속이 존재하지 않아야 합니다. 이를 해결하기 위해 이행 함수 종속 관계를 분리하여 별도의 테이블을 만들어 관리합니다.

CREATE TABLE 주문 (
    주문번호 INT PRIMARY KEY,
    고객번호 INT,
    고객주소 VARCHAR(100)
);

CREATE TABLE 고객 (
    고객번호 INT PRIMARY KEY,
    고객이름 VARCHAR(50)
);

CREATE TABLE 주소 (
    고객번호 INT PRIMARY KEY,
    고객주소 VARCHAR(100)
);

위의 테이블에서 고객 주소가 이행 함수 종속 관계로 인해 중복성이 존재합니다.

결론

정규화된 테이블을 사용하여 데이터의 중복성을 해결할 수 있습니다. 이를 통해 데이터베이스의 효율성을 높이고, 데이터 무결성을 유지할 수 있습니다.