1. 모델링
01. 모델링의 필요성
- 설계도 없이 디딤돌을 만들어 내는 것처럼, 구상하지 않으면 정확한 건설이 힘들다.
- 이와 같이 복잡한 현실 세계를 단순화하고 목적에 부합하며 정확히 구현할 수 있다.
02. 모델링의 특징
- 단순화 : 목적에 부합하는 필요한 것만 선택하는 것
- 추상화 : 현실 세계의 현상을 일정한 형식의 표기법으로 묶어낸 것
- 명확화 : 누구나 이해할 수 있도록 애매함을 제거하고 정확하게 기술하는 것
2. 데이터 모델링
01. 데이터 모델링의 필요성
- 파일저장
- 어플리케이션에서 사용하는 데이터를 메모리에서만 관리하기 때문에 컴퓨터가 꺼지면 데이터가 사라진다.
- 따라서 데이터 소멸 방지를 위해 디스크에 파일 형식으로 저장하고 읽고 쓴다.
- 시스템 장애나 파일 입출력 도중 문제가 발생했을 때 원상태로 복구 시키기 힘들다.
- 이진 파일은 사람이 읽기 힘들다
- 엑셀 파일저장
- Excel은 컬럼과 컬럼에 들어갈 데이터가 많아질수록 저장할 데이터가 기하급수적으로 많아진다.
- 하나의 테이블로 관리 시, 데이터가 늘어날 수록 처리 시간이 많이 걸리고 관리가 힘들다.
- 중복 데이터 발생 시 삭제, 수정이 번거롭다
- 관계형 데이터베이스 저장
- 각 데이터들의 종류를 한눈에 파악하기 쉽다
- 테이블 간의 관계를 통해 연관 있는 데이터들이 어떻게 누적되는지 파악하기 쉽다
- 중복이 제거되어 중복 데이터로 인한 문제를 해결할 수 있다.
02. 소프트웨어 개발 절차에 따른 정보 시스템 구축 절차

- 데이터 관점 모델링 : 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지 ERD를 도출하고 물리적 설계와 DB 튜닝까지의 과정이 포함된다.
- 프로세스 모델링 : 업무가 어떻게 구성되고, 업무의 처리 절차, 방법이 어떻게 되는지를 모델로 표현하는 단계
- 상관 모델링 : 데이터를 가지고 하는 일에 따라 데이터가 어떻게 영향을 받고 있는지 모델링 하는 단계
03. 데이터 모델링의 이해관계자
- 정보 시스템을 구축하는 모든 사람은 데이터 모델링을 하거나 모델을 해석할 줄 알아야 함!
- IT가 아니어도 정보화를 추진하는 위치에 있는 사람은 데이터 모델링에 대한 지식 정도는 알자!
04. 데이터 모델 표현법
IE 표기법 vs 바커 표기법

- IE 표기법은 범용적인 표기법
- 바커 표기법은 데이터 아키텍쳐 전문가 관련 자격에서 적용되며 IE 표기법에 비해 논리 모델링 단계에서 배타 관계나 슈퍼 서브 속성에 대한 표기가 있어 더 구체적으로 표현 가능하다
05. 관계형 모델
01. 테이블 구조

02. 무결성
- 무결성 : 데이터 값이 완전하고 정확한 상태를 의미
- 정합성 : 데이터가 서로 모순 없이 일관되서 일치해야 함을 의미
| 무결성 종류 | 무결성 특징 |
| 엔터티 무결성 | 모든 인스턴스는 고유해야 하며 인스턴스를 대표하는 속성에는 널 값을 가지면 안된다는 의미 |
| 참조 무결성 | 엔터티의 외래 식별자 속성은 참조하는 엔터티의 주 식별자 값에 포함되거나 널이어야 함을 의미 |
| 도메인 무결성 | 속성 값과 관련된 것으로 특정 속성 값은 같은 데이터 타입, 길이, 널 여부, 중복 값 허용, 기본 값 등 동일한 범주의 값만 존재해야 함을 의미 |
| 업무 무결성 | 기업에서 업무를 수행하는 방법이나 데이터를 처리하는 규칙을 의미 |
3. 엔터티
01. 엔터티?
💡 업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 알아야 하는 유, 무형의 사물(개체)를 의미한다.
02. 엔터티 도출
[엔터티 도출 과정]

