2026년 5월 6일
실제 서비스에서는 데이터를 단순히 파일에 저장하는 수준을 넘어, 다수의 사용자가 동시에 접근하더라도 데이터의 일관성과 무결성을 유지해야 한다. 이를 가능하게 하는 데이터베이스 시스템의 핵심 용어들과, 데이터를 구조화하는 정규화 과정에 대해 정리해 본다.
1) 정의 데이터베이스는 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합이다.
2) 파일 시스템과의 비교 및 필요성 과거에는 애플리케이션마다 종속된 데이터 파일(ex. 엑셀, txt)을 사용하는 파일 시스템을 이용했다. 하지만 이는 동일한 데이터가 여러 파일에 중복 저장되는 '데이터 중복성(Redundancy)' 과, 한 곳의 데이터만 수정되어 데이터 간 내용이 달라지는 '데이터 불일치(Inconsistency)' 문제를 야기했다. 데이터베이스는 이러한 중복을 최소화하고, 무결성(데이터의 정확성)과 보안을 중앙에서 제어하기 위해 필수적으로 도입된다.
1) 정의 DBMS는 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 데이터를 처리해주고 데이터베이스를 관리해주는 소프트웨어 시스템이다.
2) 역할 데이터베이스 자체는 하드디스크에 저장된 데이터의 모음일 뿐이다. DBMS는 이 데이터에 대한 동시성 제어, 백업 및 복구, 권한 관리를 담당한다. 우리가 흔히 사용하는 MySQL, Oracle, PostgreSQL, MariaDB 등이 모두 관계형 데이터베이스 관리 시스템(RDBMS)에 해당한다.
1) 정의 데이터베이스의 구조와 제약 조건에 관해 전반적인 명세(Specification)를 기술한 것이다. 즉, 데이터베이스의 '설계도' 역할을 한다.
2) 3단계 스키마 구조 데이터의 독립성을 보장하기 위해 스키마는 관점에 따라 3단계로 나뉜다.
데이터베이스를 구축하기 전, 요구사항을 분석하여 시각적인 모델로 그려내는 방법이다. 개체(Entity)와 그들 간의 관계(Relationship)를 도식화한다.
관계형 데이터베이스(RDBMS)에서는 데이터를 2차원 표(Table) 형태로 관리하며, 이를 설명하기 위해 다음과 같은 용어를 사용한다.
| 학번 (PK) | 이름 | 전공 |
|---|---|---|
| 20230001 | 김멋사 | 컴퓨터공학 |
| 20230002 | 이개발 | 경영학 |
1) Primary Key (기본키, PK) 릴레이션 내에서 각 튜플을 고유하게 식별할 수 있는 핵심 속성이다.
2) Foreign Key (외래키, FK) 다른 릴레이션의 기본키를 참조하는 속성이다. 릴레이션 간의 관계를 맺어주는 연결고리 역할을 한다.
SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 조작하고 정의하기 위한 표준 언어다.
CREATE, ALTER, DROP)GRANT, REVOKE)SELECT * FROM users WHERE age >= 20;INSERT INTO users (name, age) VALUES ('홍길동', 25);UPDATE users SET age = 26 WHERE name = '홍길동';DELETE FROM users WHERE name = '홍길동';정규화는 데이터베이스 설계 시 데이터의 중복을 최소화하고, 구조를 논리적으로 분해하는 과정이다. 정규화를 하지 않으면 데이터를 조작할 때 다음과 같은 이상 현상(Anomaly) 이 발생할 수 있다.
이러한 이상 현상을 막기 위해 단계별로 정규화를 수행한다.
규칙: 릴레이션의 모든 속성 값은 '원자값(Atomic Value)'만을 가져야 한다.
| 학번 | 이름 | 수강과목 |
|---|---|---|
| 101 | 김민수 | 데이터베이스, 운영체제 |
| 학번 | 이름 | 수강과목 |
|---|---|---|
| 101 | 김민수 | 데이터베이스 |
| 101 | 김민수 | 운영체제 |
규칙: 1NF를 만족하면서, 기본키의 일부에만 종속되는 '부분 함수 종속'을 제거해야 한다.
| 학번 (PK) | 과목코드 (PK) | 성적 | 과목명 |
|---|---|---|---|
| 101 | CS10 | A | 데이터베이스 |
| 102 | CS10 | B | 데이터베이스 |
규칙: 2NF를 만족하면서, 일반 속성들끼리의 종속 관계인 '이행적 함수 종속(A->B, B->C)'을 제거해야 한다.
| 학번 (PK) | 이름 | 학과명 | 학과 전화번호 |
|---|---|---|---|
| 101 | 이개발 | 컴퓨터공학 | 02-111-2222 |
규칙: 3NF를 만족하면서, 릴레이션의 모든 결정자가 '후보키'여야 한다.
| 학번 (PK) | 과목명 (PK) | 담당 교수 |
|---|---|---|
| 101 | 데이터베이스 | 김교수 |
| 102 | 데이터베이스 | 김교수 |
실무에서 데이터베이스 모델링을 할 때는 BCNF까지만 고려하는 경우가 많고, 복잡한 JOIN으로 인한 성능 저하를 우려해 오히려 테이블을 다시 합치는 '반정규화(De-normalization)'를 수행하기도 한다고 한다. 앞으로 진행될 프로젝트에서 이번에 정리한 스키마 설계와 정규화 개념을 바탕으로 이상 현상이 없는 효율적인 데이터베이스 구조를 직접 설계해 볼 계획이다.
댓글 0