[SQLD] 개념 PART1 :: 데이터모델링의 이해 01
*파랑이 책을 참고하여..정리하였습니다.
01. 데이터 모델의 이해
1.데이터 모델링이란?
데이터 베이스의 모델링이란 현실세계를 단순화 하여 표현하는 기법이다.
현실세계를 반영하여 단순화하여 표현해야하며 관리하고자하는 데이터를 모델로 설정한다.
2. 데이터 모델링의 특징
1) 추상화 (Abstraction)
아이디어나 개념을 간략하게 표현하는 과정
2) 단순화 (Simplification)
복잡한 현실세계를 정해진 표기법으로 단순하고 쉽게 표현
3) 명확화 (Clarity)
불분명함을 제거하고 명확하게 해석할 수 있도록 기술
3. 모델링의 세가지 관점
1) 데이터 관점 : 데이터들이 어떤 업무와 얽혀있는지 모델링
2) 프로세스 관점 : 실제 업무가 처리하는 일이 무엇인지 모델링
3) 데이터와 프로세스의 상관 관점 : 업무의 흐름에 따라 데이터가 어떤 영향을 받는지 모델링
4. 모델링의 세가지 단계
1) 개념적 데이터 모델링 (Conceptual Data Modeling)
추상화 레벨이 가장 높은 모델링. 포괄적 모델링이다.
2) 논리적 데이터 모델링 (Logical Data Modeling)
데이터에 대한 key, 속성, 관계등을 표현하는 단계이다.
3) 물리적 데이터 모델링 (Physical Data Modeling)
성능, 가용성등 실제 물리적인 성격을 고려해 모델링을 표현하는 단계이다.
5. 데이터의 독립성
데이터는 독립성을 가진다.
이 말의 의미는, 사용자는 필요한 데이터만 볼수있으면 되고 DBA입장에서는 어플리케이션의 영향을 주지 않고 데이터의 구조를 변경할 수 있어야 한다.
1) 외부 스키마 (External Schema) : 사용자 관점의 스키마를 정의
2) 개념 스키마 (Conceptual Schema) : 전체 데이터 베이스를 나타내며 DB에 저장되는 데이터들을 표현하고 데이터들간의 관계를 나타낸다.
3) 외부 스키마 (Internal Schema) : 물리적인 저장구조를 나타낸다.
논리적 독립성 : 개념 스키마가 변경되어도 외부스키마는 영향받지 않는다.
물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마는 영향받지 않는다.
6. ERD (Entity Relationship Diagram)
시스템의 존재하는 엔티티와 각각의 엔티티들 간의 관계를 나타내는 다이어그램이다.
1) ERD 표기 방식
- Peter Chen : 대학교에서 주로 사용하는 표기, 실무는 드물다.
- IDEFIX (Integration Definition for Informaion Modeling) : 실무에서 사용하는 경우도 있으며 ERWin에서 사용되는 모델이기도 함.
- IE/Crow's Foot : 까마귀발 표기법, 가장 많이 사용.
- Min-Max/ISO : 각 엔터티의 참여도를 더 상세히 나타낸 표기법
- UML : 소프트웨어 공학에서 주로 사용하는 모델
- Case Method/Baker : Oracle에서 사용되는 모델, Crow's Foot 과 비슷 하다.
2) IE / Crow's Foot 표기법
((작성중)))
3) ERD 작성순서
엔터티를 도출하고 그린다 → 엔터티를 적절하게 배치한다 → 엔터티간의 관계를 설정한다 →
관계명을 기입한다 → 관계의 참여도를 기입한다 → 관계의 필수/선택 여부를 기입한다.
02. 엔터티(Entitty)
1. 엔터티란?
식별이 가능한 객체 , 실제 테이블과는 조금 다른 개념이나 테이블로 불리기도 한다.
2. 엔터티의 특징
1) 업무에 쓰이는 정보여야 함
2) 유니크함을 보장할 수 있는 식별자가 있어야 함
3) 두 개 이상의 인스턴스(해당 엔터티안에 포함된 데이터 값이라고 생각하면 된다)를 가지고 있어야 함.
4) 반드시 속성을 가지고 있어야 함
5) 다른 엔터티와 1개 이상의 관계를 가지고 있어야 함
3. 엔터티의 분류
1) 유형 VS. 무형
유형 엔터티 | 물리적인 형태 존재, 안정적, 지속적 예) 상품, 회원 |
개념 엔터티 | 물리적인 형태 없음. 개념적 예) 부서, 학과 |
사건 엔터티 | 행위를 함으로써 발생. 빈번함, 통계 자료로 이용가능 예) 주문, 이벤트 응모 |
2) 발생시점
기본 엔터티 | 독립적으로 생성됨. 자식 엔터티를 가질 수 있음. 예) 상품, 회원 |
중심 엔터티 | 기본 엔터티로부터 파생, 행위 엔터티 생성 예) 주문 |
행위 엔터티 | 2개 이상의 엔터티로부터 파생 예) 주문 내역, 이벤트 응모 이해 |
4. 엔터티의 이름을 지을 때 주의 할 점
- 업무에서 실제로 쓰이는 용어 사용
- 한글은 약어를 사용하지 않고 영문은 대문자로 표기
- 단수 명사로 표현하고 띄어쓰기는 하지 않음
- 다른 엔터티와 의미상으로 중복될 수 없음 (주문, 결제 엔터티는 중복가능)
- 해당 엔터티가 갖고 있는 데이터가 무엇인지 정확하게 표현
03. 속성(Attribute)
1. 속성이란?
사물이나 개념의 특징을 설명해 줄 수 있는 항목으로 엔터티의 특징을 나타내는 최소의 데이터 단위.
2. 속성값
엔터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터로
하나의 속성은 한개의 속성값만 가질 수 있다.
3. 엔터티, 인스턴스, 속성, 속성값의 관계
엔터티 ⊃ 인스턴스 ⊃ 속성
- 한 개의 엔터티는 두 개 이상의 인스턴스를 갖는다.
- 한 개의 인스턴스는 두 개 이상의 속성을 갖는다.
- 한 개의 속성은 하나의 속성값을 갖는다.
4. 속성의 분류
1) 특성에 따른 분류
기본 속성 (Basic Attribute) | 업무 프로세스 분석을 통해 바로 정의가 가능한 속성 |
설계 속성 (Designed Attribute) | 업무에 존재하지는 않지만 설계하다보니 필요하다고 판단되어 도출해낸 속성 |
파생 속성 (Derived Attribute) | 다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성 |
2) 구성방식에 따른 분류
PK속성 | 엔터티의 인스턴스들을 식별할 수 있는 속성 |
FK속성 | 다른 엔터티의 속성에서 가져온 속성 |
일반속성 | PK, FK 를 제외한 나머지 속성 |
5. 도메인 (Domain)
속성이 가질 수 있는 속성값의 범위
04. 관계 (Relationship)
1. 관계란?
엔터티와 엔터티와의 관계를 의미하며 크게 존재와 행위 관계로 나뉜다.
1) 존재 관계 : 존재 자체로 연관성이 있는 관계
2) 행위 관계 : 특정 행위를 함으로써 연관성이 생기는 관계
2. 관계 표기법
관계명 (Membership) : 관계의 이름
관계차수(Cardinality) : 관계에 참여하는 수 (1:1, 1:N, N:M..)
관계선택사양(Optionality) : 필수인지 선택인지의 여부
05. 식별자(Identifiers)
1. 식별자
인스턴스를 구분가능하게 해주는 대표적인 속성을 의미
2. 주식별자
기본키(Primary Key) 에 해당하는 속성이다.
하나의 속성이 주식별자가 될 수 있고, 여러개의 속성이 주식별자가 될 수있다.
다음의 특성을 따른다 .
- 유일성: 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 한다.
- 최소성: 유일성을 보장하는 최소 개수의 속성이어야 한다.
- 불변성: 속성값이 되도록 변하지 않아야 한다
- 존재성: 속성값이 NULL일 수 없다.
3. 분류
1) 대표성 여부
주 식별자 | 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자 다른 엔터티와 참조 관계로 연결 |
보조 식별자 | 인스턴스를 식별할 수 있지만 대표 식별자가 아님 다른 엔터티와 참조관계로 연결되지 않음 |
2) 스스로 생성되었는지 여부
내부 식별자 | 엔터티 내부에서 스스로 생성된 식별자 |
외부 식별자 | 다른 엔터티에서 온 식별자, 다른 엔터티와의 연결고리 역할 |
3) 단일 속성의 여부
단일 식별자 | 하나의 속성으로 구성된 식별자 |
복합 식별자 | 두개 이상의 속성으로 구성된 식별자 |
4) 대체여부
원조 식별자 | 업무 프로세스에 존재하는 식별자 가공되지 않은 원래의 식별자 (본질 식별자) |
대리 식별자 | 주 식별자의 속성이 두개이상인 경우 그 속성을 하나로 묶어서 사용하는 식별자 (인조식별자) |
4. 식별자 vs. 비식별자 관계
식별자 관계 | 부모엔터티의 식별자가 자식 엔터티의 주 식별자가 되는 관계 부모엔터티가 있어야 생성가능. |
비 식별자 관계 | 부모 엔터티의 식별자가 자식엔터티의 주 식별자가 아닌 일반 속성이 되는 관계 부모 엔터티가 없는 자식 엔터티 생성이 가능. |