데이터베이스 설계 | 11. 데이터 모델링
1. 데이터베이스와 현실 설계


2. 데이터 모델의 개념

- 데이터 모델 : 데이터를 설명하기 위한 개념 모음
- 스키마 : 주어진 데이터 모델을 사용하여 특정 데이터 컬렉션에 대한 설명
- 릴레이션의 모임 → 관계 데이터 베이스
- 관계 데이터 모델
- 릴레이션 : 기본적으로 행과 열이 있는 테이블, 모든 관계에는 열 또는 필드를 설명하는 스키마가 있다
- 데이터 모델에 표시할 요소
- 구조 : 논리적으로 표현된 개체 타입들 간의 관계, 데이터 구조 및 정적 성질을 표현
- 연산 : 데이터 베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세, 데이터베이스를 조작하는 기본 도구
- 제약 조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
3. 개체 타입과 관계 타입
- 개체 타입(Entity Type) : 개체 이름과 속성(애트리뷰트)들로 정의됨
- 개체 집합(Entity Set) : 특정 개체 타입에 대한 인스턴스 집합
- 속성(애트리뷰트)의 종류
- 단순 속성과 복합 속성
- 복합 속성(Composite Attribute)
- 몇 개의 기본적인 단순 속성들로 분해할 수 있는 속성
- 사용자가 때로는 복합 속성을 하나의 단위로 사용하고, 때로는 그 부속 속성 값을 참조하는 경우에 유용
- 복합 속성이 항상 전체로만 참조된다면 그것을 다시 부속 속성으로 분해할 필요 X
- 다중 값 속성(Multivalued Attribute) : 관계 데이터 모델의 정규화된 릴레이션에서는 다중 값을 가지는 속성 허용 X
- 저장 속성과 유도(파생) 속성
- 유도(파생) 속성(Derived Attribute) : 다른 속성의 값으로부터 계산된 속성
- 통계 관련 개체 경우에 이용되며, 일반 개체에서는 많이 사용 X
- 유도 속성이 가지는 업무 로직을 기술하여 데이터의 정합성이 유지되어야 함
- 단순 속성이 생성, 수정, 삭제될 때 유도 속성도 함께 고려해야 됨
- 점선 타원으로 표현
- 유도(파생) 속성(Derived Attribute) : 다른 속성의 값으로부터 계산된 속성
- 널 속성(Null Attribute) : 어떤 개체 인스턴스가 어느 특정 속성에 대한 값을 갖고 있지 않을 때 사용
- 기본 키는 널 값 X ⇒ 개체 무결성
- 널 값이 허용되는 경우
- Not applicable
- Unknown
- Missing : 값이 존재하지만 누락인 경우
- Not Known : 값이 존재하는지 모르는 경우
- 복합 속성(Composite Attribute)
- 단순 속성과 복합 속성
4. E-R 다이어그램과 E-R 모델
-
관계 타입(Relationship Type)
- 전체 참여(Total Participation) : A-B 관계에서 개체 집합 B의 모든 개체가 A-B 관계에 참여
- 부분 참여(Partial Participation) : A-B 관계에서 개체 집합 B의 일부 개체가 A-B 관계에 참여
- 특성 : 관계의 차수는 관계로 연결된 엔터티 타입들의 개수를 의미, 실세계에서 가장 흔한 관계는 2진 관계
- 카디날리티 비율은 두 개의 엔터티 타입 간 관계에서 참여자의 수를 의미(1:1, 1:M, N:M)
-
E-R 다이어그램
-
레이블(Label) : 관계의 사상, 원소 수를 표현(1:1, 1:M, N:M)

-
-
E-R 모델 : 적은 노력으로 쉽게 배울 수 있고, 전문가가 아니어도 이해하기 쉬움
- 자연어 보다 좀 더 정형적이고, 구현에 독립적
- E-R 모델링은 데이터베이스 설계를 위한 그래픽 표기법
-
Entity

- 다른 개체와 구별할 수 있는 실제 개체
- 개체는 일련의 속성을 사용하여 설명
- 각 개체에는 키가 있고, 각 속성에는 도메인이 있다
-
Relationship
- 두 개 이상의 엔티티 간의 연결, 관계도 속성을 가질 수 있다
- 동일한 엔티티 집합이 다른 관계 집합에 참여할 수 있다
5. 제약조건
-
Key Constraints (부분 참여, 화살표 →)
-
Participation Constraints (Total, 전체 참여, 굵은 화살표 ⮕ 또는 이중 선 ⇒)
-
Weak Entities (partial key(부분 키 혹은 구별자), 점선으로 표시)
- 약한 엔터티는 다른(소유자) 엔터티의 기본 키를 고려해야만 고유하게 식별할 수 있다
- 약한 개체와 관계, 둘 사이의 링크는 굵은 선으로 표시
- 약한 엔티티 집합은 관계 집합을 식별하는 데 전체 참여가 있어야 한다
-
IS-A Hierarchies (계층 구조, superclass- subclass relationship)
- AIS-AB로 선언하면 모든 A 엔티티도 B 엔티티로 간주
- 서브 클래스에 특정한 설명 속성을 추가
-
Specialization(위에서 아래) & Generalization(아래에서 위)
-
까마귀 발(Crow-feet) 표기법