1. 업무 분석 단계 이후, 분석자료로부터 엔터티를 도출한다.
2. 일련의 과정을 거쳐 엔터티 기술서를 작성하게 된다(엔터티 후보 풀과 리스트 그리기, 명사가 속성인지 엔터티인지 구분)
[엔터티 도출 원칙]
- 업무의 관심 대상이 되는 사물이어야 된다.
- 두 개 이상의 인스턴스를 소유해야 한다.
- 데이터의 정체성이 분명해야 한다.
- 데이터 종속성에 의해서 하나의 주제만을 관리하는 정의가 명확한 모델
- 엔터티의 인스턴스를 식별할 수 있는 식별자(Identifier)가 존재해야 한다.
- 동일한 성격의 데이터는 유일해야 한다.
- 엔터티 명은 관리하고자 하는 데이터의 성격(주제)을 가장 잘 표현하는 이름으로 한다.
03. 엔터티 종류
실체 엔터티
- 보이는 물체의 본질적인 성격을 관리하는 엔터티이다.
- 수표, 사원, 창고, 제품, 고객, 학생, 입출금전표 등
기준 엔터티
- 실체나 행위 데이터의 기준이 되는 데이터를 관리하는 엔터티이다.
- 업무를 수행하면서 참조하는 데이터가 있어 참조 엔터티라고도 불린다.
- 기준이 되는 엔터티의 데이터들이 여러 개면 어떤 것을 참조해야 할지 알 수 없으므로 하나만 존재해야 한다.
- 우편번호, 이자율, 수수료율, 영업일자 등
행위 엔터티
- 행위나 활동에 의해 발생된 원천 데이터를 관리하는 엔터티이다.
- 계약, 주문, 신청, 입금 등
가공 엔터티
- 원천 데이터가 아닌 원천 데이터를 추출, 집계한 데이터를 관리하는 엔터티이다.
- 가공 엔터티에 데이터를 쌓는 방법은 두 가지가 있다.
- 트랜잭션 데이터가 발생할 때마다 집계하는 방법
- 특정 시점에 해당하는 기간의 데이터를 집계하는 방법
- 집계, 임시, 요약 등
4. 속성 종류
속성은 엔티티가 가지는 항목이며, 인스턴스의 구성 요소이다

분해 여부에 따른 속성의 종류
| 단일 속성 | - 하나의 의미로 구성된 속성 - 부서명, 상품명, 재고 수량 등 |
| 복합 속성 | - 두 개 이상의 세부 속성으로 구성된 속성 - 전화번호나 주소처럼 의미에 따라 별도로 나눠서 관리할 수도 있고 하나로 관리할 수도 있음 |
| 다가 속성 | - 속성에 여러 값을 지니고 있는 속성 - 주문내역, 입출고 내역 등 - 1정규형에 의하면 속성은 단일값을 가져야하므로 분리해서 관리해야 함 |
특성에 따른 속성의 종류
| 기초 속성 | - 엔터티의 본질을 설명하는 속성 - 기초 속성만으로도 엔터티의 성격을 알 수 있음 |
| 관계 속성 | - 타 엔터티와의 연관성을 나타내는 속성 - 관계속성은 다른 엔터티의 주 식별자 속성 |
| 추출 속성 | - 원본 속성의 값을 연산해서 채울 수 있는 속성 |
5. 식별자
주식별자
- 엔터티에 소속된 인스턴스들을 구별하는 기준 역할을 하는 속성이다.
- 주식별자는 유일성, 최소성, 불변성, 존재성의 특징을 갖는다.
- 유일성 : 주식별자에 의해 엔티티 내에 모든 인스턴스들을 유일하게 구분되어야 한다. (중복되지 않는다.)
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
- 불변성 : 주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 한다.
- 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야한다. (NULL은 허용되지 않는다.)
- 주식별자는 하나가 아닌 여러 속성일 수 있다. (복합키)
- 엔터티의 속성 중 주식별자 속성이 없다면 새로운 속성을 만들어 준다.
외래식별자
- 관계가 있는 두 엔터티를 부모, 자식 엔터티로 구분한 후 부모의 주식별자와 공통 속성이 자식에게도 존재하면 해당 속성을 외래식별자로 지정한다.
- 자식 엔터티에 부모 엔터티 주식별자 공통 속성이 없을 경우 자식에게 속성을 추가한 후 외래식별자로 지정한
6. 도메인
01. 도메인이란?
하나의 속성이 취할 수 있는 동일한 타입의 원자값들의 집합이다.
02. 도메인 도출 및 할당
- 도메인은 다음과 같은 절차로 도출할 수 있다.
- 모든 속성을 엔터티별로 나열한다.
- 합성명사를 분리한다.
- 공통적인 합성명사와 명사들을 나열한다.
- 공통적인 명사를 도메인으로 설정하고 속성을 도메인에 할당한다.
- 각 도메인별로 데이터 타입과 길이를 지정한다.

