호테의 노트에 오신 것을 환영합니다 🙌

Tableau와 Salesforce, Python과 SQL 등 데이터의 전반적인 것들을 다루는 기술 블로그입니다.

SQL

데이터 모델링의 이해

Hote's Note 2024. 9. 13. 02:47

> 데이터 모델링 정의

  • 현실 세계의 데이터를 데이터 관점으로 업무 분석하는 기법
  • 데이터베이스를 구축하기 위한 분석 및 설계의 과정

> 데이터 모델링 특징

1 ) 추상화

  • 현실을 일정한 형식에 맞춰 간략하게 표현

2 ) 단순화

  • 누구나 이해하기 쉽게 표현, 약속된 표기법 사용

3 ) 명확성

  • 애매모호함을 배제하고 명확하게 한 가지 의미를 갖도록 표현

> 데이터 모델링 유의점

1 ) 중복

  • 데이터베이스가 여러 장소에 같은 정보를 저장하지 않도록 한다.

2 ) 비유연성

  • 데이터 정의를 프로세스와 분리해 데이터 혹은 프로세스의 변화가 DB에 큰 변화를 일으킬 가능성울 줄여야 함.

3 ) 비일관성

  • 데이터와 데이터간 연관 관계에 대해 명확하게 정의해야 한다.

> 데이터 모델링 단계

1 ) 개념적 모델링

  • 추상화 수준이 높고 업무 중심적인 포괄적인 수준의 모델링

엔티티와 속성을 도출하며 개념적 ERD를 작성하는 단계

2 ) 논리적 모델링

  • Key, 속성, 관계 등을 정확히 표현하는 단계

정규화를 통해 재사용성을 높인다.

3 ) 물리적 모델링

  • 실제 데이터베이스에 적용할 수 있도록 성능, 저장 등 물리적인 성격의 설계 단계

> 데이터 모델링 관점

1 ) 데이터 관점

  • 업무가 어떤 데이터와 관련이 있는지 또는, 데이터간의 관계는 무엇인지에 대해 모델링

2 ) 프로세스 관점

- 업무가 실제 하고 있는 일은 무엇인지 또는, 무엇을 해야하는지 모델링

3 ) 데이터와 프로세스의 상관관점

- 업무가 처리하는 일의 방법에 따라 데이터는 어떤 영향을 받고 있는지 모델링

> 스키마 구조 3단계

1 ) 외부 스키마

- 사용자 관점, 응용 프로그래머가 데이터베이스에 접근하는 View 를 표현

2 ) 개념 스키마

- 설계자 관점, 모든 통합 관점을 가지고 있으며 DB 규칙과 구조를 표현

3 ) 내부 스키마

- 개발자 관점, 물리적 저장장치 입장에서 본 데이터베이스 구조이며 레코드 구조, 인덱스 등을 표현

> 데이터 모델의 표기법인 ERD 의 순서

① 엔티티 도출(그린다)

② 엔티티 배치

③ 엔티티간 관계 설정

④ 관계명을 기술

⑤ 관계의 참여도를 기술

⑥ 관계의 필수여부를 기술

2. 엔티티

> 엔티티 정의

- 업무에서 관리해야 하는 데이터 집합이며, 이는 개념, 사건, 장소 등의 명사이기도 하다.

> 엔티티 특징

1 ) 식별자

- 유일한 식별자가 있어야 한다 ( ex : 주민등록번호 )

<aside> ❓ 식별자 : 데이터 항목에 이름을 부여하여 일시적으로 규정하거나, 그 데이터의 어떤 특성을 표시하기 위해서 사용하는 기호 또는 기호의 집합.

</aside>

2 ) 인스턴스 집합

- 2 개 이상의 인스턴스가 있어야 한다.

<aside> ❓ 인스턴스(instance)는 같은 클래스에 속하는 개개의 객체로, 하나의 클래스에서 생성된 객체를 말한다. 즉 클래스가 구체화되어, 클래스에서 정의된 속성과 성질을 가진 실제적인 객체로 표현된 것을 의미한다.

