본문 바로가기
Resource/SQLD

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

by 우창욱 2024. 2. 19.

데이터 모델링

1. 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법

2. 현실 세계의 데이터(what)를 약속된 표기법으로 표현하는 과정

3. 데이터베이스를 구축하기 위한 분석 및 설계의 과정

데이터 모델링의 유의점

개념 예시
중복 (Duplication) 같은 시간에 같은 데이터를 제공한다.
비유연성 (Inflexibility) 사소한 업무 변화에 데이터 모델이 수시로 변경되어서는 안된다.
비일관성 (Inconsistency) 신용 상태에 대한 갱신 없이 고객의 납부 이력 정보를 갱신해서는 안된다.

데이터베이스 스키마 구조 3단계 / 데이터 독립성 요소

이름 설명
외부스키마 (External Schema) 개인 사용자가 보는 개인적 DB 스키마
개념스키마 (Conceptual Schema) 모든 사용자 관점을 통합한 전체 DB
내부스키마 (Internal Schema) 데이터가 실제로 저장하는 물리적 장치

 

데이터 독립성

개념 설명
논리적 독립성 개념스키마가 변경되어도 외부 스키마에 영향을 주지 않는다.
물리적 독립성 내부스키마가 변경되어도 외부 / 개념 스키마에는 영향을 주지 않는다.

 


엔터티

업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것을 의미합니다. 이는 현실 세계의 객체나 사건을 데이터베이스 내에서 표현하기 위한 단위입니다. 엔터티는 데이터베이스에서 관리되는 정보의 기본적인 요소로, 식별 가능한 특정 정보의 집합을 의미합니다.

엔터티는 테이블 형태로 구성되며, 각 엔터티는 고유한 속성(Attributes)을 가지고 있습니다.

 

엔터티의 특징

개념 설명
유일성 (Uniqueness) 각 엔터티는 식별 가능한 고유한 특성을 가져야 한다.
ex) '고객' 엔터티는 고객 ID를 통해 각 고객을 구분할 수 있어야 한다.
독립성 (Independence) 엔터티는 독립적으로 존재할 수 있어야 하며, 다른 엔터티의 존재 유무에 영향을 받지 않는다.
속성 (Attribute) 엔터티는 여러 속성을 가질 수 있으며, 이 속성들은 엔터티를 구성하는 정보 조각이다.
업무 필요성 (Necessity for the Business) 엔터티는 해당 업무에서 필요하고, 관리하고자 하는 정보를 포함해야 한다.
ex) 고객 관리 시스템에서 '고객' 엔터티는 업무에 필수적인 정보를 제공한다.
업무 프로세스에 이용 엔터티는 업무 프로세스에 의해 생성, 사용, 관리되어야 한다.
다른 엔터티와의 관계 엔터티는 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다.

 

발생 시점에 따라 구분할 수 있는 엔터티의 유형

개념 설명
기본, 키 엔터티 (Fundamental Entity, Key Entity) 그 업무에 원래 존재하는 정보, 타 엔터티의 부모 역할, 자신의 고유한 주 식별자를 가진다.
ex) 사원, 부서
중심 엔터티 (Main Entity) 기본 엔터티로부터 발생한다. 다른 엔터티와의 관계로 많은 행위 엔터티를 생성한다.
ex) 계약, 사고, 주문
행위 엔터티 (Active Entity) 2개 이상의 부모 엔터티로부터 발생한다. 자주 바뀌거나 양이 증가한다.
ex) 주문목록, 사원변경이력

데이터 모델 표기법

1976피터 첸(Peter Chen)에 의해 Entity-Relationship Model(E-R Model)이라는 표기법이 만들어졌습니다.

 

Entity Relationship Diagram 작업 순서

1. 엔터티 그림

2. 엔터티 배치

3. 엔터티 관계 설정

4. 관계명 기술

5. 관계의 참여도 기술

6. 관계 필수 여부

 

엔터티 명명 규칙

- 현업 업무에서 사용하는 용어를 사용한다.

- 약어 사용을 금지한다.

- 단수 명사를 사용한다.

- 고유한 이름을 사용한다.

- 생성한 의미대로 부여한다.


속성

속성은 업무에서 필요로 하는 인스턴스를 관리하고자 하는 의미상으로 분리되지 않는 최소의 데이터 단위를 의미합니다.

- 한 개의 엔터티는 2개 이상의 인스턴스 집합을 가집니다.

- 한 개의 엔터티는 2개 이상의 속성을 가집니다.

- 한 개의 속성은 1개의 속성값을 가집니다.

 

속성의 분류

