[Database] 데이터 모델링
목차
데이터베이스와 현실 세계
데이터 모델의 개념
개체 타입과 관계 타입
E-R 다이어그램과 E-R 모델
제약 조건
객체 지향 데이터 모델
객체 관계 데이터 모델
XML 데이터 모델
데이터베이스와 현실세계
현실 세계 (개체)
- 개체 → 특성 → 값
개념 세계 (개념)
- 개체 타입 → 속성 → 값
컴퓨터 세계 (데이터)
- 레코드 타입 → 필드 → 값
값, 사실 -추상화, 개념적 모델링→ 개념적 구조 -변환, 데이터 모델링→ 논리적 구조 (데이터 모델)
데이터 모델의 개념
Data Model
- Collection of concepts for describing data
Schema
- Description of a particular collection of data, using a given data model
릴레이션의 모임 -> 관계 데이터베이스
관계 데이터 모델
Main Concept : Relation
- Basically a table with rows and columns
- Every relation has a schema, which describes the columns, or fields
데이터 모델에 표시할 요소
구조 (Structure)
- 논리적으로 표현된 개체 타입들 간의 관계
- 데이터 구조 및 정적 성질을 표현
- ex: 집 구조
연산 (Operation)
- 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세
- 데이터베이스를 조작하는 기본 도구
- ex: 가구 넣고 빼고 이동
제약조건 (Constraint)
- 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
- ex: 층간 소음 방지
개체 타입 (Entity Type)
개체 이름과 속성 (Attribute)들로 정의됨
개체 집합 (Entity Set) : 특정 개체 타입에 대한 인스턴스 집합
속성의 종류
- 단순 속성과 복합 속성
- 다중 값 속성
- 저장 속성과 유도 (파생) 속성
- 널 속성
복합 속성 (Composite Attribute)
몇 개의 기본적인 단순 속성들로 분해할 수 있는 속성
ex) 주소
- 사용자가 때로는 복합 속성을 하나의 단위로 사용하고, 때로는 그 부속 속성 값을 참조하는 경우에 유용
- 복합 속성이 항상 전체로만 참조된다면 그것을 다시 부속 속성으로 분해할 필요가 없음
다중 값 속성 (Mutlivalued Attribute)
여러 개의 값을 가지는 속성
ex) 부하직원
- 관계 데이터 모델의 정규화된 릴레이션에서는 다중 값을 가지는 속성을 허용하지 않음
유도(파생) 속성 (Derived Attribute)
다른 속성의 값으로부터 계산된 속성
ex) 주민등록번호로부터 얻어진 나이 / 성적으로부터 계산된 평균 성적 / 원금, 예치기간, 이자율로부터 계산된 이자
- 타원으로 표현함
- 통계 관련 개체인 경우에 이용되며, 일반 개체에서는 많이 사용되지 않음
- 유도 속성이 가지는 업무 로직을 기술하여 데이터의 정합성이 유지되어야 하고, 단순 속성이 생성, 수정, 삭제될 때 유도 속성도 함께 고려해야 됨
널 속성 (Null Attribute)
어떤 개체 인스턴스가 어느 특정 속성에 대한 값을 갖고 있지 않을 때 사용
널 값이 허용되는 경우
1. Not applicable : 찾을 수 없는 경우
ex) 미혼인 사람의 배우자 이름
2. Unknown
- Missing (값이 존재하지만 누락인 경우)
- 학생 개체의 이름이 널인 경우
- Not known (값이 존재하는지 모르는 경우)
- 취미가 있는지 조차도 모르는 경우
관계 타입 (Relationship Type)
전체 참여 (Total Participation) | 부분 참여 (Partial Participation) |
A-B 관계에서 개체 집합 B의 모든 개체가 A-B 관계에 참여 | A-B 관계에서 개체 집합 B의 일부 개체가 A-B 관계에 참여 |
ex) 학과 - 교수 | ex) 과목 - 학생(휴학생 포함) |
관계 타입의 특성
관계의 차수
- 관계로 연결된 엔티티 타입들의 개수를 의미
- 실 세계에서 가장 흔한 관계는 두 개의 엔티티 타입을 연결하는 2진 관계
카디날리티 비율
- 두 개의 엔티티 타입 간 관계에서 참여자의 수를 의미
- 두 개의 엔티티 E1과 E2 타입을 연결하는 2진 관계에서 카디날리티 비율의 종류
- 1:1 - 부부 사이의 배우자 관계
- 1:M - 학생과 지도 교수 관계, 부모와 자식 관계
- N:M - 학생과 수강 과목 관계
E-R 다이어그램
E-R 모델
- 적은 노력으로 쉽게 배울 수 있고, 전문가가 아니어도 이해하기 쉬움
- 자연어보다 좀 더 정형적이고, 구현에 독립적임
- 데이터베이스 설계자들이 최종 사용자들과 의사소통을 하는데 적합
E-R 모델을 기반으로 만들어진 다수의 CASE 도구
- ERWin, Visio, DataArchitect, PowerBuilder 등
- E-R 설계를 자동적으로 Oracle, Sybase 등의 데이터 정의어로 변환하고, 어떤 도구는 XML 로 변환함
- E-R 모델링은 데이터베이스 설계를 위한 그래픽 표기법
Entity
Real-world object distinguishable from other objects
An entity is described using a set of attributes
- Each Entity has a key
- Each attribute has a domain
Relationship
Association among two or more entities
- 관계도 속성을 가질 수 있음
- An n-ary relationship R relates n entity sets E1 … En
- Each relationship in R involves entities
- Same entity set could participate in different relationship sets. (개체 사이의 관계가 하나가 아니어도 됨)
- Same entity set could participate in different roles in same relationship set.
제약 조건
Key Constraints (키 제약 조건)
Each Department has at most one manager,
according to the key constraint on Manages.
-> 화살표로 표현
Participation Constraint (참여 제약 조건)
Every Department have a manager = Total Participation Constraints
전체 참여 표현
-> 굵은 화살표 또는 이중선으로 표현
전체 참여라는 것은 곧
-> Every did value in Departments table must appear in a row of the Manages table
→ a non-null ssn (ssn이 null 값을 가져서는 안 됨)
-> 키 속성 = E-R 다이어그램에 밑줄로 표시
Weak Entities (약한 개체)
Owner entity set and weak entity set must participate in a one-to-many relationship set.
(one owner, many weak entities)
A weak entity can be identified uniquely only by considering the primary key of another (owner) entity.
→ 한 명의 사원에 대해서 부양 가족이 여러 명 있다. 이 때 부양 가족은 한 사원에 의존하며 Weak Entitiy 가 된다.
→ pname(부양가족 중 딸의 이름)은 기본키가 될 수 없다. 다른 사원의 딸 이름과 동일할 수 있기 때문 (pname이 unique 하지 않을수도 있다는 것)
→ pname 은 부분키가 됨 (점선 밑줄)
Q. Primary key of Dependents?
A. {ssn, pname}
약한 개체와 관계, 둘 사이의 링크는 굵은 선으로 표시
Weak entity set must have total participation in identifying relationship set.
pname
- partial key (부분 키) 혹은 구별자
- 점선 밑줄
IS-A Hierarchies
As in C++ or other Programming Languages attributes are inherited.
- If we declare A IS-A B, every A entity is also considered to be a B entity.
- 시간제 사원 IS-A 사원, 계약직 사원 IS-A 사원 → 시간제, 계약직 사원은 사원이 갖는 속성을 상속 받음
Reasons for using IS-A?
→ To add descriptive attributes specific to a subclass
Specialization & Generalization
Top-down design process
사원 —Specialize—> 시간제 사원, 계약직 사원 (세분화)
- IS-A relationship also referred to as superclass-subclass relationship.
Bottom-up design process
시간제 사원, 계약직 사원 —Generalize—> 사원 (일반화)
- Specialization and generalization are simple inversion of each other.
까마귀발 (Crow-feet) 표기법
- o : 0을 의미
- | : 1을 의미
- -E : 이상을 의미
객체지향 데이터 모델
Object-Oriented Language + Database
객체 (Object) : 현실 세계에 존재하는 개체를 추상적으로 표현한 것
객체 식별자 (OID : Object Identifier)
- 시스템 전체에서 유일하게 식별되며 객체에 접근하는 수단으로 이용
속성 (Attribute)
- 사용자가 정의한 클래스만 아니라 해당 클래스의 하위 클래스도 도메인으로 정의할 수 있음
메서드 (Method)
- 객체에 수행할 수 있는 연산 (검색, 추가, 삭제, 수정)
클래스 (Class)
- 속성과 메서드를 공유하는 유사한 성질의 객체들을 하나로 그룹화한 것
클래스 계층 (Class Hierarchy)
- 상위 클래스와 하위 클래스 사이에 IS-A 관계가 성립
상속 (Inheritance)
상위 클래스의 속성과 메서드를 모든 하위 클래스에 물려주는 개념
단일 상속
단 한 개의 상위 클래스로부터 속성과 메서드를 상속받는 것
다중 상속
여러 개의 상위 클래스로부터 속성과 메서드를 상속받는 것
복합 개체 (Composite Object)
시스템에서 기본으로 제공하지 않는 사용자 정의 클래스(팀)를 도메인으로 하는 속성(소속팀)을 가진 객체
- 속성 값으로 다른 객체를 참조하며 IS-PART-OF 관계가 성립
-[ : IS-PART-OF 관계
-- : IS-A 관계
객체지향 데이터베이스
관계 DB와 달리 데이터 모델과 질의어는 표준화되지 못함
널리 사용되지 못하고 특수한 몇몇 분야에서만 사용
객체관계 DB | 객체지향 DB | |
질의 대상 | 릴레이션 | 클래스 |
질의 결과 | 릴레이션 | 클래스에 속하는 객체 집합 |
관계 데이터베이스에 기반을 두고 사용자가 더 풍부한 데이터 타입을 추가할 수 있도록 하는데 목적 | 객체지향 프로그래밍 개념에 기반을 두고 데이터베이스의 기능을 추가하는데 목적 |
객체관계 데이터 모델
Relational Data Model + Object Orientation
→ Constructs to deal with added data types
- Allow attributes of tuples to have complex types
- Including non-atomic values such as nested relations
- Provide upward compatibility with existing relational languages
XML 데이터 모델
XML (Extensible Markup Language)
- Defined by the WWW Consortium (W3C)
- Originally intended as a document markup language not a database language
- The ability to specify new tags, and to create nested tag structures made XML a great way to exchange data, not just documents
→ XML 데이터 모델
- A wide variety of tools is available for parsing, browsing and querying XML documents/data.
데이터베이스 자동화 도구
DB 모델링
DB 표준
DB 품질
DB 성능 및 튜닝
DB 모델링
논리, 물리 데이터 모델 설계 무결(적합성) 검증
ex) Erwin, DA#
- 릴레이션 관계성 설정 및 적합성
- 키 (유일, 참조 키) 설계의 적정성
- 성능을 고려한 데이터베이스 설계 여부
DB 표준
데이터 표준 체계 수립 및 반영 여부 점검
ex) DBware, RDBChecker, Qaudit-DB
- 메타데이터 관리 체계 점검
- 표준 단어, 도메인, 용어 반영 여부
- 표준 코드 설계 및 적용 여부
- 데이터 사전 표준 준수, 칼럼 적합성, 일치성 점검
DB 품질
데이터 퉁계적 분석 및 오류 추적
ex) spd+, SDQ, DQAnalyzer
- 소스 데이터 상태 통계적 분석
- 데이터 도메인 별 품질 상태 및 품질 오류 데이터 추출 Reporting
DB 성능 및 튜닝
데이터베이스 성능 향상
ex) Orange
- DB 오브젝트 분석 및 악성 SQL 도출
- 튜닝 점검