</aside>

3 ) 속성

- 반드시 속성을 가지고 있어야 한다 ( ex : 고객 엔티티면 이름, 주소 등 )

4 ) 관계

- 다른 엔티티와 최소 한 개 이상의 관계를 가져야 한다 ( ex : 고객은 계좌를 개설한다 )

5 ) 업무

- 반드시 업무에서 관리되어야 할 집합이어야 한다 ( ex : 고객, 계좌 )

> 엔티티 분류

1 ) 유형과 무형에 따른 분류

유형 엔티티

  • 업무에서 도출되는 지속적으로 사용되는 물리적 형태 엔티티 ( ex : 고객, 강사, 사원 )

사건 엔티티

- 업무를 수행함에 따라 생성되는 업무 관련 행위 형태의 엔티티, 각종 통계에 이용 가능 ( ex : 주문, 청구 )

개념 엔티티

- 오로지 개념적으로만 사용되는 엔티티 ( ex : 거래소 종목, 조직, 생명보험 상품 )

2 ) 발생 시점에 따른 분류

기본 엔티티

- 키 엔티티, 불리우며 독립적으로 생산되는 엔티티를 말함 ( ex : 고객, 강사, 사원 )

중심 엔티티

- 메인 엔티티, 기본 엔티티로부터 발생되며 업무에서 중심 역할을 수행해 행위 엔티티를 생성 ( ex : 주문, 결제, 취소 )

행위 엔티티

- 두 개 이상의 엔티티로부터 발생되는 엔티티 ( ex : 주문목록, 결제목록 )

3. 속성

> 속성 정의

  • 엔티티가 가지는 항목이며 더 이상 분리되지 않는 데이터 단위

엔티티는 속성들에 의해 설명되어 진다

> 속성의 분류

1 ) 엔티티 구성에 따른 분류

PK 속성

- 엔티티를 식별할 수 있는 속성

FK 속성

- 다른 엔티티와의 관계에서 포함된 속성

일반 속성

- PK 속성, FK 속성에 포함되지 않은 속성

2 ) 분해 여부에 따른 분류

복합 속성

- 여러 개의 의미를 지닌 속성 ( ex : 주소 속성은 시, 구, 동 등 세부 속성들로 구성 가능 )

단일 속성

- 오로지 하나의 의미를 지닌 속성이며 하나의 속성은 한 개의 값만을 가질 수 있다 ( ex : 나이, 성별 등 )

다중값 속성

- 하나의 속성에 여러 개의 값을 가지는 경우다. 이는 정규화를 거쳐 별도의 엔티티를 생성해 관계로 연결해야 함.

( ex : 한 사람이 두 개의 계좌를 가질 수 있음. 이는 고객과 계좌로 엔티티를 분리해야 함 )

3 ) 특성에 따른 분류

기본 속성

  • 업무로부터 추출한 모든 속성이며 엔티티의 속성 비율 중 가장 많은 비율을 차지한다.

설계 속성

- 업무상 필요하진 않지만 데이터 모델링을 위해 생성하거나 변형하여 정의하는 속성이다.

이는 일련번호와 같은 유일 값을 가진다. ( ex : 상품코드 )

파생 속성

- 다른 속성의 영향을 받아 발생하는 속성이며 주로 집계등의 속성이 이에 해당 ( ex : 평균, 합계 )

4. 관계

> 관계의 정의

****엔티티 간의 관련성을 의미

> 관계의 유의점

- 두 개의 엔티티 사이에 연관 규칙이 존재하는가?

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

****업무기술서, 장표에 관계 연결 규칙이 서술되어 있는가?

****두 개의 엔티티 사이에서 정보의 조합이 발생하는가?

> 관계의 분류

1 ) 존재에 의한 관계

