데이터 모델의 이해
데이터 모델은 데이터를 어떻게 구조화할지에 대한 개념적 틀이자 표현 방식이다. 즉, 현실 세계의 정보를 컴퓨터에서 표현하기 위한 방식을 의미한다. 데이터 모델링은 데이터 모델을 실제로 설계에 적용하는 작업이다. 즉, 어떤 데이터를 어떤 테이블에 어떻게 담을지, 어떤 관계를 맺을지를 구체화하는 과정을 의미한다. 그렇기에 데이터 모델링의 이해는 곧 데이터 모델을 이해하는 과정이다.
모델링의 특징
현실 세계 정보를 컴퓨터에서 표현을 좀 더 잘하려는 연구가 이루어지다 보니 자연스레 아래와 같은 특징이 생겨났다.
- 추상화(Abstraction): 현실 세계를 일정한 형식으로 표현하는 것이다. 즉, 아이디어나 개념을 간략하게 표현하는 과정이다.
- 단순화(Simplification): 복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현한다는 의미이다.
- 명확화(Clarity): 불명확함을 제거하고 명확하게 해석할 수 있도록 기술한다는 의미이다.
모델링의 세 가지 관점
데이터 모델을 만들 때 어떠한 방식으로 설계하느냐에 따라 아래와 같이 나뉘어질 수 있다. 각 관점은 업무를 어떻게 데이터베이스나 시스템 구조로 모델링할지 결정하는 기준이 되는 축들이고, 서로 유기적으로 연결돼 있다.
- 데이터 관점(Data, What): 데이터 위주의 모델링, 어떤 데이터들이 업무와 얽혀있는 지, 그리고 이 데이터간에는 어떤 관계가 이는 지에 대해서 모델링하는 방법이다.
- 프로세스 관점(Process, How): 프로세스 위주의 모델링, 이 업무가 실제로 처리하고 있는 일은 무엇인지 또는 앞으로 처리해야 하는 일은 무엇인지를 모델링하는 방법이다.
- 데이터와 프로세스의 상관 관점(Interaction): 데이터와 프로세스의 관계를 위주로 한 모델링, 프로세스의 흐름에 따라 데이터가 어떤 영향을 받는 지 모델링하는 기법이다.
데이터의 품질
데이터의 품질(데이터의 신뢰도, 정확성 등을 나타내는 척도)을 보장하기 위해 데이터 모델링 시 다음을 유의해야 한다.
- 중복(Duplication): 같은 데이터가 여러 엔터티에 중복으로 저장되는 현상을 지양해야 한다.
- 비유연성(Inflexibility): 데이터 모델과 프로세스를 분리하여 유연성을 높이는 것이 바람직하다.
- 비일관성(Inconsistency): 데이터 간의 연관 관계에 대해 명확하게 정의해야 한다.
모델링의 세 가지 단계
데이터 모델링의 세 가지 단계는 정보시스템을 설계하고 구축하는 데 있어 핵심적인 절차이다. 각 단계는 추상화 수준과 목적에 따라 구분되며, 이 세 단계는 상호 유기적으로 연결되어 있다. 또한 데이터 중심의 시스템 개발을 위한 탄탄한 설계 기반을 제공한다.
- 개념적 데이터 모델링(Conceptual Data Modeling): 전사적 데이터 모델링 수행 시 행해지며 추상화 레벨이 가장 높은 모델링이다. '무엇을 다루는가?'를 초점으로 두고 있다.
- 논리적 데이터 모델링(Logical Data Modeling): 재사용성이 가장 높은 모델링으로 데이터베이스 모델에 대한 Key, 속성, 관계 등을 모두 표현하는 단계이다. '어떻게 구성할 것이가?'를 초점으로 두고 있다.
- 물리적 데이터 모델링(Physical Data Modeling): 실제 데이터베이스로 구현할 수 있도록 성능이나 가용성 등의 물리적인 성격을 고려하여 모델을 표현하는 단계이다. '어떻게 구현할 것인가?'를 초점으로 두고 있다.
데이터의 독립성
데이터를 어떻게 저장하고 표현하는지에 대한 변경이, 그 데이터를 사용하는 프로그램이나 상위 계층에 영향을 미치지 않도록 하는 것을 데이터의 독립성이라 한다. 즉, 시스템의 유연성과 유지보수성을 높이기 위한 구조적 특성이다. 대표적으로 3단계 스키마 구조가 있다.
3단계 스키마 구조
- 외부 스키마(External Schema): 사용자가 보는 데이터 베이스의 스키마를 정의한다.
- 개념 스키마(Conceptual Schema): 모든 사용자가 보는 데이터베이스의 스키마를 통합하여 전체 데이터베이스를 나타내는 것이다. 데이터베이스에 저장되는 데이터들을 표현하고 데이터들 간의 관계를 나타낸다.
- 내부 스키마(Internal Schema): 실질적인 데이터의 저장 구조나 컬럼 정의, 인덱스 등이 포함되는 물리적인 저장 구조를 나타낸다.
ERD(Entity Rekationship Diagram)
시스템에 어떤 엔터티들이 존재하며 그들 간에 어떤 관계가 있는 지를 나타내는 다이어그램이다. ERD(Entity-Relationship Diagram, 개체-관계 다이어그램)은 현실 세계의 데이터를 시각적으로 표현하는 도구로, 데이터베이스 설계의 가장 기초적인 단계에서 사용된다.
ERD의 구성 요소
1. 개체(Entity)
- 독립적으로 존재할 수 있는 데이터의 단위
- 현실 세계의 대상(사람, 사물, 개념 등)을 표현
- 보통 직사각형으로 나타냄
- 예: 학생, 강의, 도서, 고객
2. 속성(Attribute)
- 개체가 가지고 있는 세부 정보, 특징
- 보통 타원형으로 나타내며, 개체에 연결
- 예: 이름, 학번, 생년월일
3. 관계(Relationship)
- 두 개 이상의 개체 사이의 연결
- 보통 마름모(다이아몬드) 형태로 표현
- 예: 수강한다, 구매한다, 대여한다
4. 기타 요소
- 기본 키 (Primary Key): 개체를 유일하게 식별하는 속성
- 다중값 속성: 하나 이상의 값을 가질 수 있는 속성 (전화번호 등)
- 관계의 차수(Cardinality): 1:1, 1:N, N:M 등 관계 수
- 관계의 참여 제약조건: 필수(전체 참여), 선택(부분 참여)
ERD의 역할과 목적
- 요구사항 분석 단계에서 업무 데이터 구조 시각화
- 테이블로 변환되기 전 데이터 간 관계 정의
- 논리 모델링의 기초가 됨
- 업무 관계자와 설계자 간의 소통 도구 역할
- 중복 데이터 제거 및 정규화 작업 전 구조 확인
간단 예시
[고객] [상품]
+-----------+ +-----------+
| 고객ID (PK) |<------------+ | 상품ID (PK) |
| 이름 | | | 상품명 |
| 이메일 | | | 가격 |
+-----------+ | +-----------+
|
| 1:N
|
[주문]
+------------+
| 주문ID (PK) |
| 고객ID (FK) |
| 주문일 |
+------------+
|
| 1:N
|
[주문상세]
+-------------------+
| 주문ID (FK) |
| 상품ID (FK) |
| 수량 |
+-------------------+
엔터티(Entity)
Entity는 '독립체'라는 의미로 데이터베이스에서 엔터티는 식별이 가능한 객체를 의미한다. 즉, 데이터를 용도별로 분류한 그룹이다. 각각의 엔터티는 자신을 더 상세하게 나타내기 위해 속성을 갖는다. 그리고 이러한 속성을 지닌 객체를 인스턴스라고 한다.
엔터티 특징
- 사용하는 정보여야 한다.
- 유니크함을 보장할 수 있는 식별자가 있어야 한다.
- 2개 이상의 인스턴스를 가지고 있어야 한다.
- 반드시 속성을 가지고 있어야 한다.
- 다른 엔터티와 1개 이상의 관계를 가지고 있어야 한다.
엔터티 분류
기준 유형&무형
- 유형 엔터티: 물리적인 형태 존재, 안정적, 지속적
- 개념 엔터티: 물리적인 형태 없음, 개념적
- 사건 엔터티: 행위를 함으로써 발생, 빈번함, 통계 자료로 이용 가능
발생 시점
- 기본 엔터티: 원래 존재하는 정보, 독립적으로 생성되며, 자식 엔터티를 가질 수 있다.
- 중심 엔터티: 기본 엔터티로부터 파생되고, 행위 엔터티 생성, 업무에 있어서 중심적인 역할을 하며 데이터의 양이 많이 발생
- 행위 엔터티: 2개 이상의 엔터티로부터 파생, 데이터가 자주 변경되거나 증가할 수 있음
이름 정할 때 주의점
엔터티의 이름을 짓을 때 해당 설계 내에서 혼돈이 없도록 주의해야 할 점이 있다. 일반적으로 실제 사용하는 용어 사용, 한글은 약어를 사용하지 않고 영문은 대문자로 표기, 단수 명사로 표현하고 띄어쓰기 하지 않음, 다른 엔터티와 의미상으로 중복될 수 없음, 해당 엔터티가 갖고 있는 데이터가 무엇인지 명확하게 표현 등이 있다.
속성(Arrtibute)
속성이란 사물이나 개념의 특징을 설명해줄 수 있는 항목들을 말한다. 속성은 의미상 더 이상 쪼개지지 않는 의미에서 정의되며, 프로세스에 필요한 항목이라는 특징이 있다. 각각의 속성은 속성값을 가지며 엔터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터라고 볼 수 있다. 하나의 속성은 한 개의 속성값만 가질 수 있으며, 만약 하나의 속성이 여러 개의 속성값을 갖는 경우 별도의 엔터티로 분리하는 것이 바람직하다. '엔터티 ⊃ 인스턴스 ⊃ 속성'의 관계가 성립한다.
분류
특성에 따른 분류
- 기본 속성(Basic Attribute): 업무 프로세스 분석을 통해 바로 정의가 가능한 속성
- 설계 속성(Desigened Attribute): 업무에 존재하지는 않지만 설계하다 보니 필요하다고 판단되어 도출해낸 속성
- 파생 속성(Derived Attribute): 다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성
구성 방식에 따른 분류
- PK(Primary Key) 속성: 엔터티의 인스턴스들을 식별할 수 있는 속성
- FK(Foreign Key) 속성: 다른 엔터티의 속성에서 가져온 속성
- 일반속성: PK,FK를 제외한 나머지 속성
도메인(Domain)
속성이 가질 수 있는 속성값의 범위를 도메인이라 한다.
관계(Relationship)
엔터티와 엔터티와의 관계를 의미하며, 어떠한 연관성이 있는 지 타입을 분류하여 존재 관계와 행위 관계로 나눌 수 있다.
- 존재 관계: 존재 자체로 연광성이 있는 관계
- 행위 관계: 특정한 행위를 함으로써 연관성이 생기는 관계
표기법
- 관계명(Membership): 관계의 이름
- 관계차수(Cardinality): 관계에 참여하는 수
- 관꼐선택사양(Optionality): 필수인지 선택인지의 여부
식별자(Identifiers)
모든 엔터티는 인스턴스를 가지고 있는 인스턴스는 속성으로 자신의 특성을 나타낸다. 식별자는 이런 속성 중에 각각의 인스턴스를 구분 가능하게 만들어주는 대표적인 속성을 의미한다. 주식 별자는 기본키, PK에 해당하는 속성이다.
특징
식별자는 각각의 인스턴스를 구분해주기에 아래와 같은 특징을 가지고 있다.
- 유일성: 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 한다.
- 최소성: 유일성을 보장하는 최소 개수의 속성이어야 한다.
- 불변성: 속성값을 되도록 변하지 않아야 한다.
- 존재성: 속성값이 NULL일 수 없다.
분류
대표성 여부
- 주식별자(Primary Identifier): 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자, 다른 엔터티와 참조 관계로 연결
- 보조식별자(Alternate Identifier): 인스턴스를 식별할 수 있지만 대표 식별자는 아님, 다른 엔터티와 참조 관계로 연결되지 않음
자체 생성 여부
- 내부식별자(Internal Identifier): 엔터티 내부에서 스스로 생성된 식별자
- 외부식별자(Foreign Identifier): 다른 엔터티에서 온 식별자, 다른 엔터티와의 연결고리 역할
단일 속성 여부
- 단일식별자(Single Identifier): 하나의 속성으로 구성된 식별자
- 복합시별자(Composite Identifier): 두 개 이상의 속성으로 구성된 식별자
대체 여부
- 원조 식별자(Original Identifier): 업무 프로세스에 존재하는 식별자, 가공되지 않은 원래의 식별자
- 대리 식별자(Surrogate Identifier): 주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자
식별자와 비식별자 관계
- 식별자 관계: 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계이다. 주식별자는 반드시 존재해야 하므로(존재성) 부모 엔터티가 있어야 생성 가능하다.
- 비식별자 관계: 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계이다. 일반 속성의 속성값은 NULL이 될 수 있으므로 부모 엔터티가 없는 자식 엔터티 생성이 가능하고 마찬가지의 이유로 자식 엔터티가 존재하는 상태에서 부모 엔터티가 삭제될 수도 있다.
댓글