3.5.2 2NF 이해

약 7분

본문 듣기
읽기 설정

글자 크기

줄 간격

글꼴

3.5.2 2NF 이해

데이터베이스에서 데이터 정규화는 정보를 효율적으로 저장하고 중복을 최소화하는 과정을 의미합니다. 정규화의 두 번째 단계인 2NF(Second Normal Form)는 1NF(첫 번째 정규형)를 기반으로 하며, 기본 키에 의존하는 모든 비주요 속성이 기본 키에 완전히 기능적으로 종속되어야 한다는 조건을 갖고 있습니다.

2NF로 이동하기 위해서는 테이블의 속성이 기본 키의 일부에만 의존하는 상황을 제거해야 합니다. 이는 주로 복합 기본 키를 사용하는 테이블에서 발생합니다.

예제

아래는 학생 정보를 저장하는 StudentCourse 테이블의 예입니다.

StudentID CourseID StudentName CourseName Instructor
1 101 Alice Math Prof. Kim
1 102 Alice Science Prof. Lee
2 101 Bob Math Prof. Kim

이 테이블은 1NF를 만족하지만, StudentName, CourseName, InstructorStudentIDCourseID의 조합에만 의존하지 않고 중복 데이터가 있습니다.

이제 이 데이터를 2NF로 전환해보겠습니다.

2NF 적용 후 테이블 구조

이 데이터는 두 개의 테이블로 분리하여 다음과 같이 정리할 수 있습니다.

1. Student 테이블

StudentID StudentName
1 Alice
2 Bob

2. Course 테이블

CourseID CourseName Instructor
101 Math Prof. Kim
102 Science Prof. Lee

3. StudentCourse 관계 테이블

StudentID CourseID
1 101
1 102
2 101

이렇게 함으로써, StudentName, CourseName, Instructor의 중복 없이 각각의 정보를 관리할 수 있게 됩니다.

실습

이제 MySQL을 사용하여 다음 SQL 문을 실행해 보세요.

  1. Student, Course, StudentCourse 테이블을 생성합니다.
  2. 데이터를 삽입합니다.
  3. 각 테이블의 데이터를 조회하여 2NF의 적용 결과를 확인합니다.
CREATE TABLE Student (
    StudentID INT PRIMARY KEY,
    StudentName VARCHAR(100)
);

CREATE TABLE Course (
    CourseID INT PRIMARY KEY,
    CourseName VARCHAR(100),
    Instructor VARCHAR(100)
);

CREATE TABLE StudentCourse (
    StudentID INT,
    CourseID INT,
    PRIMARY KEY (StudentID, CourseID),
    FOREIGN KEY (StudentID) REFERENCES Student(StudentID),
    FOREIGN KEY (CourseID) REFERENCES Course(CourseID)
);

INSERT INTO Student (StudentID, StudentName) VALUES (1, 'Alice'), (2, 'Bob');
INSERT INTO Course (CourseID, CourseName, Instructor) VALUES (101, 'Math', 'Prof. Kim'), (102, 'Science', 'Prof. Lee');
INSERT INTO StudentCourse (StudentID, CourseID) VALUES (1, 101), (1, 102), (2, 101);

SELECT * FROM Student;
SELECT * FROM Course;
SELECT * FROM StudentCourse;

이 SQL 코드를 실행하고, 각 테이블에서 데이터를 조회하여 결과를 확인하세요.

프로젝트

실무에서 데이터 정규화를 적용해 보세요. 실제 필요한 데이터베이스를 생각해보고, 2NF를 고려하여 테이블을 설계해 보세요. 이 과정에서 발생할 수 있는 비정규화에 대해서도 고민해보는 것이 중요합니다.

정리

2NF는 데이터베이스의 무결성을 유지하고 중복을 피하는데 중요한 역할을 합니다. 2NF를 이해하고 적용함으로써 데이터베이스 설계의 질을 한층 높일 수 있습니다.

댓글 0

댓글을 남기려면 로그인하세요.

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.