- 두 개의 엔티티가 존재 여부에 대한 관계가 이루어진 상태 ( ex : 부서와 사원은 소속이라는 존재 관계를 이룸 )

2 ) 행위에 의한 관계

- 두 개의 엔티티가 어떤 행위의 관련성에 대해 관계가 이루어진 상태 ( ex : 고객과 상점은 구매라는 행위 관계를 이룸 )

> 관계의 표기법

1 ) 1대1 관계

- A 엔티티와 B 엔티티는 서로가 속성 하나씩만을 가지는 관계

****( ex : 하나의 고객은 하나의 주민등록번호를 가짐, 하나의 주민등록번호 또한 하나의 고객만을 가짐 )

2 ) 1대N 관계

- 하나의 A 엔티티는 B 엔티티의 속성 하나를 가질 수 있고 B 엔티티는 A 엔티티의 여러 속성을 가지는 관계

****( ex : 하나의 학생은 하나의 학과만을 가지지만, 하나의 학과는 여러 학생을 가질 수 있다 )

3 ) N대N 관계

- A 엔티티는 B 엔티티의 여러 속성을, B 엔티티는 A 엔티티의 여러 속성을 가질 수 있는 관계

****( ex : 하나의 학생은 여러 은행의 통장을 가질 수 있고, 하나의 은행은 여러 고객을 가질 수 있다 )

  • 도메인(Domain) : 각 속성은 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인이라고 하며, 엔터티 내에서 속성에 대한 데이터타입과 크기 그리고 제약사항을 지정하는 것이다.

5. 식별자

> 식별자 정의

- 하나의 엔티티에 구성되어 있는 여러 속성 중에 엔티티를 대표할 수 있는 속성

하나의 엔티티는 반드시 하나의 유일한 식별자가 존재해야 함

업무적으로 구분이 되는 정보이며 논리 데이터 모델링 단계에서 사용된다.

(키는 데이터베이스 테이블에 접근을 위한 매개체로, 물리 데이터 모델링 단계에서 사용된다)

  • 여기서 키를 간단히 분류하면

후보키 : 유일성과 최소성을 만족하는 키

> 식별자 특징

1 ) 유일성

- 식별자에 의해 엔티티 내에 모든 인스턴스들은 유일하게 구분되어야 함

2 ) 최소성

- 식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함

3 ) 불변성

- 식별자가 한 번 지정되면 그 식별자의 값은 변하지 않아야 함

4 ) 존재성

- 식별자가 지정되면 반드시 식별자의 값이 존재해야 함

> 식별자 분류

1 ) 대표성 여부에 따른 분류

주식별자

- 유일성과 최소성을 만족하면서 엔티티를 대표하는 식별자이며 타 엔티티와 참조관계 연결 가능

보조식별자

- 유일성과 최소성을 만족하지만 엔티티를 대표하지 못해 타 엔티티와 참조관계 연결 불가능

2 ) 스스로 생성여부에 따른 분류

내부식별자

- 엔티티 내부에서 스스로 만들어지는 식별자

외부식별자

- 타 엔티티와의 관계를 통해 타 엔티티로부터 받아오는 식별자

3 ) 속성의 수에 따른 분류

단일식별자

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

복합식별자

- 둘 이상의 속성으로 구성된 식별자

4 ) 대체 여부에 따른 분류

본질식별자

- 업무에 의해 자연스레 만들어지는 식별자

인조식별자

- 업무에 의해 자연스레 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있어 인위적으로 만든 식별자

'SQL' 카테고리의 다른 글

(MYSQL) Primary Key & Index 지정하는 방법  (3) 2024.10.10
MYSQL - 다른 열 사용하여 UNION 하기  (0) 2024.10.04
MY SQL - 테이블 컬럼 정보 조회  (0) 2024.09.30
SUBSTRING_INDEX 활용한 SPLIT  (0) 2024.09.12
ISAM  (1) 2024.09.09