7. 관계
01. 관계란?
- 두 개 이상의 엔터티 간에 존재하는 연관성을 나타낸다.
- 하위(자식) 엔터티의 속성으로 관리될 때만 관계를 표현한다.
- 관계에는 종속관계와 참조 관계가 있다.
- 종속관계 : 부모 엔터티와 자식 엔터티 간의 관계로 부모 엔터티가 존재해야 자식 엔터티가 존재할 수 있다. 반대로 말하면 부모 엔터티 없이 관계를 삭제하고 자식 엔터티만 존재할 수 없다.
- 참조관계 : 엔터티간에 연관성이 존재하긴 하지만 다른 엔터티가 없다고 존재할 수 없는 관계는 아니다. 단순히 참조 데이터를 관리하므로 관계를 삭제해도 한 속성에 대한 연관성만 문제가 되고 하위 엔티티 존재해는 지장이 없다
02. 관계의 구성 요소

03. 카디널리티
- 카티널리티는 릴레이션에서 튜플의 개수이자 상위(부모) 엔터티의 인스턴스 하나가 하위(자식)엔터티의 인스턴스 몇 개와 관련이 있는지 혹은 그 반대를 나타내는 것이다.
- 카디널리티를 통해 관계가 있는 두 엔터티는 일대일(1:1), 일대다(1:M), 다대다(M:M) 관계를 나타낸다.
- 다대다(M:M) 관계이면 교차 엔터티(Association Entity)를 통해 다대다 관계를 일대다(1:M) 관계로 해소해 주어야 한다.
04. 옵셔널리티
- 상위(부모) 엔터티와 하위(자식)엔터티가 서로 연관되는 값이 반드시 존재해야 하는지 존재하지 않아도 되는지를 의미한다.
- 서로 연관되는 값이 반드시 존재하면(최소 1개 이상) Mandatory이다.
- 서로 연관되는 값이 반드시 존재하지 않아도 된다면(최소 0개 이상) Optional이다.
05. 관계 디그리
- 하나의 관계에 포함된 엔터티의 개수를 뜻한다.
- 하나의 관계는 하나의 엔터티나 두개의 엔터티 뿐 아니라 3개 이상의 엔터티에서도 발생한다.
- 1개체 관계 (Unary Relationship): 한 개의 엔터티가 연관된 관계(재귀 관계(Recursive Relationships))
- 2개체 관계 (Binary Relationships): 두 개의 엔터티가 연관된 관계
- 3개체 관계 (Ternary Relationships): 세 개의 엔터티가 연관된 관계
- N개체 관계 (N-ary Relationships): N개의 엔터티가 연관된 관계
8. 특별한 관계의 종류
01. 일대일 관계

- 상위(부모)엔터티의 하나의 인스턴스가 하위(자식)엔터티의 하나의 인스턴스와 연관되는 관계를 말한다.
- 성능이나 업무 규칙에 의해 일대일 관계를 채택할 수 있다.
- 데이터의 성격이 다르면 업무를 표현하기 위해서 일대일 관계를 채택할 수도 있다.
- 유사한 속성을 과도하게 일대일로 분해하는 것은 유의해야 한다.
02. 배타 관계

- 두 개 이상의 상위(부모) 엔터티와 관계를 가지며 상호 배타적(하위(자식)엔터티의 하나의 인스턴스가 한번에 하나의 부모 엔터티와 관계를 가지게 됨)일 때의 관계를 말한다.
03. 재귀 관계

- 하나의 엔터티에서 인스턴스가 같은 엔터티의 다른 인스턴스와 관계를 가진다.
- 주로 계층 구조로 상위와 하위의 개념인 계층 구조(레벨이 존재하는 개념)가 생기는 데이터를 관리하는데 사용되며 엔터티의 개수가 늘어나 조인해야 할 엔터티가 늘어나는 것을 방지해준다.
'SKN > 02. DB' 카테고리의 다른 글
| 07. DDL(Data Definition Language) (0) | 2025.02.19 |
|---|---|
| 06. 정규화 (0) | 2025.02.19 |
| 05. 이상(Anomaly) (0) | 2025.02.19 |
| 02. MySQL 개요 (0) | 2025.02.18 |
| 01. DB 개요 (0) | 2025.02.18 |