[sql] 비정규화된 테이블의 예시와 분석

목차

비정규화란 무엇인가요?

비정규화는 데이터베이스의 성능을 향상시키기 위해 관계형 데이터베이스의 정규화된 테이블을 중복 데이터로 변환하는 프로세스를 말합니다. 이는 데이터베이스의 읽기 속도를 높이고, 데이터를 한 곳에서만 변경하면 되므로 쓰기 속도 또한 향상시킬 수 있습니다.

비정규화된 테이블 예시

다음은 학생과 과목에 대한 관계성을 가진 비정규화된 테이블 예시입니다.

CREATE TABLE 학생 (
    학번 INT PRIMARY KEY,
    이름 VARCHAR(50),
    성적 INT
);

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

위 예시에서 학생 테이블과 수업 테이블은 관계형 테이블로 정규화되어 있지만, 실제 성적 조회와 같은 기능을 수행할 때 성능이 저하될 수 있습니다.

이에 따라 아래와 같이 학생의 이름을 수업 테이블에 추가하여 비정규화할 수 있습니다.

CREATE TABLE 수업 (
    과목코드 INT PRIMARY KEY,
    과목명 VARCHAR(50),
    학번 INT,
    학생이름 VARCHAR(50),
    FOREIGN KEY (학번) REFERENCES 학생(학번)
);

분석

위의 비정규화된 테이블 예시에서 볼 수 있듯이, 학생의 이름을 수업 테이블에 추가함으로써 데이터 접근 및 조회 속도를 높일 수 있습니다. 이러한 구조는 데이터의 중복을 초래할 수 있지만, 데이터베이스 성능 향상을 위해 필요한 접근 방법일 수 있습니다.

참고문헌: LearnSQL - Denormalization in Database