Section 01 데이터 모델링(Data Modeling)
1. 데이터 모델링의 이해
1. 데이터 모델링
- 현실세계를 데이터베이스로 표현하기 위해서 추상화한다.
- 고객과의 의사소통을 통해 고객의 업무 프로세스를 이해해야 한다.
- 고객의 업무 프로세스를 이해한 후 데이터 모델링 표기법을 사용해서 모델링한다.
- 고객이 쉽게 이해할 수 있도록 복잡하지 않게 모델링해야 한다.
- 고객의 업무 프로세스를 추상화하고, 소프트웨어를 분석 설계하면서 점점더 상세해진다.
- 고객의 비즈니스 프로세스를 이해하고 비즈니스 프로세스의 규칙을 정의한다.
- 정의된 비즈니스 규칙을 데이터 모델로 표현한다.
2. 데이터 모델링의 특징
- 추상화 : 공통적인 특징을 찾고 간략하게 표현
- 단순화 : 누구나 이해할 수 있게 표현
- 명확성 : 명확하게 의미가 해석되어야 하고 한 가지 의미를 가져야 함
3. 데이터 모델링 단계
데이터 모델링은 개념적 모델링, 논리적 모델링, 물리적 모델링 단계로 이루어짐
1. 개념적 모델링(Conceptual Data Modeling)
- 비즈니스 프로세스를 분석, 업무 전체에 대해서 데이터 모델링을 수행
- 복잡하게 표현하지 않고 중요한 부분을 위주로 모델링하는 단계
- 업무적 관점에서 모델링하며 기술적 용어는 가급적 사용하지 않음
- 엔터티(Entity)와 속성(Attribute)을 도출
- 개념적 ERD(Entity Relationship Diagram)를 작성
2. 논리적 모델링(Logical Data Modeling)
- 개념적 모델링을 논리적 모델링으로 변환하는 작업
- 식별자를 도출하고 필요한 모든 릴레이션을 정의
- 정규화를 수행해서 데이터 모델의 독립성 확보
3. 물리적 모델링(Physical Modeling)
- 데이터베이스 실제 구축
- 테이블, 인덱스, 함수 등을 생성
- 성능, 보안, 가용성 고려 구축
데이터 모델링 단계
개념적 모델링
- 전사적 관점에서 기업의 데이터를 모델링
- 추상화 수준이 가장 높은 수준의 모델링
- 계층형 데이터모델, 네트워크 모델, 관계형 모델에 관계없이 업무 측면에서 모델링
논리적 모델링
- 특정 데이터베이스 모델에 종속
- 식별자를 정의하고 관계, 속성 등을 모두 표현
- 정규화를 통해서 재사용성을 높임
물리적 모델링
- 구축할 데이터베이스 관리 시스템에 테이블, 인덱스 등을 생성하는 단계
- 성능, 보안, 가용성 등을 고려하여 데이터베이스 구축
데이터 모델링 관점
데이터
- 비즈니스 프로세스에서 사용되는 데이터를 의미
- 구조 분석, 정적 분석
프로세스
- 비즈니스 프로세스에서 수행하는 작업을 의미
- 시나리오 분석, 도메인 분석, 동적 분석
데이터와 프로세스
- 프로세스와 데이터 간의 관계를 의미
- CRUD(Create, Read, Update, Delete) 분석
4 .데이터 모델링을 위한 ERD(Entity Relationship Diagram)
- 엔터티와 엔터티 간의 관계를 정의하는 모델링 방법
1. ERD 작성 절차
- 엔터티를 도출하고 그린다.
- 업무에서 관리해야 하는 집합을 도출
ex) 고객, 계좌, 종목, 주문 등.
- 엔터티를 배치한다.
- 엔터티를 도출한 후 엔터티를 배치한다.
- 중요한 엔터티를 왼쪽 상단에 배치한다.
-
엔터티 간의 관계를 설정한다.
-
관계명을 서술한다.
- 엔터티 간의 어떤 행위나 존재가 있는지 표현한다.
ex) 고객 엔터티와 계좌 엔터티의 관계 : 계좌를 개설한다.
ex) 계좌 엔터티와 주문 엔터티의 관계 : 주문을 발주한다.
- 관계 참여도를 표현한다.
- 관계 참여도는 한 개의 엔터티와 다른 엔터티 간의 참여하는 관계 수를 의미
ex)고객이 여러 계좌를 개설할 수 있다 와 같은 의미를 표현하는 것
- 관계의 필수 여부를 표현한다.
- 필수는 반드시 존재해야 하는 것
ex) 모든 고객은 반드시 하나의 계좌를 개설해야 한다 와 같은 의미를 표현하는 것
2. ERD 작성 시 고려사항
- 중요한 엔터티를 가급적 왼쪽 상단에 배치
- ERD는 이해가 쉬워야 하고 너무 복잡하지 않아야 한다.
5. 데이터 모델링 고려사항
1. 데이터 모델의 독립성
- 독립성이 확보된 모델은 고객의 업부 변화에 능동적으로 대응할 수 있음
- 독립성을 확보하기 위해서 중복된 데이터를 제거해야 함
- 데이터 중복을 제거하는 방법이 바로 정규화임
2.고객 요구사항의 표현
3. 데이터 품질 확보
- 데이터베이스 구축 시에 데이터 표준을 정의
- 표준 준수율을 관리
- 데이터 표준을 확보해야 데이터 품질을 향상 시킬 수 있음
2. 3층 스키마
1. 3층 스키마
-
사용자, 설계자 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하고
이들 간의 관계를 정의한 ANSI 표준
-
3층 스키마는 데이터 베이스의 독립성을 확보하기 위한 방법
-
데이터의 독립성을 확보하면 데이터 복잡도 증가, 데이터 중복 제거, 사용자 요구사항 변경에 따른 대응력 향상, 관리 및 유지보수 비용 절감 등의 장점을 갖음
-
3단계 계층으로 분리해서 독립성을 확보하는 방법으로 각 계층을 뷰(View)라고도 함
3층 스키마의 독립성
논리적 독립성
- 개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것
물리적 독립성
- 내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것
2. 3층 스키마 구조
3층 스키마 구조
외부 스키마(External Schema)
- 사용자 관점, 업무상 관련이 있는 데이터 접근
- 관련 데이터베이스의 뷰(view)를 표시
- 응용 프로갬이 접근하는 데이터베이스를 정의
개념 스키마(Conceptual Schema)
- 설계자 관점, 사용자 전체 집단의 데이터베이스 구조
- 전체 데이터베이스 내의 규칙과 구조를 표현
- 통합 데이터베이스 구조
내부 스키마(Internal Schema)
- 개발자 관점, 데이터베이스의 물리적 저장 구조
- 데이터 저장구조, 레코드 구조, 필드 정의, 인덱스 등을 의미
3. 엔터티(Entity)
1.엔터티(Entity)
- 엔터티는 업무에서 관리해야 하는 데이터 집합을 의미
- 저장되고 관리되어야 하는 데이터
- 엔터티는 개념, 사건, 장소 등의 명사
2. 엔터티(Entity) 도출
- 엔터티는 고객의 비즈니스 프로세스에서 관리되어야 하는 정보를 추출
비즈니스 프로세스의 예
- 고객이 회원가입을 함(회원 가입할 때 회원ID, PWD, 이름, 주소, 전화번호 등을 입력)
- 회원으로 가입하기 위해서는 반드시 하나의 계좌를 개설해야 함
- 고객은 계좌를 여러 개 개설할수 있음
- 계좌를 개설할 때는 계좌번호, 계좌명, 예수금, 계좌개설 지점, 계좌담당자 입력됨
엔터티 도출
고객
계좌
- 계좌번호
- 계좌명
- 예수금
- 계좌개설 지점
- 계좌담당자
3.엔터티(Entity) 특징
엔터티의 특징
식별자
- 엔터티는 유일한 식별자가 있어야함
ex)계좌번호, 회원 ID
인스턴스 집합
- 2개 이상의 인스턴스가 있어야함
- 고객 정보는 2명이상 있어야함
속성
- 엔터티는 반드시 속성을 가지고 있음
ex) 고객 엔터티의 회원ID, pw, 이름, 주소, 전화번호
관계
- 엔터티는 다른 엔터티와 최소한 한 개 이상 관계가 있어야 한다.
ex) 고객은 계좌를 개설한다
업무
- 엔터티는 업무에서 관리되어야 하는 집합이다.
ex) 고객, 계좌
4.엔터티(Entity) 종류
- 엔터티의 종류는 유형과 무형에 따른 종류, 엔터티가 발생하는 시점에 따른 종류로 나누어짐
- 엔터티를 유형과 무형으로 분류하는 기준은 물리적 형태의 존재 여부
유형과 무형에 따른 엔터티의 종류
유형 엔터티
- 업무에서 도출되며 지속적으로 사용되는 엔터티
ex) 고객, 강사, 사원 등
개념 엔터티
- 유형 엔터티는 물리적 형태가 있지만, 개념 엔터티는 물리적 형태가 없음
- 개념적으로 사용되는 엔터티
ex) 거래소 종목, 코스닥 종목, 생명보험 상품 등
사건 엔터티
- 비즈니스 프로세스를 실행하면서 생성되는 엔터티
ex) 주문, 체결, 취소주문, 수수료 청구 등
발생 시점에 따른 엔터티 종류
기본 엔터티(Basic Entity)
- 키 엔터티라고도 한다.
- 다른 엔터티로부터 영향을 받지 않고 독립적으로 생성되는 엔터티
ex)고객, 상품, 부서 등
중심 엔터티(Main Entity)
- 기본 엔터티와 행위 엔터티 간의 중간에 있는 것
- 기본 엔터티로부터 발생되고 행위 엔터티를 생성하는 것
ex) 계좌, 주문, 취소, 체결
행위 엔터티(Active Entity)
- 2개 이상의 엔터티로부터 발생
ex) 주문 이력, 체결 이력 등
4. 속성(Attribute)
1.속성(Attribute)
- 속성이라는 것은 업무에서 필요한 정보인 엔터티가 가지는 항목
- 속성은 더 이상 분리되지 않는 단위, 업무에 필요한 데이터를 저장할 수 있음
- 인스턴스 구성요소이고 의미적으로 더 이상 분해되지 않음
2. 속성의 특징과 종류
1. 속성의 특징
- 속성은 업무에서 관리되는 정보
- 속성은 하나의 값만 가진다
- 주식별자에게 함수적으로 종속 : 기본키가 변경되면 속성의 값도 변경됨
2. 속성의 종류
단일속성
- 하나의 의미로 구성된 것으로 회원ID, 이름 등
복합속성
- 여러 개의 의미가 있는 것으로 대표적으로 주소
- 주소는 시, 군, 동 등으로 분해될 수 있음
다중값 속성
- 속성에는 여러 개의 값을 가질 수 있는 것으로 예를 들어 상품 리스트가 있음
- 다중값 속성은 엔터티로 분해됨
특성에 따른 속성의 종류
기본 속성
- 비즈니스 프로세스에서 도출되는 본래의 속성
ex) 회원ID, 이름, 계좌번호, 주문 일자 등
설계 속성
- 데이터 모델링 과정에서 발생되는 속성
- 유일한 값을 부여
ex) 상품코드, 지점 코드 등
파생 속성
- 다른 속성에 의해서 만들어지는 속성
ex) 합계, 평균 등
TIP 도메인(Domain)
- 속성이 가질 수 있는 값의 범위
ex) 성별이라는 속성의 도메인은 남자와 여자이다.
5. 관계
1.관계(Relationship)
- 관계는 엔터티 간의 관련성을 의미
- 존재 관계와 행위 관계로 분류
- 존재 관계는 두개의 엔터티가 존재 여부의 관계가 있는 것
- 행위 관계는 두 개의 엔터티가 어떤 행위에 의한 관련성이 있는 것
2. 관계의 종류
1. 존재 관계
- 존재 관계는 엔터티 간의 상태를 의미
ex) 고객이 은행에 회원가입 하면 관리점이 할당, 그 할당된 관리점에서 고객을 관리
2. 행위 관계
- 행위 관계는 엔터티 간에 어떤 행위가 있는 것
ex) 계좌를 사용해서 주문을 발주하는 관계, 증권회사는 계좌를 계설하고 주문을 발주
3. 관계 차수(Cardinality)
1. 관계 차수(Relation Cardinality)
- 관계 차수는 두 개의 엔터티 간에 관계에 참여하는 수를 의미
ex) 한명의 고객은 여러 개의 계좌를 개설할 수 있다. - 1대 N 관계
2.관계 차수의 종류
1. 1대 1관계
- 1대1 관게는 완전 1대1 관계와 선택적 1대1 관계가 있음
ex) 선택적 1대1 관계 : 한명의 고객은 하나의 고객등급이 부여 된다 고객 등급이 없을 수도 있다.
완전 1대1
- 하나의 엔터티에 관계되는 엔터티의 관계가 하나인 경우로, 반드시 존재
선택적 1대1
- 하나의 엔터티에 관계되는 엔터티의 관계까 하나이거나 없을 수도 있음
2. 1대 N관계
- 1대 N 관계는 엔터티에 행이 하나 있을 때 다른 엔터티의 값이 여러개 있는 관계
ex) 고객은 여러 개좌를 가질 수 있음
3. M대 N관계
-
M대 N관계는 두 개 엔터티가 서로 다른 여러 개의 관계를 가지고 있는 것
ex) 한명의 학생이 여러 개의 과목을 수강, 한 개의 과목은 여러 명의 학생이 수강
-
관계형 데이터 베이스에서 M대 N 관계의 조인(Join)은 카테시안 곱이 발생
M대 N관계를 1대N, N대1로 해소해야 함
4. 필수적 관계와 선택적 관계
- 필수적 관계는 반드시 하나는 존재해야 하는 관계
- 선택적 관계는 없을 수도 있는 관계
- 필수적 관계는 '|'로 표현되고 선택적 관계는 'O'로 표현
필수적 관계
4. 식별 관계와 비식별 관계
1. 식별 관계(Identification Relationship)
-
고객과 계좌 엔터티에서 고객은 독립적으로 존재할 수 있는 강한 개체(Strong Entity)이다.
-
강한 개체는 어떤 다른 엔터티에게 의존하지 않고 독립적으로 존재한다.
-
강한 개체는 다른 엔터티와 관계를 가질 때 다른 엔터티에게 기본키를 공유한다..
-
강한 개체는 식별 관계로 표현된다.
-
즉, 식별 관계란 고객 엔터티의 기본키인 회원ID를 계좌 엔터티의 기본키의 하나로 공유하는 것
-
강한 개체의 기본키 값이 변경되면 식별 관계(기본키를 공유받은)에 있는 엔터티의 값도 변경된다.
-
여기서 계좌 엔터티는 약한 개체가 된다.
2. 비식별 관계(Non-Identification Relationship)
- 비식별 관계는 강한 개체의 기본키를 다른 엔터티가 기본키가 아닌 일반 칼럼으로 관계를 가지는 것
- 예를 들어 관리점 엔터티의 기본키는 지점 코드이고 고객 엔터티와 비식별 관계를 가지고 있다. 즉, 지점 코드는 고객 엔터티의 기본키가 아닌 일반 칼럼으로 참조된다. 비식별 관계는 점선으로 표현한다.
6. 엔터티 식별자(Entity Identifier)
식별자라는 것은 엔터티를 대표할 수 있는 유일성을 만족하는 속성이다.
일반적으로 회원ID, 계좌번호, 주민등록번호, 외국인등록번호, 여권번호 등이 있다.
1. 주식별자(기본키, Primary key)
- 최소성: 주식별자는 최소성을 만족하는 키이다.
- 대표성: 주식별자는 엔터티를 대표할 수 있어야 한다.
- 유일성: 주식별자는 엔터티의 인스턴스를 유일하게 식별한다.
- 불변성: 주식별자는 자주 변경되지 않아야 한다.
키의 종류(데이터베이스 키)
기본키(Primary key) : 후보키 중에서 엔터티를 대표할수 있는 키
후보키(Candidate key) : 후보키는 유일성과 최소성을 만족하는 키
슈퍼키(Super key) : 유일성은 만족하지만, 최소성을 만족하지 않음
대체키(Alternate key) : 대체키는 여러 개의 후보키 중에서 기본키를 선정하고 남은 키
외래키(Foreign key) : 하나 혹은 다수의 다른 테이블의 기본 키 필드를 가리키는 것으로 참조 무결
- 허영된 데이터 값만 데이터베이스에 저장하기 위해서 사용됨
2.식별자의 종류
- 식별자는 대표성, 생성 여부, 속성의 수, 대체 여부로 분류
1. 식별자의 대표성
- 주식별자는 엔터티를 대표할 수 있는 식별자이다.
ex) 회원 ID가 고객 엔터티의 주식별자가 된다.
대표성 여부에 따른 식별자의 종류
주식별자
- 유일성과 최소성을 만족하면서 엔터티를 대표하는 식별자
- 다른 엔터티와 참조 관계로 연결될 수 있음
보조 식별자
- 유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자
2. 생성 여부
생성 여부에 따른 식별자의 종류
내부 식별자
- 내부 식별자는 엔터티 내부에서 스스로 생성되는 식별자
ex) 부서코드, 주문번호, 종목코드 등
외부 식별자
- 다른 엔터티와의 관계로 인하여 만들어지느 식별자
ex)계좌 엔터티의 회원ID
3. 속성의 수
속성의 수에 따른 식별자의 종류
단일 식별자
- 하나의 속성으로 구성된다.
ex) 고객 엔터티의 회원ID
복합 식별자
4. 대체 여부
대체 여부에 따른 식별자의 종류
본질 식별자
인조 식별자
TIP : 인조식별자
- 인조 식별자는 후보 식별자 중에서 주식별자 로 선정할 것이 없거나, 주식별자가 너무 많은 컬럼으로 되어 있는 경우에 사용
- 즉, 순서번호(Sequence Number)를 사용해서 식별자를 만드는 것이다.