- 데이터 모델링 표기법 이해
- 데이터 모델링 기법 이해
- 데이터 모델링 개요
- 데이터 모델링 이해
- 개념 데이터 모델링
- 개념 데이터 모델링 이해
- 주제 영역 정의
- 후보 엔티티 선정
- 핵심 엔티티 정의
- 관계 정의
- 개념 데이터 모델 작성
- 논리 데이터 모델링
- 논리 데이터 모델링 이해
- 속성 정의
- 엔티티 상세화
- 이력관리 정의
- 논리 데이터 모델 품질 검토
- 물리 데이터 모델링
- 물리 데이터 모델링 이해
- 물리 요소 조사 및 분석
- 논리-물리 모델 변환
- 반정규화
- 물리 데이터 모델 품질 검토
데이터 모델링
| 무결성 | 논리 모델링에서 | 물리 모델링에서 |
|---|---|---|
| 실체 무결성 | 주식별자 정의를 통해 논리적으로 반영 | PK, UNIQUE, NOT NULL 등으로 구현 |
| 영역(Domain) 무결성 | 속성/도메인의 의미·허용범위 등을 정의 | 데이터 타입, 길이, CHECK 등으로 구현 |
| 참조 무결성 | 입력/삭제 규칙 등을 명시적으로 정의 | FK 및 관련 Constraint로 구현 |
| 사용자 정의 무결성 | 업무 규칙으로 식별·정의 가능 | CHECK, Trigger, 프로그램 등으로 구현 |
| 개념 | 실행업무 |
|---|---|
| 개념 | 주제영역, 엔티티 (후보/핵심), 관계, 개념 DM |
| 논리 | 속성, 엔티티 (detail), 이력관리, 정규화, 참조 무결성 규칙 정의 |
| 물리 | 물리요소, DBMS, 반정규화, 무결성 규칙 구현 |
- 모델링 기본원칙
- 커뮤니케이션 원칙
- 모든 사람들이 이해할 수 있도록 명확하게 공표됨은 물론 최종 사용자 지향적으로 분명하게 파악되는 수준으로 작성
- 논리데이터모델: 비즈니스 지향적인 최종 사용자 데이터 모델과 기술적인 상세 데이터 모델
- 데이터 모델의 이해를 필요로 하는 그룹
- 모델링 상세화 원칙
- 데이터의 상세화 정도를 제시하고 조직이 사용하는 정보 구조의 ‘최소 공통 분모’를 제시
- 복잡한 구조는 요소적인 부분들로 쪼개야 하며 불필요한 구조와 중복은 제거
- 논리적 표현 원칙
- 조직의 데이터에 대한 논리적 측면을 최대한 표현
- 모델은 물리적 제약 조건 없이 비즈니스를 그대로 반영
- 커뮤니케이션 원칙
# 데이터 모델의 이해를 필요로 하는 그룹
최종사용자
- 개념화, 추상화, 정규화 기법을 통하여 중복없고 데이터의 정확성을 보장하는 데이터 구조의 이해 및 사용
시스템분석가
- 시스템에서 사용되어질 정확한 데이터의 구조 및 데이터가 갖는 업무 규칙의 이해
DBA
- 논리 데이터 모델의 구조와 물리 스키마의 차이점을 이해하고 최종 사용자에게는 데이터의 제공,
시스템 분석가에게는 물리 스키마의 제공을 위한 데이터 구조의 이해
타프로젝트 분석가
- 관련 프로젝트가 데이터를 어떻게 정의하고 있는지를 알아냄.
인터페이스가 개발되어지고 데이터가 애플리케이션 또는 시스템 간에 공유되기 위한 데이터 구조 및 업무 규칙의 이해
| 구분 | 관계형 | 비관계형 |
|---|---|---|
| 구조 | 6가지 특성 갖는 테이블 | Flat File |
| Post Define Schema | Pre define Schema | |
| DB구조변경 용이 | DB구조변경 어려움 | |
| 조작 | 8개 조회/처리 연산자 | READ조회, 처리연산자 |
| 집합(SET)처리 | 한건씩 처리 | |
| 원자값 처리 | Pointer 처리 | |
| 무결성 | 엔터티,참조,무결정,연쇄작용 | 무결성 개념 없음 |
| 접근경로 | Key와 인덱스 별개 | Key와 인덱스 동일 |
| Data에 대한 접근경로 유연 | Data에 대한 접근경로 제한적 |
- 관계형 모델 이론
- 데이터 구조: 사용자가 인식하는 데이터의 구성
- 데이터 조작: 사용자가 관계형 데이터 구조에 행하는일련의 연산(처리)형태
- 데이터 무결성: 사용자가 일련의 관계형 연산을 수행할때 테이블의 데이터 값이 어떻게 되야 하는지를 통제하는 일련의 업무 규칙
- 데이터 무결성
- 사용자가 일련의 관계형 처리(입력, 수정, 삭제, 조회)를 수행할 때 관계형 엔터티의 데이터값이 어떻게 작용해야 하는지 통제하는 일련의 업무규칙
- 실체 무결성 (엔터티 무결성)
- 두 개의 똑같은 튜플은 한 릴레이션에 포함불가 (유일식별자)
- 식별자를 구성하는 각 속성이 NOT NULL
- 엔터티 내 특정 인스턴스의 유일성 보장
- 최소한의 속성 집합
- 참조무결성
- 데이터가 하나 또는 두 개의 관계있는 엔터티에 입력, 수정, 삭제될 때 데이터가 어떻게 반응해야 하는가에 대한 업무 규칙
- 엔터티의 주키와 마찬가지로 외래키도 데이터 무결성에 관한 규칙을 내포
- 참조무결성규칙: 엔터티의 모든 외래키 값은 관계 있는 엔터티에 주 키 값으로 존재해야함
- DB설계관점에서 선택하지 말고, 현업의 업무규칙에 따라 적절한 규칙을 선택.
- 입력규칙: 자식 엔터티의 행이 입력될때
- 삭제규칙: 부모 엔터티의 행을 삭제할때 (또는 행의 주키를 수정할때)
- 도메인 무결성 (길이, 허용값, 범위)
- 데이터 타입, 길이, 허용값, 기본값, 유일성, 널 여부 등에 관한 업무규칙
- 도메인: 속성이 가질 수 있는 값의 전체 집합
- 같은 도메인의 값들끼리만 비교 가능
- 속성이 취할 수 있는 값의 제한
- 연쇄작용 또는 업무규칙
- 연쇄작용: 입력,수정,삭제 또는 조회 등의 작업이 동일 엔터티 혹은 다른 엔터티의 속성에 영향을 미치는 업무 규칙
- 업무규칙은 조직이 데이터를 인식하고 사용하는 방법에 기초
확장된 ER모델 (개체-관계 모델) 은 서브타입을 포함한다.
| 분류 | 이름 | 비고 |
|---|---|---|
| 집합 (SET) 처리 | ||
| 관계연산자 (조회) | Select (or Restrict) | 열에 의거한 행의 부분집합 |
| Project (π) | 열의 부분집합(subset) | |
| Product (×) | 두 관계 테이블간 행의 조합을 묶음 | |
| Join (⨝) | 열의 기준에 의거하여 각 행을 수평적으로 묶음 | |
| Union (∪) | 중복없이 각 행을 수직적으로 묶음(합집합) | |
| Intersection (∩) | 관계 테이블간의 공통된 행(교집합), 테이블 구조는 동일 | |
| Difference (- 또는 제외) | 하나의 관계 테이블에만 있는 행(차집합), intersection의 반대 | |
| Division (¼) | 다른 관계 테이블의 모든 행에 대응하는 열을 제외한 열. (R에서 S의 레코드를 다가진 레코드) | |
| 처리연산자 (테이블 내용 변경) | Insert | 행의 삽입 |
| Update | 행의 수정 | |
| Delete | 행의 삭제 |
- 본질적 데이터 요구사항
- 이름
- 모든 속성은 고유하게 식별할 수 있는 이름이 주어져야함
- 명세 (Description)
- 모든 실체는 명세가 있어야 함.
- 모형을 검토하는 누구든지 실체를 정확히 해석할 수 있어야 함.
- 유형 (Type)
- 속성은 Key 속성 또는 Non-Key 속성중 하나로 구분되어야 함.
- 이 특성은 key 속성으로써의 역할 가능성보다는 실제 용도와 관련된다
- 이름
- 좋은 데이터 모델의 요소 (완중업재 안의간통)
| 이름 | 비고 |
|---|---|
| 완전성 | 업무에서 필요로 하는 모든 데이터가 데이터 모델에 정의 |
| 중복배제 | 하나의 DB내에 동일한 사실은 반드시 한번만 기록 |
| 비즈니스 룰 (업무규칙) | 수많은 업무 규칙을 데이터 모델에 표현하고 이를 해당 데이터 모델을 활용 하는 모든 사용자가 그 규칙을 공유하도록 제공 |
| 데이터 재사용 | 데이터의 통합성과 독립성에 대해서 충분히 고려. 통합모델을 구축하고, 애플리케이션에 대해 독립적으로 설계 |
| 안정성 및 확장성 | - 현재의 데이터 구조를 거의 변화하지 않고도 변화에 대응할 수 있는 데이터 구조 - 아주 적은 확장을 통해 이러한 변화에 대응 - 정보시스템에서의 ‘행위의 주체’가 되는 집합의 통합,‘행위의 대상’이 되는 집합의 통합, ‘행위 자체’에 대한 통합 |
| 의사소통 | 많은 업무 규칙은 해당 정보시스템을 운용/관리하는 많은 관련자들이 설계자가 정의한 업무규칙들을 동일한 의미로 받아들이고 정보시스템을 활용 |
| 간결성 | 데이터를 합리적으로 균형있고 단순하게 분류 |
| 통합성 | 조직의 전체에서 한 번만 정의되고 이를 여러 다른 영역에서 참조 |
데이터 모델링 기법 이해
- 데이터 모델 목적
- DB 설계에 대한 계획 또는 청사진
- 데이터 모델링 단계에서 업무를 잘못 이해했거나 관계를 잘못 정의한 것이 발견되었다면 해당하는 다이어그램과 일부 관련된 문서만 변경하면 됨.
- DB와 응용 프로그램 개발이 완료된 후 이러한 오류를 발견하여 수정하려면 이와 관련된 많은 프로그램과 SQL문이 변경되어야 함
- 뿐만 아니라 데이터가 새로운 구조로 옮겨져야 하는 등 이러한 변경을 반영하는 데 많은 비용과 시간이 필요하게 됨
- 개체-관계 모델 기법
- 데이터에 대해 관리자, 사용자, 개발자들이 서로 다르게 인식하고 있는 뷰들을 하나로 통합할 수 있는 단일화된 설계안
- 서로 다른 뷰를 충족시킬 수 있는 데이터 처리와 제약 조건 등의 요구 사항을 정의
- 구성요소
| 이름 | 비고 |
|---|---|
| entity | 업무 활동상 지속적인 관심을 가지고 있어야 하는 대상으로서, 그 대상들 간에 동질성을 지닌 것으로 볼 수 있는 개체 집합이나 그들이 행하는 행위의 집합 |
| 속성 | - 엔터티에 저장되는 개체 집합의 특성을 설명하는 항목 - 실체내에서 관리하고자 하는 정보들의 항목 - 도메인: 속성이 가질 수 있는 값의 범위 - 단일치 속성: 하나의 값만 존재 - 다중치 속성: 여러개의 값이 존재 |
| 식별자 | - 엔터티의 각 개체들은 인스턴스 - 인스턴스는 그들을 지칭하거나 식별해 주는 속성인 식별자를 가짐 - 복합 식별자: 두 개 이상의 속성으로 이루어진 식별자 |
| 관계 (식선카비) | - 엔터티와 엔터티 간 연관성을 표현 - 하나 또는 두 개의 실체를 연관시키는 업무와 관련된 중요한 사항. - 식별성, 선택성, 기수성, 비전이성 - 매핑 카디날리티는 ERD에서 개체와 연결될 때 나타나는 대응되는 수 - 대응수, 최대대응수, 최소대응수로 구분 |
| 카디날리티 (기수성) | - 한 개체가 관계를 통하여 다른 개체와 관련된 개체들의 수(관계에 참여하는 엔터티의 개수) - 1:1, 1:M, M:M |
| 존재종속 | - 한 엔터티의 존재가 다른 엔터티(들)의 존재에 영향을 받는 경우 - 전체참여, 부분참여 |
| 서브타입 | - 엔터티의 하위 집합 (부분집합). 속성을 상속함 - ex) 학생(슈퍼) > 학부학생, 대학원생(서브) - 배타적: 슈퍼타입은 많아야 1개의 서브타입과 관련. (돔안에 X표시) - 포괄적: 슈퍼타입은 1개 또는 그 이상의 서브타입과 관련 - 모든 슈퍼타입이 구분자를 가지고 있는 것은 아님. - 서브타입은 그것의 슈퍼타입이라 불리는 다른 개체의 특별한 경우 |
| 특성 | 의미 | 핵심 질문 |
|---|---|---|
| 식별성 (Identification) | 부모와의 관계가 자식의 식별자 구성에 참여하는지 | 부모 식별자를 자식 PK로 물려받는가? 부모가 내 식별자에 들어오는가 |
| 선택성 (Optionality) | 관계 참여가 필수인지 선택인지 | 반드시 관계를 가져야 하나? 상대가 반드시 있어야 하는가 |
| 기수성 (Cardinality) | 상대 엔터티의 인스턴스와 몇 개까지 관계를 맺는지 | 1개인가, 여러 개인가? 상대가 몇개까지 가능한가 |
| 비전이성 (Non-transferability) | 한 번 맺어진 관계를 다른 부모 인스턴스로 이전할 수 없는지 | 부모를 다른 인스턴스로 바꿀 수 있는가? 한번 정한 상대를 다른 인스턴스로 바꿀 수 없는가 |
- 객체지향 모델링
- 객체지향 방법론-객체지향 분석-객체지향 설계-객체지향 모델링-객체지향 프로그래밍-객체지향 DBMS
- 데이터와 프로세스를 같은 객체 안에 결합한다
- 객체지향 개념
- 객체는 속성과 메소드로 구성.
- 속성은 객체 클래스의 성질.
- 메소드는 하나 이상의 속성을 접근, 조작, 수정, 삭제, 생성하는 프로세스
- 연관 또는 상속을 통해서 다른 객체들에 연결
- 연관은 객체 간의 자연적 관계
- 객체는 속성과 메소드로 구성.
- 객체 모형
- 주제에 연관된 기본 객체 식별, 객체간의 연관을 식별
- 객체 모형 데이터
- 객체-관계 다이어그램에 모형화
- 불명료한 객체 접근 방식
- 객체지향 개발의 가장 단순화된 표현: 객체지향 개발을 분명하게 이해하는데 필요한 많은 객체지향 특징을 무시하는 것
- 객체지향 모델링의 미성숙: 객체가 어떻게 표현되고 기호가 어떻게 사용되어야 하는가 등의 정의는 아직까지 초기단계.-
- 객체지향 모델링 장점
- 재사용 코드, 모든 비즈니스 규칙 표현, 프로세스와 데이터 모델링을 함께 운영
- 객체가 다른 객체와 연결되는 방법은 연관 또는 상속
- 객체 모형의 메소드
| 분류 | 비고 |
|---|---|
| 단순한 메소드 | 설명부 또는 구조화된 기법 사용 |
| 복잡한 메소드 | 정교한 문서화 접근 방식이 필요 |
| 이벤트 지향적인 프로세스 | 상태 전이 모델링과 같은 동적 프로세스 모델링 기법이 필요 |
| 정적인 프로세스 | 데이터 흐름 다이어그램이나 기능 분해와 같은 기법을 사용 |
- 객체지향 모델링과 논리 데이터 모델링간의 관계
| E-R | OO |
|---|---|
| 엔티티 | 객체 |
| 속성 | 속성 |
| 관계 | 연결 |
| 엔티티 유형 | 객체 클래스 |

