[SQLD] 데이터 모델링과 엔터티(Entity), 속성(Attribute), 관계(Relationship)
1. 모델링
- 시스템의 대상이 되는 업무를 분석하여 정보 시스템으로 구성하는 과정에서 업무의 내용과 정보 시스
템의 모습을 적절한 표기법(Notation)으로 표현하는 것
- 정보 시스템을 구축하기 위해, 해당 업무에 어떤 데이터가 존재하는지 또는 업무가 필요로 하는 정보는
무엇인지 분석하는 방법
1-1. 데이터 모델링이란
- 정보 시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
- 현실 세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정
- 데이터베이스를 구축하기 위한 분석/설계의 과정
1-1-1. 모델링의 특징
- 추상화 : 현실세계를 일정한 형식에 맞추어 표현
- 단순화 : 복잡한 현실 세계를 약속된 규약에 의해 표현하여 쉽게 이해할 수 있도록 함
- 명확화 : 누구나 이해하기 쉽게 하기 위해 정확
하게 현상을 기술하는 것
1-1-2. 모델링의 관점
- 데이터 관점(What, Data) : 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지에 대해서 모
델링하는 방법
- 프로세스 관점(How, Process) : 업무가 실제 하고 있는 일은 무엇인지 또는 무엇을 해야 하는지를 모델링하는 방법
- 데이터와 프로세스의 상관 관점(Interaction) : 업무가 처리하는 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링하는 방법
1-1-3. 데이터 모델이 제공하는 기능
- 시스템을 현재 또는 원하는 모습으로 가시화
- 시스템의 구조와 행동을 명세화
- 시스템을 구축하는 구조화된 틀을 제공
- 시스템을 구축하는 과정에서 결정한 것을 문서화
- 다양한 영역에 집중하기 위해 다른 영역의 세부 사항은 숨기는 다양한 관점을 제공
- 특정 목표에 따라 구체화된 상세 수준의 표현방법을 제공
1-1-4. 데이터 모델링의 중요성
- 파급효과(Leverage)
- 복잡한 정보 요구사항의 간결한 표현(Conciseness)
- 데이터 품질(Data Quality)
1-2. 데이터 모델링 3단계
- 추상화 수준에 따라 개념적 데이터 모델, 논리적 데이터 모델, 물리적 데이터 모델로 정리
- 개념적 데이터 모델링 : 엔터티(Entity) 중심의 데이터 모델링
- 논리적 데이터 모델링 : 업무의 흐름에 따른 구체화된 업무 중심 데이터 모델링
- 물리적 데이터 모델링 : 데이터베이스 저장 구조에 따른 테이블 스페이스 등을 고려한 모델링
1-2-1. 개념적 데이터 모델링
- 조직, 사용자의 데이터 요구사항을 찾아 분석
- 핵심 엔터티와 그들 간의 관계를 발견하고, 엔터티-관계 다이어그램을 생성
- 사용자와 시스템 개발자가 데이터 요구 사항을 발견하는 것을 지원
1-2-2. 논리적 데이터 모델링
- 비즈니스 정보의 논리적인 구조와 규칙을 명확하게 표현하는 기법
- 논리 데이터 모델의 상세화 : 식별자 확정, 정규화, M:M 관계 해소, 참조 무결성 규칙 정의 등
- 정규화를 수행하여 논리 데이터 모델의 일관성 확보, 중복 제거
- 속성들이 적절한 엔터티에 배치되도록 함으로써 보다 신뢰성 있는 데이터 구조를 얻음
1-2-3. 물리적 데이터 모델링
- 물리적 스키마 : 물리적으로 컴퓨터에 어떻게 저장되는 지에 대한 정의
- 물리적인 저장 구조(테이블, 칼럼), 저장 장치 종류, 자료 추출에 사용될 접근 방법 등을 결정
1-3. 데이터 독립성
- 유지보수 비용 절감, 데이터 복잡도 감소, 중복 데이터 최소화를 위함
- 데이터 독립성 확보 시 효과
- 각 View의 독립성을 유지하고 계층별 View에 영향을 주지 않고 변경이 가능
- 단계별 Schema에 따라 데이터 정의어(DDL)와 데이터 조작어(DML)가 다름을 제공
1-3-1. 데이터 독립성 요소
1-3-2. 영역에 따른 독립성
- 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마에 영향을 미치지 않음
- 물리적 독립성 : 내부 스키마가 변경되어도 외부 스키마는 영향 받지 않음
1-4. 데이터 모델링 3요소
- 엔터티 : 어떤 것(Things)
- 속성 : 엔터티의 세부적인 사항(Attributes)
- 관계 : 엔터티의 연관성(Relationship)
1-5. 데이터 모델 표기법(ERD)
- 1976년 피터첸(Peter Chen)이 Entity-relationship model(E-R Model) 표기법을 만듦
- 각 업무 분석에서 도출된 엔터티와 엔터티 간의 관계를 이해하기 쉽게 도식화된 다이어그램으로 표시하는 방법
- 데이터의 흐름과 프로세스와의 연관성을 이야기하는 데 가장 중요한 표기법이자 산출물
1-5-1. ERD 작업 순서
- 엔터티 그리기 > 엔터티 배치 > 엔터티 간 관계 설정 > 관계명 기술 > 관계의 참여도 기술 > 관계의 필수 여부 기술
- 관계 설정 시, 중복되는 관계가 발생되지 않도록 유의
- 관계 참여도를 나타내기 위해 관계차수(Cardinality) 표현
- 하나(1)의 관계의 경우 IE 표기법은 실선으로 표기, Barker 표기법은 점선과 실선을 혼합하여 표기
1-6. 좋은 데이터 모델의 요소
- 완전성(Completeness) : 업무에서 필요로 하는 모든 데이터가 데이터 모델에 정의되어 있어야 함
- 중복배제(Non-Redundancy) : 저장공간 절약, 데이터의 일관성을 위해 하나의 데이터베이스 내에 동일한 사실은 반드시 한 번만 기록
- 업무규칙(Business Rules) : 업무규칙을 데이터 모델에 표현하고, 이 데이터 모델을 활용하는 모든 사용자가 공유할 수 있도록 함
- 데이터 재사용(Data Reusability) : 통합 모델이어야만 데이터 재사용성을 향상시킬 수 있음
- 의사소통(Communication) : 데이터 모델이 의사소통의 도구 역할을 함
- 통합성(Integration) : 동일한 데이터는 조직의 전체에서 한번만 정의되고 이를 여러 다른 영역에서 참조, 활용하는 것이 가장 바람직한 데이터 구조의 형태
2. 엔터티(Entity)
- 변별할 수 있는 사물 (Peter Chen, 1976)
- 데이터베이스 내에서 변별 가능한 객체 (C.J Date, 1986)
- 정보를 저장할 수 있는 어떤 것 (James Martin, 1989)
- 정보가 저장될 수 있는 사람, 장소, 물건, 사건 그리고 개념 등 (Thomas Bruce, 1992)
- 사람, 장소, 물건, 사건, 개념 등의 명사
2-1. 엔터티의 특징
- 엔터티는 그 집합에 속하는 개체들의 특성을 설명할 수 있는 속성(Attribute)을 가짐
- 엔터티는 인스턴스의 집합, 인스턴스는 엔터티의 하나의 값에 해당
2-1-1. 엔터티의 특징
- 업무에서 필요로 하는 정보 : 시스템을 구축하고자 하는 업무에서 필요로 하고 관리하고자 하는 정보
- 식별 가능 : 식별자(Unique Identifier)에 의해 식별이 가능해야 함
- 인스턴스의 집합 : 영속적으로 존재하는 인스턴스의 집합이 되어야 함
- 업무 프로세스에 의해 이용 : 업무프로세스(Business Process)가 그 엔터티를 반드시 이용해야 함
- 속성을 포함 : 엔터티에는 반드시 속성(Attributes)이 포함되어야 함
- 관계의 존재 : 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 존재해야 함
- 관계 생략 가능한 경우는 다음과 같음
- 통계를 위한 엔터티는 통계 업무(Read Only)만을 위해 정의하게 됨
- 코드성 엔터티는 관계 설정 시 읽기 효율성(Readability)이 저하됨
- 트랜잭션 로그 테이블 등 시스템 처리 시 내부 필요에 의한 엔터티는 관계 설정 필요 X
2-2. 엔터티의 분류
- 유무형에 따라 구분하거나 발생 시점에 의해 구분됨
- 스스로 생성될 수 있는지 여부에 따라 독립 엔터티, 의존 엔터티 구분
2-2-1. 유무형에 따른 분류
- 엔터티는 유무형에 따라 유형 엔터티, 개념 엔터티, 사건 엔터티로 구분
- 유형 엔터티(Tangible Entity)
- 물리적 형태가 있고, 안정적이며 지속적으로 활용되는 엔터티
- 업무로부터 엔터티를 구분하기 가장 용이
- ex. 사원, 물품, 강사 등
- 개념 엔터티(Conceptual Entity)
- 물리적 형태가 존재하지 않고 관리해야 할 개념적 정보로 구분되는 엔터티
- ex. 조직, 보험상품 등
- 사건 엔터티(Event Entity)
- 업무 수행에 따라 발생되는 엔터티
- 비교적 발생량이 많으며 각종 통계 자료에 이용됨
- ex. 주문, 청구, 미납 등
2-2-2. 발생 시점에 따른 분류
- 엔터티의 발생 시점에 따라 기본 엔터티, 중심 엔터티, 행위 엔터티로 구분
- 기본/키 엔터티(Fundamental Entity, Key Entity)
- 그 업무에 원래 존재하는 정보
- 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성 가능 > 다른 엔터티로부터 주식별자를 상속 받지 않고 고유한 주식별자를 가짐
- 자신은 타 엔터티의 부모 역할
- ex. 사원, 부서, 고객, 상품, 자재 등
- 중심 엔터티(Main Entity)
- 기본 엔터티로부터 발생되며, 그 업무의 중심적인 역할
- 데이터 발생량이 많고, 다른 엔터티와의 관계를 통해 많은 행위 엔터티를 생성
- ex. 계약, 사고, 예금원장, 청구, 주문, 매출 등
- 행위 엔터티(Active Entity)
- 두 개 이상의 부모 엔터티로부터 발생
- 자주 내용이 바뀌거나 데이터 양이 많음
- 분석 초기 단계에서는 잘 나타나지 않으며 상세 설계 단계나 프로세스와 상관 모델링을 진행하면서 도출
- ex. 주문 목록, 사원 변경 이력 등
2-3. 엔터티의 명명
- 현업 업무에서 사용하는 용어를 사용
- 약어 사용 지양
- 단수 명사 사용
- 모든 엔터티에서 유일하게 이름이 부여되어야 함
- 엔터티 생성 의미대로 이름 부여
3. 속성(Attribute)
- 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위
3-1. 엔터티와 속성, 속성값, 인스턴스
- 엔터티에는 두 개 이상의 인스턴스가 존재
- 각각의 엔터티에는 고유의 성격을 표현하는 속성 정보가 두 개 이상 존재
- 한 개의 속성은 한 개의 속성값을 가짐
3-2. 속성의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 함
- 정규화 이론에 의해 정해진 주식별자에 함수적 종속성을 가짐
- 하나의 속성에는 한 개의 값만 가짐 (한 속성에 여러 값이 있는 경우 별도 엔터티를 이용하여 분리)
3-3. 속성의 분류
- 속성의 특성에 따라 구분하거나, 엔터티 구성 방식에 따라 구분
3-3-1. 속성의 특성에 따른 분류
- 기본 속성(Basic Attribute)
- 설계 속성(Designed Attribute)
- 원래 업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성
- 코드성 속성은 업무상 필요에 의해 원래 속성을 변형하여 만든 설계 속성
- 일련 번호와 같은 속성은 단일(Unique)한 식별자를 부여하기 위해 모델 상에서 새로 정의하는 설계 속성
- 파생 속성(Derived Attribute)
- 다른 속성으로부터 계산이나 변형이 되어 생성되는 속성
- 통계관련 엔터티나 배치 작업이 수행되면서 발생되는 엔터티의 경우 사용
3-3-2. 엔터티 구성 방식에 따른 분류
- PK(Primary Key)속성 : 엔터티를 식별할 수 있는 속성
- FK(Foreign Key)속성 : 다른 엔터티와의 관계에서 포함된 속성
- 일반속성 : 엔터티에 포함되어 있고 PK, FK 에 포함되지 않은 속성
3-4. 도메인(Domain)
- 엔터티 내에서 속성에 대한 데이터 타입과 크기, 제약 사항을 지정하는 것
- 속성의 도메인 : 각 속성이 가질 수 있는 값의 범위
3-5. 속성의 명명
- 속성명은 사용자 인터페이스(User Interface)에 나타나기 때문에 업무와 직결되는 항목
- 용어 사전 : 속성 이름을 정확하게 부여하고 용어의 혼란을 없애기 위해 사용하는 업무 사전
- 각 속성값의 종류와 범위를 명확하게 하기 위해 미리 도메인을 정의하여 용어 사전과 같이 사용
- 용어 사전과 도메인 정의를 같이 사용 > 용어적 표준, 데이터 타입의 일관성 확보
3-5-1. 속성의 명명 규칙
- 현업 업무에서 사용하는 용어를 사용
- 약어 사용 지양
- 서술식 속성명 지양
- 전체 데이터모델에서 유일성 확보
4. 관계(Relationship)
- 엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태
- 관계의 페어링 : 엔터티 안의 인스턴스가 개별적으로 관계를 가지는 것
4-1. 관계의 분류
- 존재에 의한 관계
- 부서 엔터티와 사원 엔터티는 소속을 나타내는, 존재 형태에 의해 형성되는 관계
- 행위에 의한 관계
- 고객 엔터티와 주문 엔터티는 고객의 주문 행위에 의한 관계
4-2. 관계의 표기법
- 관계명(Membership) : 관계의 이름
- 관계차수(Cardinality) : 1:1, 1:M, M:N
- 관계선택사양(Optionality) : 필수 관계, 선택 관계
4-2-1. 관계명
- 엔터티가 관계에 참여하는 형태를 지칭
- 각각의 관계는 두 개의 관계명을 가짐 > 각각의 관계명에 의해 두 가지의 관점으로 표현됨
4-2-2. 관계차수
- 두 개의 엔터티간 관계에서 참여자의 수를 표현하는 것
- Crow’s Foot 모델에서 관계차수 표기법 : 선을 이용하여 표현(한 개가 참여하는 경우 실선, 다수가 참여한 경우 까마귀발 모양)
4-2-3. 관계선택사양
- 참여하는 엔터티가 항상 참여하는지 아닌지 나타내는 방법 > 필수(Mandatory Membership)와 선택 참여(Optional Membership)
- 주문서와 주문목록은 필수참여관계
- 상품목록과 주문목록은 선택참여관계
- 선택참여관계 > ERD에서 관계를 나타내는 선의 선택참여하는 엔터티 쪽을 원으로 표시