2025. 4. 15. 16:26ㆍComputer Science/데이터베이스
1. 관계형 모델이란?
- 수학 기반 모델 (수리적 표현): 다이어그램(UML) 같은 시각 표현이 아니라, 수학적 기호와 개념을 통해 데이터 구조를 표현
- 핵심 구조
- 데이터베이스: 여러 개의 테이블(관계) 집합
- 관계 R: 속성들의 카티시안 곱의 부분집합
- Ai: 속성 (attribute, 도메인, 필드)
- ai: 속성 값
- 스키마: R(A₁, A₂, ..., Aₙ)
- 튜플: (a₁, a₂, ..., aₙ)
2. Relation as Table : 테이블로 표현된 관계
- Attributes: 열 (column)
- Tuples: 행 (row)
- Relation schema : 테이블 이름 + 속성 목록 + 타입 + 제약조건 (키)
Movie(title, year, length, genre)
왜 관계형 모델인가?
- 단순하고 직관적
- 우리가 생각하는 방식과 유사 (속성 - 값의 테이블 형태)
- SQL과 연결되며, 비저러차적(선언형) 언어와 호환됨
- 기초배경: 관계 대수
SQL을 통한 스키마 정의
- SQL: 관계형 데이터베이스용 선언형 언어
# DDL (기본 구조)
CREATE TABLE Movies (
title CHAR(100),
year INT,
length INT,
genre CHAR(10),
studioName CHAR(20),
producerC# INT,
PRIMARY KEY (title, year)
);
# 수정
ALTER TABLE Movies ADD address CHAR(100);
ALTER TABLE Movies DROP producerC#;
# default 값 설정
genre CHAR(10) DEFAULT 'UNKNOWN'
3. 관계 대수 (Relational Algebra)
- Algebra = Operand(피연산자) + Operator(연산자)
- Operand: Relation(table)
- Operator: selection, projection, join, union 등
관계대수 핵심 연산자들
- Set Operators (중복 x) : union, intersection, difference
- Bag Operators (중복 o): selection, projection, products, joins
연산자 | 기호 | 의미 | 목적 |
selction | σ | 조건에 맞는 행(tuple) 선택 | 필터링 |
project | π | 특정 열만 선택 | 칼럼 선택 |
cartesian product | × | 모든 tuple 조합 | 기본 join 전 단계 |
join | ⨝ | 두 relation을 공통 속성 기준으로 연결 | 관계 통합 |
union | ∪ | 두 relation의 모든 tuple | 포함 전체 |
difference | - | 첫 relation에만 있는 tuple | 차이 계산 |
intersection | ∩ | 두 relation 모두에 있는 tuple | 공통값 |
aggregation / grouping | γ | SUM, COUNT 등 | 분석용 |
중복 제거 | δ | Bag -> Set 변환 | SQL의 DISTINCT와 유사 |
Selection(선택) - σ
: 행(튜플)을 조건에 따라 고른다.
Projection - π
: 열(속성)을 선택, 필요한 속성만 남긴다.
Cartesian Prodcuct - x
: 두 테이블의 모든 튜플을 모든 방식으로 조합
ex) R1 x R2
보통은 join 전에 필터링 조건 붙여서 사용
Join - ⨝
: 공통 속성을 기준으로 두 테이블 연결
- Natural Join: 두 테이블에 동일한 속성 이름이 있는 경우, 그 속성 값을 기준으로 자동으로 매칭하여 조인
- Theta Join: 임의의 조건 (특정 조건)을 이용해 두 테이블을 조인하는 방식 ( >, <, = 등)
Bag
=Mutliset =중복허용집합, 즉 같은 값을 여러 번 가질 수 있는 데이터 구조
- SQL은 Bag 기반 언어이다! 즉 중복을 자동으로 제거하지 않는다.
- 중복 제거는 명시적으로 해줘야 한다. (DISTINCT)
- Set 법칙 ≠ Bag 법칙
-> 교환법칙은 둘 다 성립하지만 항등법칙은 Bag에서 성립하지 않는다.
-> S ∪ S = S는 Set에서만 성립, Bag에선 중복 누적
연산 | Set | Bag |
Union | 중복 제거 | 중복 수 합산 |
Intersection | 공통 원소만 | 최소 등장 횟수만큼 포함 |
Difference | 차집합 | 등장 횟수 차만큼 남김 (0 미만은 제거) |
확장 연산자 (Extended Algebra)
- δ : 중복 제거 (DISTINCT)
- γ : 그룹핑/집계 (COUNT, SUM 등)
- τ : 정렬
- OUTER JOIN: 매칭 안 되는 튜플도 남기는 조인
- Extended Projection: π 연산자 내에서만 산술 가능
- Aggregation(집계 연산자) / Grouping : SUM, AVG, COUNT, MIN, MAX 등 칼럼 전체에 적용, γ 연산자
- 외부 조인 (Outer Join)
: 내부 조인시에는 매칭되지 않는 튜플은 버려지지만, 외부조인에선 NULL로 채워서라도 보존한다. 연결되지 않은 튜플까지 보고 싶을 때 사용.
관계 대수식 표현 트리
- 트리 구조로 연산 순서 시각화
- 루트는 가장 마지막 연산자
- 리프 노드는 테이블
★ 제약조건 (Constraints)
- Key Constraint : 튜플을 유일하게 식별하는 속성
- Referential Integrity (참조 무결성): 한 릴레이션의 속성 값이 다른 릴레이션의 key로 존재해야 함
4. Relational Schema
UML → RelationModel
- Class → Relational Schema
CREATE TABLE Employee (
name CHAR(30),
address CHAR(100),
citizenID CHAR(12) PRIMARY KEY,
division CHAR(20),
salary REAL
);
- Association → Relational Schema
- 단방향 association: 테이블에 속성 추가
CREATE TABLE Person (
name CHAR(30),
age INT,
ID CHAR(12) PRIMARY KEY,
companyName CHAR(40),
companyAddress CHAR(100)
);
- 다대다 association: 별도 관계 테이블 생성
CREATE TABLE Contract (
signYear Year,
salary INT,
citizenID CHAR(12),
teamName CHAR(40),
PRIMARY KEY (citizenID, teamName)
);
- Aggregation → Relation Schema
: 외래키 포함 or 조인 테이블
CREATE TABLE County (
countyName CHAR(30),
population INT,
belongsToDept CHAR(30)
);
- Inheritance → Relation Schema
: 상속 구조 → 여러 테이블로 분리 저장 가능
CREATE TABLE Person (
name CHAR(30),
age INT,
ID CHAR(12) PRIMARY KEY
);
CREATE TABLE Student (
name CHAR(30),
age INT,
ID CHAR(12) PRIMARY KEY,
dept CHAR(30),
studentID INT,
score REAL
);
Weak Entity Set
: 복합키 사용 (자신의 키 + 상위 개체의 키)
CREATE TABLE Player (
name CHAR(30),
backNumber INT,
position CHAR(3),
teamName CHAR(30),
PRIMARY KEY (backNumber, teamName)
);
'Computer Science > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 1. Data Model (0) | 2025.04.15 |
---|