열정 실천

[SQLD] 001. 데이터 모델링의 이해 본문

CS/DATABASE

[SQLD] 001. 데이터 모델링의 이해

구운오니 2024. 10. 24. 19:14
728x90

 

| 01 | 데이터 모델링의 이해 

 

모델링이란?

현실세계를 단순화하여 표현하는 기법으로 관리하고자 하는 데이터를 모델로 설계한다. 

 

모델링의 특징

- 추상화 : 현실 세계를 일정한 형식으로 표현

- 단순화 : 복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현

- 명확화 : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다.

 

데이터모델링 유의사항 

- 중복 : 같은 데이터가 여러 엔티티에 저장되는 것을 지양

- 비유연성 : 데이터 모델을 쉽게 변경할 수 있도록 데이터 모델과 프로세스를 분리하여 유연성을 높여야함

- 비일관성 : 다른 데이터와의 연관성을 고려하지 않고 일부 데이터만 변경하지 않도록 데이터 간의 연관관계에 대해 명확히 해야한다. 

 

모델링의 세 가지 관점 

- 데이터 관점 : 어떤 데이터들이 업무와 얽혀있는지, 데이터 간에는 어떤 관계가 있는지.

- 프로세스 관점 : 실제로 처리하고 있는 일은 무엇인지. 앞으로 처리해야 하는 일은 무엇인지.

- 데이터와 프로세스의 상관 관점 : 관계 위주 모델링. 프로세스의 흐름에 따라 데이터가 어떻게 변하는지.

 

모델링의 세 가지 단계 

1. 개념적 모델링 : 추상화 레벨이 가장 높은 모델링으로 업무 중심적이고 포괄적인 수준의 모델링 진행

2. 논리적 모델링 : 재사용성이 가장 높은 모델링으로 데이터베이스 모델에 대한 key, 속성, 관계 등을 모두 표현

3. 물리적 모델링 : 실제 데이터베이스를 구현할 수 있도록 물리적인 성격을 고려하여 모델링 진행 

 

3단계 스키마 구조 

1. 외부 스키마 : 사용자의 관점에서 보는 데이터베이스의 스키마를 정의

2. 개념 스키마 : 통합된 관점에서 전체 데이터베이스를 나타낸다. 

3. 내부 스키마 : 물리적인 관점에서 보는 데이터의 저장 구조를 나타낸다. (컬럼 정의, 인덱스 등) 

 

데이터의 독립성 

- 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향받지 않는다. 

- 물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마는 영향받지 않는다. 

 

 

 

 

ERD (Entity Realationship Diagram)

시스템에 어떤 엔티티들이 존재하며 그들 간에 어떤 관계가 있는지를 나타내는 다이어그램 

 

 

 

| 02 | 엔티티 (Entity)

데이터베이스 내에서 식별 가능한 개체 

 

엔티티의 특징 

- 업무에서 쓰이는 정보여야함

- 유니크함을 보장할 수 있는 식별자가 있어야 함

- 2개 이상의 인스턴스(Row)를 가지고 있어야함

- 반드시 속성(Column)을 가지고 있어야함

- 다른 엔터티와 1개 이상의 관계를 가지고 있어야함

 

엔티티의 분류 

1. 유형 vs 무형

- 유형 엔티티    ex) 상품, 회원

- 개념 엔티티    ex) 부서, 학과

- 사건 엔티티    ex) 주문

 

2. 발생시점

- 기본 엔티티   : 독립적으로 생성됨                           ex) 상품, 회원

- 중심 엔티티   : 기본 엔티티로부터 파생                   ex) 주문

- 행위 엔티티   : 2개 이상의 엔티티로부터 파생         ex) 주문 내역

 

엔티티 이름

- 실제로 쓰이는 용어 사용

- 한글은 약어 X, 영문은 대문자 표기

- 단수 명사로 표현

- 띄어쓰기 X

- 다른 엔티티와 의미상 중복 X

 

 

 | 03 | 속성(Attribute)

업무에서 필요로 하는 인스턴스에서 관리하고자하는 의미상 더 분리되지 않는 최소의 데이터 단위

 

엔티티 ⊃ 인스턴스 ⊃ 속성 - 속성값의 관계 

1. 한 개의 엔티티는 두 개 이상의 인스턴스를 갖는다.

2. 한 개의 인스턴스는 두 개 이상의 속성을 갖는다. 

3. 한 개의 속성은 한 개의 속성값을 갖는다. 

 

속성의 분류

1. 특성

- 기본 속성 : 업무 프로세스 분석을 통해 바로 정의가 가능한 속성

- 설계 속성 : 업무에 존재하지는 않지만 필요에 의해 도출해낸 속성 

- 파생 속성 : 다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성 

 

2. 구성방식

- PK 속성 : 엔티티의 인스턴스를 식별할 수 있는 속성 

- FK 속성 : 다른 엔티티의 속성에서 가져온 속성 

- 일반 속성 : PK,  FK를 제외한 나머지 속성

 

도메인 

속성이 가질 수 있는 속성값의 범위로 데이터 타입과 크기로 나타낼 수 있다. 

 

용어 사전

엔터티의 속성명을 정의할 때 명확한 의미의 이름을 부여하고 다른 엔티티와의 혼란을 예방하기 위한 것

 

 

| 04 | 관계 

 

관계 종류 

- 존재 관계 : 존재 자체로 연관성이 있는 관계     ex) 학생 - 학과, 직원 - 부서 

- 행위 관계 : 특정한 행위를 함으로써 연관성이 생기는 관계     ex) 회원 - 주문, 학생 - 출석부

 

관계 표기

 

- 관계명 (Membership)  :  관계의 이름

 

- 관계 차수 (Cardinality)  :  관계에 참여하는 개체 수 

 

- 관계 선택 사양 (Optionality)  :  필수 참여 or 선택 참여

 

 

| 05 | 식별자 

속성 중 각각의 인스턴스를 구분하게 만들어주는 대표 속성 

 

주식별자 

기본키 pk에 해당하는 속성. 하나의 속성일 수도 여러 개의 속성일 수도 있다. 

- 유일성 : 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 만든다. 

- 최소성 : 유일성을 보장하는 최소 개수의 속성이어야 한다. 

- 불변성 : 되도록이면 변하지 않아야한다. 

- 존재성 : 속성 값이 NULL일 수 없다. 

 

분류 

1. 대표성 여부

- 주식별자 : 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자 

- 보조식별자 : 인스턴스를 식별할 수는 있지만 대표 식별자가 아님

2. 스스로 생성되었는지 여부 

- 내부식별자 : 엔티티 내부에서 스스로 생성된 식별자 

- 외부식별자 : 다른 엔티티에서 온 식별자

3. 단일 속성의 여부 

- 단일식별자 : 하나의 속성으로 구성된 식별자 

- 복합식별자 : 두 개 이상의 속성으로 구성된 식별자 

4. 대체 여부 

- 원조식별자 : 업무 프로세스에 존재하는 식별자 

- 대리식별자 : 주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자 

 

식별자 관계 

- 식별자 관계 : 부모의 엔티티 식별자가 자식의 엔티티의 주식별자가 되는 관계 

- 비식별자 관계 : 부모의 엔티티 식별자가 자식의 엔티티의 주식별자가 아닌 일반 속성이 되는 관계

* 부모 엔티티와 자식 엔티티는 1:1 또는 1: N 관계가 형성된다. 

 

 

 

 

 

 

728x90