데이터 모델
데이터 모델 (Data Model)
ER 모델, 관계형 모델, DDL/DML
데이터 모델의 구성 요소
- 구조(Structure): 엔티티, 레코드, 테이블과 그들 간의 관계
- 작업(Operations): 삽입, 삭제, 업데이트, 검색
- 제약 조건(Constraints): 유효한 데이터에 대한 제한
데이터 모델 분류
| 분류 | 설명 | 예시 |
|---|---|---|
| 개념적(고수준) | 사용자가 데이터를 인식하는 방식에 가까움 | ER 모델 |
| 구현(표현) | 개념과 물리 사이 중간 개념 | 관계형 모델 |
| 물리적(저수준) | 실제 저장 방식의 세부 정보 | 내부 스키마 |
ER 모델 (Entity-Relationship Model)
엔티티와 속성
- 엔티티(Entity): 실제로 또는 개념적으로 존재하는 객체
- 속성(Attribute): 엔티티를 기술하는 성질
속성의 종류
| 종류 | 설명 | 비고 |
|---|---|---|
| 단순 속성(Simple) | 더 이상 나눌 수 없는 원자값 | - |
| 복합 속성(Composite) | 더 작은 구성 요소로 분리 가능 | 정규화 시 제거 |
| 다값 속성(Multi-valued) | 하나의 속성이 여러 값을 가짐 | 정규화 시 제거 |
엔티티 타입과 키
- 엔티티 타입: 같은 속성을 가진 엔티티들의 그룹
- 키 속성: 엔티티 타입 내에서 유일한 값을 가지는 속성
- 복합 속성도 키가 될 수 있음
- 한 엔티티 타입에 여러 키 가능
관계(Relationship)의 제약 조건
기수 비율(Cardinality Ratio)
- 1:1, 1:N, N:1, M:N
참여 제약(Participation Constraint)
- 선택적 참여(옵션): 참여하지 않아도 됨 (Zero)
- 필수 참여: 반드시 참여해야 함 (One or more)
약한 엔티티 타입(Weak Entity Type)
- 키 속성이 없는 엔티티 타입
- 다른 엔티티 타입에 의존적으로 식별됨
- 부분 키(Partial Key): 식별 관계에서 사용되는 구분 속성
- 식별 관계(Identifying Relationship): 약한 엔티티와 의존 엔티티 간의 관계
재귀 관계 (Recursive Relationship)
- 같은 엔티티 타입 사이에서 정의되는 관계 (Self-referencing)
- 각 참여에 대해 역할(Role) 명시 필요
- 예: 직원(EMPLOYEE) 엔티티에서 "관리자-부하직원" 관계
관계 타입의 속성 (Relationship Attributes)
- 관계 자체에도 속성을 부여할 수 있음
- M:N 관계에서 주로 사용됨 ⭐
- 예: 직원-프로젝트 M:N 관계에서 "참여 시간(Hours)" 속성
고차수 관계 (Higher Degree Relationships)
| 차수 | 명칭 |
|---|---|
| 2 | Binary |
| 3 | Ternary |
| n | N-ary |
주의: N-ary relationship ≠ N개의 binary relationship
관계형 모델 (Relational Model)
- 제안자: Edgar Frank Codd
- 집합의 수학적 개념 기반
- 데이터를 행(Row)과 열(Column)의 테이블 형태로 구성
DBMS 언어
DDL (Data Definition Language)
- 데이터베이스 스키마 정의
- DB 관리자, 설계자가 사용
- 내부/외부 스키마(뷰) 정의에도 사용
DML (Data Manipulation Language)
- 데이터 검색(SELECT) 및 업데이트(INSERT, DELETE, UPDATE)
| 종류 | 설명 |
|---|---|
| 고수준/비절차형 | 결과 집합 기반, SQL이 대표적 |
| 저수준/절차형 | 저장된 순서대로 한 레코드씩 처리 |
관련 개념
- DB 기본 개념 - DBMS, 스키마
- 정규화 - 복합/다값 속성 제거
- ER to Relational Mapping - ER → 테이블 변환