데이터 모델링
데이터 모델링의 정의
- 현실 세계 데이터 변환 과정
- 개념적 및 논리적 모델링 포함
데이터 모델링 도구
- 개념적 및 논리적 데이터 모델 생성
- 데이터 구조, 연산, 제약조건 고려하여 모델 작성
개체 관계 모델
-
개체 (Entity): 저장할 만한 가치가 있는 중요 데이터를 가진 대상
- 개체 타입: 동일한 속성 및 구조를 갖는 개체들의 집합
- 개체 인스턴스: 개체 타입의 개별 구성원, 각각의 실체
- 개체 집합: 동일한 개체 타입에 속하는 개체 인스턴스의 모임
-
속성 (Attribute): 개체의 고유한 특성을 나타내는 요소
- 단일 값 속성: 개체의 속성이 하나의 값을 가지는 경우
- 다중값 속성: 개체의 속성이 여러 개의 값을 가지는 경우
- 단순 속성: 더 이상 세분화할 수 없는 기본 속성
- 복합속성: 여러 개의 단순 속성으로 구성된 속성
- 유도 속성: 다른 속성에서 파생되는 속성, 직접 저장되지 않고 필요할 때 계산
- 널 속성: 값을 가지지 않거나 알려지지 않은 값을 가지는 속성
-
키 속성 (Key Attribute): 각 개체 인스턴스를 식별하는 데 사용되는 속성으로, 모든 개체 인스턴스의 키 속성 값이 서로 다르다.
관계 (Relationship)
- 개체와 개체 사이의 의미 있는 연결
- 관계 타입: 동일한 속성 및 구조를 갖는 관계들의 집합
- 관계 인스턴스: 개별 관계를 나타냄
- 관계 속성: 관계의 고유한 특성을 나타내는 요소 (예: 구매일자, 결제방식)
- 다이어그램에서 마름모로 표현
관계의 유형
- 이항 관계: 두 개체 사이의 관계
- 삼항 관계: 세 개체 사이의 관계
- 순환 관계: 같은 개체 타입 내의 개체들 사이의 관계
매핑 카디널리티
- 일대일 관계: 하나의 개체 인스턴스가 다른 개체 인스턴스와 한 번만 연결
- 일대다 관계: 하나의 개체 인스턴스가 여러 개체의 인스턴스와 연결
- 다대다 관계: 여러 개체 인스턴스가 서로 여러 번 연결될 수 있음
관계 참여 특성
- 필수적 참여 (전체 참여): 개체가 관계에 반드시 참여
- 선택적 참여 (부분 참여): 개체가 관계에 참여하지 않을 수 있음
관계의 종속성
- 존재 종속: 개체 B가 개체 A의 존재 여부에 의존
- 약한 개체: 종속된 개체
- 오너 개체: 다른 개체의 존재를 결정하는 개체
- 구별자 (부분키): 약한 개체를 구별하는 속성
- 자신만의 속성으로 식별이 어려워 오너개체의 키 포함
논리적 데이터 모델의 종류:
- 계층 데이터 모델: 트리 형태의 구조를 가진 데이터 모델, 상위 노드와 하위 노드 간의 일대다 관계 표현
- 네트워크 데이터 모델: 그래프 또는 네트워크 형태의 구조를 가진 데이터 모델, 노드 간에 다대다 관계 표현
- 관계 데이터 모델: 테이블 형태의 구조를 사용하여 데이터를 표현, 키를 사용하여 데이터 간의 연결을 관리하는 데이터 모델
- 객체-관계 데이터 모델: 객체 지향 프로그래밍의 개념을 데이터 모델에 도입한 모델, 객체와 클래스를 사용하여 데이터를 표현, 상속과 다형성 등의 객체 지향 기능 제공
관계 데이터 모델
관계 데이터 모델 (Relational Data Model)
- 데이터를 2차원 테이블 형태인 릴레이션에 저장하는 데이터 모델
- 데이터 간의 관계를 표현하기 용이함
속성 (Attribute)
- 릴레이션의 열로, 개체의 특성을 나타냄
- 예: 학생 릴레이션에서 '이름', '학번', '학과' 등
튜플 (Tuple)
- 릴레이션의 행으로, 개체의 인스턴스를 나타냄
- 예: 학생 릴레이션에서 '홍길동', '20190001', '컴퓨터공학과'를 가진 한 행
도메인 (Domain)
- 속성이 가질 수 있는 값의 범위 또는 집합
- 예: '성별' 속성의 도메인은 {'남성', '여성'}
널 값 (NULL)
- 속성 값이 없거나 알 수 없는 경우 사용하는 특별한 값
- 예: 전화번호가 없는 학생의 전화번호 속성에 NULL 값 할당
차수 (Degree)
- 릴레이션에서 속성의 전체 개수
- 예: 학생 릴레이션의 속성이 '이름', '학번', '학과' 일 경우 차수는 3
카디널리티 (Cardinality)
- 릴레이션의 튜플 전체 개수
- 예: 학생 릴레이션에 100명의 학생 튜플이 있다면 카디널리티는 100
릴레이션 스키마 (Relation Schema)
- 릴레이션의 논리적 구조로, 릴레이션 이름과 포함된 모든 속성의 이름으로 정의됨
- 예: 학생(이름, 학번, 학과)
릴레이션 인스턴스 (Relation Instance)
- 릴레이션에 존재하는 튜플들의 집합
- 시간에 따라 변할 수 있음
데이터베이스 스키마 (Database Schema)
- 데이터베이스 내의 모든 릴레이션들의 스키마를 모아둔 것
- 데이터베이스의 구조를 정의함
데이터베이스 인스턴스 (Database Instance)
- 저장된 데이터 내용의 전체 집합
- 시간에 따라 변할 수 있음
릴레이션의 특성
- 튜플의 유일성: 하나의 릴레이션에 동일한 튜플이 존재할 수 없음
- 튜플의 무순서: 릴레이션 내 튜플의 순서는 무의미함
- 속성의 무순서: 릴레이션 내 속성의 순서는 무의미함
- 속성의 원자성: 속성 값으로 원자 값만 사용할 수 있음 (더 이상 분해할 수 없는 값)
키의 종류
- 수퍼키 (Superkey): 유일성을 만족하는 속성 또는 속성들의 집합
- 후보키 (Candidate Key): 유일성과 최소성을 만족하는 속성 또는 속성들의 집합
- 기본키 (Primary Key): 후보키 중 선택된 하나의 키로, 튜플을 유일하게 구별하는 역할
- 대체키 (Alternate Key): 기본키로 선택되지 못한 후보키
- 외래키 (Foreign Key): 다른 릴레이션의 기본키를 참조하는 속성 또는 속성 집합
관계 데이터 모델의 제약
- 무결성 제약조건: 데이터의 정확성과 일관성을 보장하기 위한 제약 사항
- 개체 무결성 제약조건: 기본키를 구성하는 모든 속성은 널 값을 가질 수 없음
- 참조 무결성 제약조건: 외래키는 참조할 수 없는 값을 가질 수 없음 (참조하는 기본키 값과 일치해야 함)
관계 데이터 연산
집합 연산
합집합 (Union, ∪)
- 두 릴레이션의 모든 튜플을 합친 결과 반환
- 예: R∪S
교집합 (Intersection, ∩)
- 두 릴레이션에서 공통된 튜플만을 반환
- 예: R∩S
차집합 (Difference, -)
- 한 릴레이션에서 다른 릴레이션의 튜플을 제외한 결과 반환
- 예: R−S
관계 대수 연산
선택 (Selection, σ)
- 주어진 조건을 만족하는 튜플 반환
- 예: σage>30(R)
프로젝션 (Projection, π)
- 주어진 속성을 갖는 튜플의 부분 집합 반환
- 예: πname,age(R)
카티션 곱 (Cartesian Product, ×)
- 두 릴레이션의 모든 튜플 조합 반환
- 예: R×S
조인 (Join, ⨝)
- 두 릴레이션을 결합하여, 주어진 조건을 만족하는 튜플들의 집합 반환
내부 조인 (Inner Join)
- 두 릴레이션에서 조건을 만족하는 튜플만을 반환
- 예: R⨝R.id=S.idS
외부 조인 (Outer Join)