개념 데이터 모델
- 주제영역 개념
- 기업이 사용하는 데이터의 최상위 집합
- ex) 제조의 경우, 인사/생산/자재/판매
- 시스템의 대상이 되는 업무를 명백하게 구분이 가능한 단위업무로 분리하는 개념
- 주제영역 내부에 존재하게될 개체들이 높은 결합성을 유지하게 해야함
- 프로세스 모델링의 기능 (function) 과 매핑
- 기업이 사용하는 데이터의 최상위 집합
- 특수한 형태 관계
- 순환 관계
- 하나의 엔터티가 자기 자신과 관계를 맺는 관계
- 하나의 순환 엔터티는 각 엔터티의 모든 속성을 포함
- 각 계층에 있는 속성은 동일하게 함
- 순환 모델은 필수(직선) 관계로 취급될 수 없고(무한 LOOP 발생), 반드시 선택사양 관계
- 조직의 변경(추가/삭제)에 쉽게 대응
- BOM 관계 (BILL OF Materials)
- BOM 관계의 모델을 네트워크 구조 (전철 노선이나 하이퍼링크를 갖는 웹 도큐먼트 같은)
- M:M 순환구조: 상세 모델링 과정에서 새로운 관계 엔터티를 추가하여 두 개의 일대다(1:M) 관계로 구성된 모델로 구체화
- ARC 관계 (Mutally Exclusive)
- 어떤 엔터티가 두 개 이상의 다른 엔터티의 합집합과 관계를 가지는 것을 배타적(Exclusive) 관계 혹은 아크(Arc) 관계라 함
- 아크 내에 있는 관계는 보통 동일
- 아크 내에 있는 관계는 항상 필수이거나 선택
- 아크는 반드시 하나의 엔터티에만 속해야 함 (하나의 아크가 여러 엔터티를 가질 수 없음)
- 어떤 엔터티는 다수의 아크를 가질 수 있음. 지정된 관계는 단 하나의 아크에만 사용되어야 함
- 논리적으로 엔터티간의 업무적 연관성을 명확하게 표현
- 실제 DB로 구현시 엔터티를 하나로 통합할 수도 있음.
- 순환 관계
| 구분 | 핵심 의미 | 대표 구조 |
|---|---|---|
| 순환 관계 | 엔티티가 자기 자신과 관계 | 1:M 자기참조 |
| BOM 관계 | 자기 자신과의 M:M 순환 관계 | 관계 엔티티로 해소 |
| ARC 관계 | 여러 부모 중 하나와만 배타적으로 관계 | Mutually Exclusive |
| 순환 | BOM | ARC |
|---|---|---|
![]() | ![]() | ![]() |
| 구분 | 의미 |
|---|---|
| 입력 규칙 | 자식 엔터티에 데이터를 넣을 때 대응되는 부모가 어떻게 존재해야 하는지 규정 |
| 삭제 규칙 | 부모 엔터티를 삭제할 때 관련 자식을 어떻게 처리할지 규정 |
| 기반 | 부모 PK ↔ 자식 FK의 참조 관계 |
| DAP 위치 | 논리 데이터 모델링 → 관계 정의 → 참조 무결성 규칙 정의 |
- 참조무결성 규칙 정의
- 관계 테이블의 모든 외부 식별자 값은 관련 있는 관계 테이블의 모든 주 식별자 값이 존재
- 실체의 주 식별자(PK)와 마찬가지로 외부 식별자(FK)도 데이터 무결성에 관한 업무 규칙을 내포함
- 데이터베이스 설계 관점에서 선택하지 말고, 사용자의 업무 규칙에 따라 적절한 규칙을 선택
| 입력규칙 | 삭제규칙 | |
|---|---|---|
| 자식 엔터티의 인스턴스를 입력할 때 | 부모 엔터티의 인스턴스를 삭제 또는 주식별자를 수정할 때 | |
| DEPENDENT | 대응되는 부모 실체에 인스턴스가 있는 경우에만 자식 실체에 입력을 허용 | |
| AUTOMATIC | 자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 이를 자동 생성 | |
| RESTRICT | 대응되는 자식 실체의 인스턴스가 없는 경우에만 부모 실체 인스턴스 삭제를 허용 | |
| CASCADE | 부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스를 자동 삭제 | |
| NULLIFY | 자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 자식 실체의 참조키 (FK)를 Null 값으로 처리 | 부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스가 존재하면, 그것의 참조키(FK)를 Null 값으로 수정 |
| DEFAULT | 자식 실체 인스턴스의 입력을 항상 허용하고, 대응되는 부모 건이 없는 경우 참조키(FK)를 지정된 기본 값으로 처리 | 부모 실체 인스턴스의 삭제를 항상 허용하고, 대응되는 자식 실체의 인스턴스가 존재하면, 그것의 참조키(FK)를 기본값으로 수정 |
| CUSTOMIZED | 특정한 검증 조건이 만족되는 경우에만 자식 실체 인스턴스의 입력을 허용 | 특정한 검증 조건이 만족되는 경우에만 부모 실체 인스턴스의 삭제를 허용 |
| NO EFFECT | 자식 실체 인스턴스의 입력을 조건 없이 허용 | 부모 실체 인스턴스 삭제를 조건 없이 허용 |
- 속성 검증 및 확정 로직
- 원자단위 (최소단위까지 분할)
- 집합 개념의 속성은 단순 개념으로 분할
- 가능한 최소 단위까지 분할한 후 관리 필요에 따라 통합
- 일자, 시간, 성명, 주민등록번호, 우편번호 등은 일반적으로 분할하지 않음
- 분할 및 통합의 기준은 업무의 요구 사항에 따름
- 유일값
- 여러 값을 가지거나 반복되는 속성은 잘못된 속성
- 반복되는 속성은 새로운 엔터티로 분할해야 할 1차 정규화의 대상임
- 가공값 (추출 속성인지 검증)
- 속성이 원천적인 값인지, 다른 속성에 의해 가공되어서 만들어진 값인지를 검증
- 원천값에서 다시 계산 가능한 값을 별도로 저장하면 원천값 변경 시 가공값과 불일치할 수 있음
- 가공값이라면 어떤 원천 속성에서 어떤 규칙으로 만들어지는지 명확히 해야 함 (산출 근거를 모델에 표현)
- 업무상 중요한 가공정보를 누락하지 않기 위해
- 관리수준 상세화 검토
- 더 상세한 정보관리가 필요한지 검토
- 원자단위 (최소단위까지 분할)
인덱스 = 기본적으로 성능 구조
Constraint = 기본적으로 무결성 구조
- 엔터티 검증
- 조직의 업무를 수행하는데 필요한 의미있는 정보를 나타내야 함
- 특정 사례가 아닌 유사한 사물들을 대표하는 집합체 (구매부서 > 부서)
- 인스턴스가 포함할 내부 연관성 있는 속성에 의해 결정된 단일개념을 대표해야함
- 엔터티내 인스턴스의 출현을 구별할 수 있는 능력을 제공해야 함 (엔터티 무결성)
- 정규화 규칙을 만족해야함


