Computer Science/Database Systems
[DB] 제2장 데이터베이스 모델링
iseop
2022. 3. 2. 21:32
데이터베이스 모델링의 이해
데이터베이스 모델링 단계
DBMS 독립적 | 1. 사용자 요구사항 분석 |
➡️요구사항 정의서 도출 | |
2. 개념적 데이터 모델링 | |
➡️ER 모델 도출 | |
↓ | 3. 논리적 데이터 모델링 |
DBMS 의존적 | ➡️관계형 모델 도출 |
4. 물리적 데이터 모델링 | |
➡️물리적 세부사항 도출 |
1. 사용자 요구사항 분석
문서(RFP) 교환/인터뷰 등을 통하여 실제 업무에서 사용되는 데이터의 종류와 특징을 파악한다.
- 요구사항 도출 단계: 요구사항 명세서 도출
- 요구사항 분석 단계: 요구사항 명세서보다 더 상세화된 요구사항 정의서 도출
- 요구사항 기록 단계: 요구사항을 지속 반영하고 문서화한다.
2. 개념적 데이터 모델링
데이터 구조와 관계를 공통된 표기법(ER 모델)을 사용하여 추상화한다.
개체-관계 모델과 ER 다이어그램
- 1976년 P. Chen 박사가 제안한 데이터 모델링 도구이다.
- ER 모델의 구성 요소
- 개체 집합: 같은 속성을 공유하는 개체들의 집합, 이분 사각형으로 표현
- 각 개체는 속성들의 집합으로 표현된다.
- 각 개체는 속성에 대한 값을 갖는다.
- 속성에는 속성이 가질 수 있는 모든 가능한 값들의 범위인 도메인이 존재한다.
- 관계 집합: 같은 유형의 관계 인스턴스들의 집합, 마름모로 표현
- 개체간의 특정 관계를 관계 인스턴스라고 한다.
- 한 개체 집합이 다른 개체 집합과 관계를 갖는 것을 관계 집합에 참가한다고 한다.
- 관계 집합에 참여하는 개체 집합의 수를 차수라고 한다.
- 동일한 개체 집합이 재귀적으로 다른 역할로서 참가하는 재귀적 관계 집합에는 역할을 명시해야 한다.
- 속성: 개체를 구체적으로 설명하는 특성
- 단순 속성: 더 작은 속성으로 나눌 수 없는 속성(학번, 나이 등)
- 복합 속성: 더 작은 속성으로 나눌 수 있는 속성(생년월일 등), 들여쓰기로 표현
- 단일값 속성: 하나의 값만을 갖는 속성(학번, 나이 등)
- 다중값 속성: 여러개의 값을 가질 수 있는 속성(계좌번호, 전화번호 등), 중괄호로 표현
- 유도 속성: 다른 속성값으로부터 유도될 수 있는 속성(나이 등), 괄호로 표현
- 저장 속성: 다른 속성값으로부터 유도될 수 없는 속성
- 제약조건
- 맵핑 카디널리티(사상수): 관계 집합에 참가한 개체 집합들의 각 개체가 맺을 수 있는 관계에 대한 제약
- 1:1 관계: 양 쪽을 화살표로 표현
- 1:N 관계: 1쪽을 화살표로 표현
- N:1 관계: 1쪽을 화살표로 표현
- M:N 관계: 양 쪽을 실선으로 표현
- 참가 제약조건
- 부분적 참가: 실선
- 전체적 참가: 이중 실선
- 키 속성
- 키 속성에 밑줄을 그어 표현
- 맵핑 카디널리티(사상수): 관계 집합에 참가한 개체 집합들의 각 개체가 맺을 수 있는 관계에 대한 제약
- 강한 개체와 약한 개체
- 다른 개체의 도움 없이 독자적으로 존재할 수 없는 개체를 약한 개체라고 한다.
- 이 때, 도움을 주는 개체가 강한 개체이자 식별 개체가 된다.
- 약한 개체 집합은 일대다 관계를 통해 강한 개체 집합과 연결되어야 한다.
- 약한 개체 집합의 키는 강한 개체 집합의 키와 결합하여 구성되며, 점선 밑줄을 그어 표현한다.
- 개체 집합: 같은 속성을 공유하는 개체들의 집합, 이분 사각형으로 표현
3. 논리적 데이터 모델링
데이터 구조와 관계가 표현된 개념적 데이터 모델을 특정 DBMS의 데이터 모델인 스키마로 변환한다.
논리적 데이터 모델에는 관계형, 객체지향형, 객체-관계형, Key-Value, Document 모델 등이 있다.
일반적으로 관계형 모델을 사용한다.
관계형 모델
- 컬럼, 컬럼의 순서, 도메인, 릴레이션의 이름을 포함하여 릴레이션 스키마라고 한다.
- 어떤 한 시점의 릴레이션을 릴레이션 인스턴스라고 한다.
- 릴레이션에서 가로행을 레코드, 투플이라고 한다. 레코드의 개수를 카디널리티라고 한다.
- 릴레이션에서 세로열을 컬럼, 필드라고 한다. 컬럼의 개수를 차수라고 한다.
- 릴레이션의 특징
- 레코드의 유일성: 중복된 레코드는 존재 불가하며, 하나의 키 값으로 레코드를 유일하게 식별할 수 있다.
- 레코드의 무순서성: 레코드에는 순서가 없다.
- 컬럼의 무순서성: 컬럼에는 순서가 없다.
- 컬럼값의 원자성: 각 컬럼은 더 작은 의미로 분해가 불가능하다.
- 키의 특징
- 한 릴레이션에서 키에 포함되는 컬럼을 주 속성이라하고, 나머지를 비 주 속성이라 한다.
- 유일성: 키 컬럼의 값은 중복될 수 없다.
- 최소성: 키는 최소한의 컬럼으로만 구성된다. 즉, 여러 컬럼으로 구성된 키에서 한 컬럼만 제거하여도 유일성이 파괴된다.
- 슈퍼키: 레코드를 구별할 수 있게 하는 컬럼 집합
- 후보키: 슈퍼키 중에서 최소한의 컬럼으로 구성된 컬럼 집합
- 기본키: 레코드 구분을 위해 지정한 후보키
- 외래키:
- 제약 조건
- 영역 제약조건: 특정 컬럼이 가질 수 있는 값(도메인)에 대한 제약
- 키 제약조건: 특정 컬럼의 값이 레코드를 식별하는 데 사용될 수 있어야 한다는 조건
- 개체 무결성 제약조건: 기본키 값으로 널값을 저장할 수 없다.
- 참조 무결성 제약조건: 한 릴레이션의 레코드라 다른 릴레이션의 레코드를 참조하려면 반드시 참조죄는 레코드가 해당 릴레이션 내에 존재해야 하는 조건
ERD를 관계형 모델로 변환하는 과정
- 개체 집합 ➡️ 릴레이션으로 변환
- 약한 개체 집합 ➡️ 약한 개체 집합의 기본키를 강한 개체 집합의 키와 약한 개체 집합의 부분 키를 묶어서 표현
- 일대일 관계 ➡️ 다른 릴레이션의 기본키를 참조하는 외래키 컬럼을 한 릴레이션에 추가
- 일대다/다대일 관계 ➡️ 1측 릴레이션의 기본키를 참조하는 외래키 컬럼을 N측 릴레이션에 추가
- 다대다 관계 ➡️ 두 릴레이션의 기본키를 참조하는 외래키 컬럼들을 갖는 관계 릴레이션을 추가 생성
- 다중값 속성 ➡️ 기존 릴레이션의 기본키와 다중값 속성을 합한 키를 기본키로 하는 릴레이션을 추가 생성
- 관계 집합의 속성 ➡️ 각 속성을 외래키가 위치한 릴레이션의 컬럼으로 삽입
- n항 관계 ➡️ n개 이상의 개체 집합이 참여한 관계에 대하여 각 릴레이션의 키들로 구성되는 관계 릴레이션을 추가 생성
관계 대수
질의에 대한 처리 과정을 단계적으로 표현하는 절차적 언어이다.
주어진 SQL에 대한 실행 계획 또는 처리 절차를 나타하기 위해 사용한다.
- 기본 연산자
- 셀렉트(σ): 조건을 만족하는 레코드만 선택
- 프로젝트(Π): 명시한 컬럼만 표시
- 집합 연산자: 합집합(∪), 차집합(-), 교집합(∩)
- 집합 연산자는 호환 가능한 릴레이션 간에만 사용 가능하다.
- 리네임(ρ): 관계대수에 새 이름 부여
- 카티션 프로덕트(곱집합)(×): 두 릴레이션의 레코드 간 모든 조합을 취하여 결합한 레코드를 출력
- 조인(⋈): 조인 조건을 만족하는 레코드 조합만 출력
- 확장 연산자
- 자연 조인 연산자(⋈n)
- 두 릴레이션에 대한 카티션 프로덕트 생성
- 카티션 프로덕트 결과에서 이름이 동일한 컬럼의 값이 서로 일치하는 레코드만 선택
- 중복되는 컬럼 중 하나를 제거한 결과를 출력
- 할당 연산자(←): 관계 대수식의 결과를 임시 변수에 저장
- 집계 함수
- sum: 합계
- avg: 평균
- count: 개수
- max: 최댓값
- min: 최솟값
- 자연 조인 연산자(⋈n)