데이터 모델의 이해
1. 모델링
모델링
: 현실세계를 대상의로 일종의 모델(모형)을 만드는 것.
약속된 표기법에 따라 도식화 해야 함. 업무의 흐름을 가시화하고 명세화하기 위함(업무 형상화)
또한 모델링은 추상화를 기본으로 함
필요한 수준에서 데이터를 추상화하여 단순명료하게 표현하는 것이 중요
- 데이터 모델링 : 정보시스템을 구축하기 위해 데이터베이스를 설계하는 것
특징
- 추상화 : 대상의 주요 특징을 추출하여 일정한 형식으로 표현
- 단순화 : 현실세계를 그대로 표현하지 않고 단순하게 표현
- 명확화 : 모델링 결과를 보는 사람이 같은 해석을 할 수 있도록 모홈함이 없게 기술
따라서 데이터 모델링이란 일정한 표기법을 사용하여 대상이 되는 데이터를 추상화, 단순화, 명확화하여 표현하는 것
유의사항
- 중복 최소화 : 같은 정보 중복하여 저장하지 않음
- 비유연성 최소화 : 데이터 정의와 데이터 사용 프로세스 분리
- 비일관성 최소화 : 연관관계를 명확하게 정의하여 데이터가 일관성있게 유지되어야 함
모델링 관점
- 데이터 관점
: 데이터에 집중. 정적분석, 구조분석 등을 기반으로 함
- 프로세스 관점
: 업무 흐름에 집중. 동적분석, 도메인분석 등을 기반으로 함
- 데이터와 프로세스의 상관 관점
: 데이터와 프로세스가 서로 어떻게 관계를 맺고 영향을 주고받는지. CRUD 분석을 기반으로 함
모델링 단계
- 개념적 데이터 모델링
: 가장 높은 추상화 레벨. 업무와 개념 중심으로 포괄적인 수준에서 모델링. 엔터티와 속성 도출(EA 수립)
- 논리적 데이터 모델링
: 데이터 모델의 키, 속성, 관계 등을 표현. 서로 다른 DBMS에 적용 가능한 수준의 추상화 단계. 중복 데이터 최소화, 식별자 도출 및 관계 정의.
- 물리적 데이터 모델링
: 특정 DBMS에 맞추어 구현. 가장 낮은 수준의 추상화 레벨. 테이블, 인덱스, 함수 등을 생성.
ANSI-SPARC 3단계 스키마 구조
데이터 독립성을 보장하기 위한 설계방법
-
외부 스키마
: 사용자 관점. 사용자 또는 애블리케이션(응용 프로그래머)이 바라보는 데이터베이스 스키마 정의. 다중 사용자 뷰
-
개념 스키마
: 설계자 관점. 몯느 사용자가 바라보는 데이터베이스 스키마를 통합. 통합된 뷰
-
내부 스키마
: 개발자 관점(DBMS의 SQL문을 작성하는). 디스크나 메모리 상의 물리적, 실질적 저장구조. 물리적 뷰
논리적 데이터 독립성
: 외부 스키마와 개념 스키마 간의 독립성
물리적 데이터 독립성
: 개념 스키마와 내부 스키마 간의 독립성
ERD (Entity Relationship Diagram)
데이터 모델링에 대한 문서화 방법 (여러가지 표기법이 있지만 해당 책에서는 IE 표기법 사용)
- 엔터티 : 박스로 표현. 엔터티 이름은 박스 상단에 표시.
- 속성 : 박스 안에 리스트로 표현. 주식별자와 일반 속성은 칸막이로 구분
- 관계 : 박스를 연결한 선으로 표현. 식별자 관계는 실선, 비식별자 관계는 점선.
- 카디널리티 : O은 0, 세로 실선은 1, 까치발 모양은 다수(2 이상)를 의미.
작성순서
엔터티 도출 - 엔터티 배치(중요한 엔터티는 왼쪽 상단) - 관계 설정 - 관계명 기술 - 참여도 기술 - 필수,선택 여부 기술
2. 엔터티 (Entity)
엔터티
데이터베이스 구성요소 중 독립적으로 식별 가능한 객체
속성이라는 하위요소를 가짐
특징
- 업무에 필요로 하고 관리하고자 하는 정보
- 유일한 식별자 가짐
- 영속적으로 존재하는 인스턴스가 두 개 이상인 집합
- 하위요소로 반드시 속성을 가짐
- 다른 엔터티와 한 개 이상의 관계를 가짐(통계성 엔터티나 코드성 엔터티의 경우 관계 생략)
분류
(발생시점/상속관계에 따라)
- 기본 엔터티 : 고유한 주식별자를 가지는 독립적으로 생성되는 엔터티
- 중심 엔터티 : 주식별자를 상속받아 생성되어 업무의 중심 역할을 하는 엔터티
- 행위 엔터티 : 두 개 이상의 엔터티를 상속받아 생성되는 엔터티
(물리적 형태 여부에 따라)
- 유형 엔터티 : 물리적 형태가 존재
- 개념 엔터티 : 개념적으로 정의
- 사건 엔터티 : 업무 수행중 발생하는 행위나 이벤트
교차 엔터티
: M:N 관계를 해소하기 위해 만들어진 엔터티
3. 속성 (Attribute)
속성
엔터티에 대해 자세하고 구체적인 정보를 나타내는 엔터티의 하위요소
속성은 자신이 가질 수 있는 속성값의 집합이라고 할 수 있음
하나의 엔터티 인스턴스에서 각각의 속성은 한 개의 속성값만을 가져야 함
만약 하나 이상의 속성값을 가지는 경우에 1차 정규화를 수행하여 한 개의 속성값만 갖도록 해야 함.
- 한 개의 엔터티는 두 개 이상의 인스턴스를 가짐
- 한 개의 엔터티는 두 개 이상의 속성을 가짐
- 한 개의 속성은 한 개의 속성값만 가짐
분류
(속성의 특성에 따라)
- 기본 속성
: 엔터티가 본래 가지고 있어야 하는 속성
- 설계 속성
: 본래 가지는 속성은 아니지만 설계 시 필요하다고 판단되어 도출된 속성
- 파생 속성
: 다른 속성으로부터 계산되거나 특정 규칙에 따라 변형되어 만들어진 속성
(구성방식에 따라)
- PK(Primary Key, 기본키) 속성
: 엔터티에서 인스턴스를 유일하게 식별할 수 있는 속성
- FK(Foreign Key, 외래키) 속성
: 관계를 통해 다른 엔터티의 속성을 가져와 포함시킨 속성
- 일반 속성
: PK나 FK가 아닌 나머지 일반 속성
도메인
속성이 가질 수 있는 값의 범위(값의 데이터 타입과 크기)를 정의한 것
4. 관계
관계
엔터티 간 맺고 있는 연관성
존재적 관계와 행위적 관계로 나눌 수 있으나 EDR에서는 둘을 구분하지 않음
- 존재적 관계
: 일종의 소속관계. 존재 자체로 서로 연관성을 갖는 관계
- 행위적 관계
: 특정 행위나 이벤트를 일으킬 경우에 연관성이 발생하는 관계
연관관계 : 존재 자체로 연관성을 가짐
의존관계 : 특정 행위를 할 때만 연관성을 가짐
표기법
- 관계명 (Membership)
: 관계의 이름
- 관계차수 (Cardinality)
: 관계를 맺는 엔터티 인스턴스의 차수. 1:1, 1:M, M:N
- 관계선택사양 (Optionalty)
: 필수적 관계인지 선택적 관계인지 (null 가능 여부)
선택적 관계인 경우 까치발 기호에 O을 붙임
5. 식별자
식별자
엔터티 인스턴스를 유일하게 구별하는 속성
해당 인스턴스의 대표 속성
주식별자
해당 엔터티 인스턴스를 유일하게 구별해주는 식별자로 PK에 있는 속성
유일성, 최소성, 불변성, 존재성을 만족해야 함.
- 유일성 : 인스턴스를 유일하게 구별
- 최소성 : 유일성을 보장하면서 최소 개수의 속성
- 불변성 : 최초 부여된 값이 변경되지 않고 유지
- 존재성 : 반드시 값을 가져야 함 (null 안됨)
분류
(대표성 여부)
- 주식별자
- 보조식별자
: 해당 엔터티를 유일하게 구별할 수 있는 식별자이기는 하나 대표성을 가지지 못함. 다른 엔터티와 참조관계 연결 불가
후보키 : 유일성과 최소성을 만족하는 속성. 주식별자와 보조식별자를 포함
(스스로 생성 여부)
- 내부식별자
: 엔터티 내부에서 스스로 만들어지는 식별자
- 외부식별자
: 관계를 통해 다른 엔터티로부터 받아오는 식별자(FK)
(속성의 수)
- 단일식별자
: 식별자를 구성하는 속성이 하나
- 복합식별자
: 식별자를 구성하는 속성이 둘 이상
(대체 여부)
- 본질식별자
: 업무에 존재하는 본래의 식별자 (원조식별자)
- 인조식별자
: 업무에 존재하지 않으나 원조식별자가 너무 복잡하여 인위적으로 만든 식별자 (대리식별자)
(비)식별자 관계
식별자 관계
- 강한 연결 관계
- 부모 엔터티의 식별자가 자식 엔터티의 주식별자 구정에 포함
- ERD 상에서 실선으로 표현
- 부모 엔터티 인스턴스와 자식 엔터티 인스턴스가 같은 생명주기를 가지는 경우 적합
비식별자 관계
- 약한 연결 관계
- 부모 엔터티의 식별자가 자식 엔터티의 일반 속성이 됨
- ERD 상에서 점선으로 표현
- 부모 엔터티 인스턴스와 자식 엔터티 인스턴스가 다른 생명주기를 가지는 경우 적합
- 부모 엔터티 인스턴스에 참조값이 없어도 자식 엔터티 인스턴스가 생성될 수 있을 때 고려