약 5분
읽기 설정
글자 크기
줄 간격
글꼴
3.5.1 1NF 이해
데이터베이스에서 데이터를 효과적으로 저장하고 관리하기 위해 필요한 격식이 바로 정규화입니다. 이번 섹션에서는 1차 정규형(1NF)의 개념과 필요성에 대해 알아보겠습니다.
데이터 저장의 개념
데이터를 저장하는 기본적인 이유는 정보를 체계적으로 관리하고, 필요할 때 정확하게 조회하기 위함입니다. 비즈니스와 관리 비용을 절감하고, 데이터 무결성을 보장하기 위해, 효율적인 데이터 구조가 필요합니다.
1NF의 정의
1NF(첫 번째 정규형)는 데이터베이스 테이블의 각 칼럼이 원자값(Atomic Value)을 가져야 하고, 각 레코드가 고유해야 함을 의미합니다. 즉, 같은 칼럼에 여러 값을 가질 수 없다는 것입니다.
1NF를 충족하기 위해서는 복합 데이터 타입(예: 리스트, 배열 등)을 사용하지 않고, 모든 데이터는 단일 값으로 저장해야 합니다.
예제
아래는 비정규화된 테이블의 예입니다:
| 고객ID | 이름 | 전화번호 |
|---|---|---|
| 1 | 홍길동 | 010-1234-5678, 02-9876-5432 |
| 2 | 김영희 | 010-1111-2222 |
위 테이블에서는 한 고객이 여러 전화번호를 가질 수 있어 1NF를 만족하지 않습니다.
1NF를 만족하도록 테이블을 수정하면 다음과 같습니다:
| 고객ID | 이름 | 전화번호 |
|---|---|---|
| 1 | 홍길동 | 010-1234-5678 |
| 1 | 홍길동 | 02-9876-5432 |
| 2 | 김영희 | 010-1111-2222 |
이제 각 레코드가 고유하고, 모든 칼럼이 원자값으로 되어 1NF를 만족합니다.
실습
아래 SQL문을 사용하여 1NF를 적용한 테이블을 생성하고 데이터를 삽입해보세요.
CREATE TABLE 고객 (
고객ID INT,
이름 VARCHAR(50),
전화번호 VARCHAR(15)
);
INSERT INTO 고객 (고객ID, 이름, 전화번호) VALUES
(1, '홍길동', '010-1234-5678'),
(1, '홍길동', '02-9876-5432'),
(2, '김영희', '010-1111-2222');
실행 후 데이터가 어떻게 변했는지 확인해 보세요:
| 고객ID | 이름 | 전화번호 |
|---|---|---|
| 1 | 홍길동 | 010-1234-5678 |
| 1 | 홍길동 | 02-9876-5432 |
| 2 | 김영희 | 010-1111-2222 |
테이블이 1NF를 만족하게 되었음을 확인할 수 있습니다.
프로젝트
실제로 회원 관리 시스템의 ERD를 설계해 보세요. 고객 정보를 1NF에 맞게 구조화하여 관리할 수 있는 테이블을 설계하고, 필요한 데이터를 삽입해봅시다.
정리
1NF는 데이터의 원자성을 유지하여 데이터 무결성을 보장합니다. 비즈니스에서 필요로 하는 정확한 데이터를 효율적으로 관리하는 기초가 되며, 다음 단계인 2NF로 나아가기 위한 중요한 발걸음입니다.
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.