데이터베이스 모델링 및 관계형 모델
1. 데이터베이스 모델링 과정
데이터베이스 모델링은 사용자의 요구 사항을 분석하여 데이터를 구조화하고 최적화된 데이터베이스를 설계하는 과정이다.
1.1 데이터베이스 모델링 과정 단계
- 사용자 요구 분석 (데이터 및 업무 분석)
- 데이터와 관련된 업무 흐름을 분석하여 데이터 요구사항을 파악
- 데이터베이스 모델링을 위한 기초 자료 수집
- 개념적 데이터 모델링 (Conceptual Data Modeling)
- ER 모델(Entity-Relationship Model)을 이용하여 데이터의 개념적인 구조를 표현
- 개체(Entity), 속성(Attribute), 관계(Relationship) 정의
- 데이터의 일반적인 개념을 다루며, DBMS에 독립적
- 논리적 데이터 모델링 (Logical Data Modeling)
- **관계형 모델(Relational Model)**을 기반으로 개념적 모델을 논리적으로 변환
- 테이블(릴레이션), 키(Key), 제약조건(Constraints) 정의
- 특정 DBMS에 맞는 논리적인 스키마 설계
- 물리적 데이터 모델링 (Physical Data Modeling)
- 데이터 저장 구조, 인덱스, 파일 구성, 접근 경로 등을 결정
- DBMS에서 데이터의 저장 및 관리 방식을 최적화
- 내부 스키마를 정의하여 성능을 고려한 데이터베이스 구조 설계
2. 관계형 모델 (Relational Model)
관계형 모델은 릴레이션(테이블)으로 데이터를 표현하는 모델로, 현재 대부분의 DBMS에서 사용된다.
2.1 관계형 모델의 특징
- 데이터 표현이 단순하고 직관적인 구조
- 현재 대부분의 관계형 DBMS(RDBMS)의 기초
2.2 릴레이션(테이블)의 특성
레코드(행)의 유일성 | 동일한 레코드(튜플)는 존재할 수 없음 |
레코드(행)의 무순서성 | 행의 순서는 의미가 없음 |
컬럼(속성)의 무순서성 | 컬럼(속성)의 순서는 중요하지 않음 |
컬럼값의 원자성 | 하나의 컬럼 값은 더 이상 나눌 수 없는 단일한 값(Atomic Value) |
3. 키(Key)와 참조
키는 테이블에서 레코드를 구분하기 위해 사용되는 속성이다.
3.1 키의 역할
키의 속성:
- 유일성(Unique): 테이블 내에서 레코드를 고유하게 식별
- 최소성(Minimality): 꼭 필요한 속성만 포함
키의 종류:
슈퍼키(Super Key) | 유일성은 만족하지만 최소성을 만족하지 않는 키 |
후보키(Candidate Key) | 유일성과 최소성을 만족하는 키 |
기본키(Primary Key, PK) | 후보키 중에서 선택된 주요 키 |
외래키(Foreign Key, FK) | 다른 테이블의 기본키를 참조하는 키 |
키의 참조 관계:
- 두 개의 릴레이션 사이에서 기본키를 참조하여 외래키로 설정
- 테이블 간의 관계를 형성하고 데이터의 무결성을 유지
4. 관계형 모델의 제약조건
제약조건은 데이터의 일관성과 무결성을 유지하기 위해 설정하는 규칙이다.
영역 제약조건 (Domain Constraint) | 컬럼 값은 정의된 영역 내의 값만 가질 수 있음 |
키 제약조건 (Key Constraint) | 기본키 값은 중복될 수 없으며, 유일해야 함 |
개체 무결성 제약조건 (Entity Integrity Constraint) | 기본키는 반드시 값이 있어야 하며, NULL이 될 수 없음 |
참조 무결성 제약조건 (Referential Integrity Constraint) | 외래키 값은 반드시 존재하는 기본키만 참조 가능 |
널(NULL)의 개념
- ‘없음’ 또는 ‘0’이 아닌 미지의 값, 입력된 적이 없는 값, 적용 불가능한 값
5. 논리적 데이터 모델링의 수행
5.1 ER 다이어그램 변환 규칙
ER 모델을 관계형 데이터 모델로 변환할 때 적용되는 규칙이다.
개체 집합(Entity Set) | 개체 집합은 릴레이션(테이블)으로 변환 |
약한 개체 집합(Weak Entity Set) | 강한 개체 집합의 기본키를 약한 개체 집합의 릴레이션에 포함 |
1:1 관계(One-to-One) | 한 릴레이션의 기본키를 다른 릴레이션에서 외래키로 참조 |
1:N 관계(One-to-Many) | ‘1’쪽의 기본키를 ‘N’쪽 릴레이션에서 외래키로 참조 |
M:N 관계(Many-to-Many) | 별도의 관계 릴레이션을 생성하여 두 개체의 기본키를 복합키로 설정 |
다중값 속성(Multivalued Attribute) | 별도의 릴레이션을 생성하여 기본키와 다중값 속성을 포함 |
관계 집합의 속성(Relationship Attribute) | 외래키가 위치한 릴레이션의 컬럼으로 삽입 |
6. 관계형 데이터 연산
관계형 모델에서는 데이터를 조작하기 위해 **관계 대수(Relational Algebra)**를 사용한다.
6.1 셀렉트 연산 (SELECT)
조건을 만족하는 튜플(행)을 선택하는 연산
SELECT * FROM 학생 WHERE 학년 = 3;
6.2 프로젝션 연산 (PROJECTION)
특정 컬럼(속성)만을 선택하는 연산
SELECT 이름, 학년 FROM 학생;
6.3 관계 대수 (Relational Algebra)
릴레이션에서 데이터를 검색하고 조작하는 연산
- 셀렉트(σ): 조건에 맞는 행을 선택
- 프로젝션(π): 특정 속성을 선택
- 조인(⨝): 두 테이블을 연결
- 디비전(÷): 특정 관계를 찾음
6.4 집합 연산자 (Set Operators)
SQL에서 두 개의 릴레이션을 조작하는 연산
- UNION: 두 테이블의 합집합 (중복 제거)
- INTERSECT: 두 테이블의 교집합
- EXCEPT: 한 테이블에서 다른 테이블을 제외한 차집합
6.5 카티시언 프로덕트 연산 (Cartesian Product)
두 테이블의 모든 가능한 조합을 생성
SELECT * FROM 학생, 과목;
6.6 그룹화를 이용한 집계 함수 (Aggregation with Grouping)
데이터를 그룹화하여 집계 함수(AVG, SUM, COUNT 등)를 적용
SELECT 학년, COUNT(*) AS 학생수 FROM 학생 GROUP BY 학년;
7. ER 다이어그램 변환 예제
ER 다이어그램
- 학생(학번, 이름, 학년)
- 과목(과목코드, 과목명)
- 수강(학번, 과목코드, 성적) (학생과 과목의 M:N 관계)
릴레이션 변환
CREATE TABLE 학생 (
학번 INT PRIMARY KEY,
이름 VARCHAR(50),
학년 INT
);
CREATE TABLE 과목 (
과목코드 INT PRIMARY KEY,
과목명 VARCHAR(100)
);
CREATE TABLE 수강 (
학번 INT,
과목코드 INT,
성적 CHAR(2),
PRIMARY KEY (학번, 과목코드),
FOREIGN KEY (학번) REFERENCES 학생(학번),
FOREIGN KEY (과목코드) REFERENCES 과목(과목코드)
);
- 관계형 모델은 표와 매우 유사한 구조인 릴레이션에 기초한다. 레코드는 릴레이션의 각 행을 의미하며, 컬럼은 각 열을 의미한다. 이 때 릴레이션 스키마란 어떠한 테이블에서 사용되는 컬럼과, 컬럼이 지니는 데이터 타입을 정의한 것을 의미한다.
- 릴레이션은 일반 표와는 달리, 레코드의 유일성, 레코드의 무순서성, 컬럼의 무순서성, 컬럼값의 유일성이라는 특징을 갖는다.
- 기본키는 한 데이터베이스 내에서 레코드를 유일하게 판별할 수 있는 컬럼을 말하며, 카디널리티는 레코드의 개수를 의미한다. 키의 종류로는 기본키, 후보키, 수퍼키 등이 있다.
- 관계형 모델은 영역 제약조건, 키 제약조건, 개체 무결성 제약조건, 참조 무결성 제약조건이 항상 만족되도록 모든 데이터의 삽입, 수정, 삭제 시 데이터를 검증하며, 이를 통해 데이터의 무결성과 일관성을 유지시킨다.
- ER 모델링의 결과를 토대로 실제 상용 DBMS상의 데이터베이스를 만들기 위해서는 각 DBMS에 맞는 구현 데이터 모델로의 변환이 필요하다. 이러한 변환 과정을 논리적 데이터 모델링이라고 한다.
- ER 모델에서 관계 데이터 모델로의 변환 시 보통 개체는 릴레이션으로, 약한 개체 집합의 경우 강한 개체의 키를 약한 개체의 부분키와 합쳐서 기본키로 갖는 릴레이션으로 변환 가능하다.
- ER 모델에서 관계 데이터 모델로의 변환 시 사상수에 따라 테이블 간 레코드의 연관성을 외래키와 기본키의 참조 관계로 표현한다.
- 관계 데이터베이스에서는 관계 대수라는 절차적 질의 언어를 사용할 수 있다. 관계 대수 연산에서 릴레이션에 대한 집합 연산으로는 셀렉트, 프로젝트, 합집합, 교집합, 차집합, 카티션 프로덕트 연산 등이 있다.
- 관계 대수의 또 다른 연산은 자연 조인, 할당 연산자 및 프로젝트 연산과 SUM, AVG, MAX, MIN, COUNT와 같은 집계 함수가 있다.