6.객체 지향 데이터 모델
-
객체(Object) : 현실 세계에 존재하는 개체를 추상적으로 표현한 것
-
객체 식별자(OID : ObjectIdentifier) : 시스템 전체에서 유일하게 식별되며 객체에 접근하는 수단으로 이용
-
속성(Attribute) : 사용자가 정의한 클래스만 아니라 해당 클래스의 하위 클래스도 도메인으로 정의할 수 있음
-
메서드(Method) : 객체에 수행할 수 있는 연산(검색/추가/삭제/수정)
-
클래스(Class) : 속성과 메서드를 공유하는 유사한 성질의 객체들을 하나로 그룹화한 것
-
클래스계층(ClassHierarchy) : 상위 클래스와 하위 클래스 사이에 IS-A 관계가 성립
-
상속(Inheritance) : 상위 클래스의 속성과 메서드를 모든 하위클래스에 물려주는 개념
- 단일 상속 : 단 한 개의 상위 클래스로부터 속성과 메서드를 상속받는 것
- 다중 상속 : 여러 개의 상위 클래스로부터 속성과 메서드를 상속받는 것
-
복합 객체(CompositeObject)

- 시스템에서 기본으로 제공하지 않는 사용자 정의 클래스(팀)를 도메인으로 하는 속성(소속팀)을 가진 객체
- 속성 값으로 다른 객체를 참조하며 IS-PART-OF 관계가 성립
-
객체 지향 DB
- 관계 DB(질의대상, 질의결과 ⇒ 릴레이션)와 달리 데이터 모델과 질의어는 표준화되지 X
- 널리 사용되지 못하고 특수한 몇 몇 분야에서만 사용
- 질의대상(클래스), 질의결과(클래스에속하는객체집합)
- 객체 지향 프로그래밍 개념에 기반을 두고 데이터베이스의 기능을 추가하는 데 목적
7.객체 관계 데이터 모델
- 추가된 데이터 유형을 처리하는 구조체
- 튜플의 속성이 복잡한 유형을 가질 수 있도록 허용
- 중첩 관계와 같은 비 원자적 값 포함
- 기존 관계형 언어와의 상위 호환성 제공
- 객체 관계 DB : 관계 데이터베이스에 기반을 두고 사용자가 더 풍부한 데이터 타입을 추가할 수 있도록 하는 데 목적
8. XML 데이터 모델
- XML
- 원래는 문서 마크업 언어로 고안
- 새로운 태그를 지정하고 중첩된 태그 구조를 만들 수 있는 기능 덕분에 문서 뿐 아니라 데이터를 교환하는 데도 훌륭한 수단
- XML 데이터 모델 : XML 문서/데이터의 구문 분석, 검색, 쿼리를 위한 다양한 도구를 사용
- 데이터베이스 자동화 도구
- DB 모델링 : 논리∙물리 데이터 모델 설계 무결(적합성) 검증(ex.Erwin,DA#)
- 릴레이션 관계성 설정 및 적합성
- 키(유일,참조키) 설계의 적정성
- 성능을 고려한 데이터베이스 설계 여부
- DB표준 : 데이터 표준 체계 수립 및 반영 여부 점검(ex. DBware, RDB Checker, Qaudit-DB®)
- 메타 데이터 관리 체계 점검
- 표준 단어∙도메인∙용어 반영 여부
- 표준 코드 설계 및 적용 여부
- 데이터 사전 표준 준수, 칼럼 정합성∙일치성 점검
- DB 품질 : 데이터 통계적 분석 및 오류 추적(ex.spd+, SDQ, DQAnalyzer®)
- 소스 데이터 상태 통계적 분석
- 데이터 도메인 별 품질 상태 및 품질 오류 데이터 추출 reporting
- DB 성능 및 튜닝 : 데이터베이스 성능 향상(ex. Orange)
- DB 오브젝트 분석 및 악성 SQL 도출, 튜닝 점검
- DB 모델링 : 논리∙물리 데이터 모델 설계 무결(적합성) 검증(ex.Erwin,DA#)