이름 설명
기본 속성 업무로부터 추출한 모든 일반적인 속성
설계 속성 업무를 규칙화하기 위해 새로 만들거나 변형, 정의하는 속성
ex) 일련번호
파생 속성 다른 속성에 영향을 받아 발생하는 속성, 빠른 성능을 낼 수 있도록 원래 속성의 값을 계산한다.
ex) 합

속성의 명명 규칙

1.  해당 업무에서 사용하는 이름을 부여한다.

2. 서술식의 속성명은 사용을 금지한다.

3. 약어를 사용하지 않는다.

4. 전체 데이터 모델에서 유일성을 확보한다.

도메인

각 속성이 가질 수 있는 값의 범위를 의미합니다. ex) 5글자 내외


관계

엔터티의 인스턴스 사이 논리적인 연관성을 의미합니다. 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태입니다.

페어링

엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것을 의미합니다.

 

UML 에는 연관관계의존관계가 있는데, 연관관계는 항상 이용하는 관계이고, 의존관계는 상대방의 행위에 의해 발생하는 관계입니다. ERD에서는 존재적 관계와 행위에 의한 관계를 구분하지 않고 표기하였지만 UML에서는 이를 구분해서 연관관계는 실선, 의존관계는 점선으로 표현합니다.

 

관계의 표기법

이름 설명
관계명 관계의 이름
관계 차수 1:1, 1:M, M:N
관계선택성(관계선택사양) 필수관계, 선택관계

 

관계 체크사항

1. 2개의 엔터티 사이에 관심있는 연관 규칙이 존재하는가?

2. 2개의 엔터티 사이에 정보의 조합이 발생하는가?

3. 업무기술서와 장표에 관계연결에 대한 규칙이 서술되어 있는가?

4. 업무기술서와 장표에 관계연결을 가능하게 하는 동사가 있는가?


식별자

엔터티 내에서 인스턴스를 구분하는 구분자를 의미합니다. 식별자논리 데이터 모델링 단계에서 사용합니다. Key물리 데이터 모델링 단계에서 사용합니다.

 

식별자의 특징

이름 설명
유일성 주식별자에 의해 모든 인스턴스들이 유일하게 구분된다.
최소성 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
불변성 지정된 주식별자의 값은 자주 변하지 않아야 한다.
존재성 주식별자가 지정이 되면 반드시 값이 들어와야 한다.

 

식별자의 분류

어커런스 (occurrence): 데이터베이스 관리 시스템에서 엔터티 내의 개별적인 사례나 인스턴스를 의미한다.

이름 설명
주식별자 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이다. 타 엔터티와의 참조관계를 연결할 수 있다.
보조식별자 어커런스를 구분할 수 있는 구분자이나, 대표성을 가지지 못해 참조관계 연결이 불가능하다.

 

식별자의 생성 주체 여부

이름 설명
내부식별자 스스로 생성되는 식별자이다.
외부식별자 타 엔터티로부터 받아오는 식별자이다.

 

속성의 수에 따른 식별자 분류

이름 설명
단일식별자 하나의 속성으로 구성된 식별자이다.
복합식별자 2개 이상의 속성으로 구성된 식별자이다.

 

대체 여부에 따른 식별자 분류

이름 설명
본질식별자 업무에 의해 만들어지는 식별자
인조식별자 인위적으로 만든 식별자

 

주식별자를 도출하는 기준

1. 해당 업무에서 자주 이용되는 속성이다.

2. 명칭, 내역 등과 같이 이름으로 기술되는 것은 사용할 수 없다.

3. 복합으로 주식별자를 구성할 경우 너무 많은 속성으로 구성해서는 안된다.

식별자 관계

이름 설명
주식별자
자식의 주식별자로 부모의 주식별자를 상속한다.
1. 부모로부터 받은 식별자를 자식엔터티의 주식별자로 이용하는 경우
강한 연결관계를 표현하고, 실선으로 표기한다.
비식별자 부모 속성을 자식의 일반 속성으로 사용한다.
1. 부모 없는 자식이 생성될 수 있는 경우
2. 부모와 자식의 생명 주기가 다른 경우
3. 여러 개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각각의 엔터티가 별도의 관계를 가진 경우
4. 자식엔터티에 별도의 주식별자를 생성하는 것이 더 유리한 경우
5. SQL 문장이 길어져서 복잡성이 증가되는 것을 방지한다.
약한 연결관계를 표현하고, 점선으로 표기한다.

'Resource > SQLD' 카테고리의 다른 글

[SQLD] SQL 기본  (0) 2024.02.24
[SQLD] 데이터 모델과 성능  (0) 2024.02.21
[SQLD] 조인 (Join)  (0) 2024.02.19
[SQLD] 인덱스  (0) 2024.02.18
[SQLD] 윈도우 함수  (0) 2024.02.13