[SQLD] 데이터 모델링의 이해 (SQLD, D-14)
Categories: Database
📌 개인적인 공간으로 공부를 기록하고 복습하기 위해 사용하는 블로그입니다.
정확하지 않은 정보가 있을 수 있으니 참고바랍니다 :😸
[틀린 내용은 댓글로 남겨주시면 복받으실거에요]
Chapter 1 데이터 모델링의 이해 요약
데이터 모델링
데이터 모델링 단계
모델링 단계 | 추상화 수준 | Description |
---|---|---|
개념적 데이터 모델링 | 높다 | 가장 먼저 수행하는 데이터 모델링 |
업무와 개념 중심으로 모델링을 수행 | ||
논리적 데이터 모델링 | 중간 | 개념적 모델링을 기본으로 하여 키, 속성, 관계 등을 정의하며 정규화를 통한 중복 저장의 최소화, 식별자의 확정 등을 수행 |
물리적 데이터 모델링 | 낮다 | 데이터베이스를 실제로 구축하고 성능, 보안, 저장 등 물리적인 수준에서 모델링 수행 |
반정규화를 통한 성능최적화 최적화 작업을 수행 |
데이터 모델링의 관점
- 데이터 관점 (대상, what)
- 업무를 구성하는 데이터에 집중하여 어떤 데이터들이 서로 관계를 맺고 사용되는지를 모델링
- 정적분석, 구조분석을 기반
- 프로세스 관점 (처리방법, how)
- 업무의 흐름에 집중
- 동적 분석, 도메인 분석
- 데이터와 프로세스의 상관관점 (대상과 처리방법의 상관관계, Interaction)
- 데이터와 프로세스가 어떻게 관계를 맺고 영향을 주는지 모델링
- CRUD 분석을 기반으로 함
ANSI-SPARC에서 정의한 3단계 스키마 구조
- 외부스키마 : 사용자 관점 (다중 사용자 뷰)
- 개념스키마 : 설계자 관점 (통합 뷰)
- 내부스키마 : 개발자 관점 (물리적 뷰)
- 3단계 스키마 구조를 통해 보장되는 데이터 독립성
- 논리적 데이터 독립성 : 외부스키마와 개념스키마간의 독립성, 개념스키마가 변경되어도 외부스키마는 영향을 받지 않는다.
- 물리적 데이터 독립성 : 개념 스키마와 내부스키마 간의 독립성, 내부스키마가 변경되어도 개념스키마나 외부스키마는 영향을 받지 않는다.
ERD 작성 순서
엔티티 도출 → 엔티티 배치 → 관계도출 → 관계명, 관계차수, 관계선택사양 기술
Entity
엔티티의 분류
- 발생 시점/ 상속 관계에 따른 분류
- 기본 엔티티 : 주식별자를 가지는 독립적으로 생성되는 엔티티
- 중심 엔티티 : 기본엔티티로부터 주식별자를 상속받아 생성되며 업무의 중심역할을 하는 엔티티
- 행위 엔티티 : 두 개 이상의 엔티티를 상속받아 생성되는 엔티티, 자주 변경되거나 데이터 양이 계속 증가된다.
- 물리적 형태의 존재여부에 따른 분류
- 유형 엔티티: 물리적 형태가 존재하는 엔티티 (ex. 학생, 상품)
- 개념 엔티티 : 물리적 형태 없이 개념적으로 정의되는 엔티티 (ex. 부서, 상품분류)
- 사건 엔티티 : 업무를 수행하면 서 발생하는 행위나 이벤트를 나타내는 엔티티 (ex. 주문, 대여, 수강)
엔티티 명명법
- 엔티티 생성 의미대로 이름을 부여하고 간결하고 명확하게 표현한다
- 약어 사용하지 않지만 , 너무 길어지면 약어를 표준화하여 사용할 수 있다.
- 영문의 경우 대문자를 사용하고 단수 명사를 사용한다.
- 협업의 업무 용어를 사용하여 업무상의 의미를 분명하게 한다.
- 모든 엔티티의 이름은 서로 구별할 수 있도록 유일해야 한다.
- 의미상 중복이 없어야 한다.
속성
도메인
- 속성이 가질 수 있는 값의 범위
- 도메인이 지정된 속성은 해당 도메인의 데이터 타입, 크기, 제약사항을 따른다.
식별자
주식별자
주식별자는 해당 엔티티 인스턴스를 유일하게 구별해주는 식별자로서 네가지 성질을 만족해야 함
- 유일성 : 엔티티의 인스턴스를 유일하게 구별할 수 있어야 한다.
- 최소성 : 최소 개수의 속성이 되어야 한다.
- 불변성 : 최초 생성 시 부여된 값에서 변경되지 않고 유지되어야 한다.
- 존재성 : Not Null
식별자의 분류
- 대표성의 여부
- 주식별자 (PK) : 해당 엔티티 인스턴스를 유일하게 구별할 수 있는 식별자로 유일성, 최소성, 불변성, 존재성을 만족하고 다른 엔티티와 참조관계를 연결할 수 있는 식별자
- 보조식별자 (AK): 엔티티를 유일하게 구별할 수 있는 식별자 이기는 하나 대표성을 가지지 못하며 다른 엔티티와 참조관계를 연결할 수 없는 식별자
- 스스로 생성 여부
- 내부 식별자 : 엔티티 내부에서 스스로 만들어지는 식별자
- 외부 식별자(FK) : 관계를 통해 다른 엔티티로 받아오는 식별자
- 속성의 수
- 단일 식별자 : 식별자를 구성하는 속성이 하나인 식별자
- 복합 식별자 : 식별자를 구성하는 속성이 둘 이상인 식별자
- 대체 여부
- 본질 식별자: 업무에 존재하는 본래의 식별자, 비즈니스 프로세스에 의해 만들어지는 식별자
- 인조 식별자 (=대리식별자): 업무에 존재하지 않으나 원조 식별자가 너무 복잡하게 구성되어 있어 인위적으로 만든 식별자
후보키 : 유일성과 최소성을 만족하는 속성으로 주식별자, 보조식별자 모두 해당
식별자/ 비식별자 관계
- 식별자
- 엔티티간의 강한 연결관계
- 실선으로 표현
- 부모와 자식간의 같은 생명주기
- 비식별자
- 약한 연결관계
- 점선으로 표현
- 부모와 자식간의 다른 생명주기
갑자기 프로젝트하면서 엔티티 명명법이 헷갈렸었는데 api는 복수여야하는데 엔티티는 또 단수여야하니까 헷갈렸던 것 같다. 수업때는 엔티티 간의 관계 (여기서는 카디널리티 라고 하는 듯)에만 초점이 맞춰져 있어서 알지만 생소한 용어가 많았다. 그래도 정처기 필기 공부할 때 보던 단어들이라서,, 식별자 비식별자, 후보키 이런거 대충 느낌만 알았는데 조금 더 자세히 공부할 수 있었다
Leave a comment