[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