희렌버핏

[SQLD Part2] 01 데이터 모델링 본문

DB

[SQLD Part2] 01 데이터 모델링

Oliviakim 2023. 8. 10. 11:35

1 데이터 모델링의 이해

1.1 데이터 모델링
- 현실세계를 추상화
- 모델링 위해 고객 업무 프로세스 이해 > 데이터 모델링 표기법 사용하여 모델링 
- 복잡하지 않게
- 고객 업무 프로세스 추상화 > 분석 설계하면서 더 상세
- 정의된 비즈니스 규칙을 데이터 모델로 표현
1.2 데이터 모델링 특징
- 추상화 : 현실세계 간략 표현
- 단순화 : 누구나 쉽게 이해
- 명확성 : 명확한 의미 해석
1.3 데이터 모델링 단계
- 개념적 모델링 :
-- 전사적 관점(업무 전체에 대해서 데이터 모델링)
-- 기술적 언어 사용x
-- 엔터티와 속성 도출
-- 추상적 수준이 가장 높은 모델링
-- 모델 관계없이 업무 측면에서 모델링
- 논리적 모델링 :
-- 특정 데이터베이스 모델링에 종속
-- 식별자 정의, 관계 속성 등 모두 표현
-- 정규화로 재사용성 높임(독립성 확보)
- 물리적 모델링 :
-- db 시스템에 테이블, 인덱스 생성하는 단계
-- 성능, 보안, 가용성 고려 구축
1.4 데이터 모델링 관점
- 데이터 : 비즈니스 프로세스에서 사용되는 데이터. 구조분석, 정적분석
- 프로세스 : 비즈니스 프로세스에서 사용하는 작업. 시나리오/도메인/동적 분석
- 데이터와 프로세스 : 데이터와 프로세스 간의 관계, CRUD분석
1.5 데이터 모델링을 위한 ERD
- 피터첸이 Entity Relationship Model 표기법을 만듬
- 엔터티 간의 관계를 정의하는 모델링
1.5.1 ERD 작성 절차
① 엔터티 그림
② 엔터티 배치
- 중요한 것 왼쪽 상단에
③ 엔터티 관계설정
④ 엔터티 관계명 서술 (행위나 존재)
- 계좌개설, 종목선택, 주문발주
⑤ 엔터티 관계 참여도 표현
- '고객이 여러 계좌를 개설 가능' 처럼 관계 수 의미
⑥ 엔터티 필수 여부 표현
- '고객이 반드시 한개의 계좌 개설'
1.5.2 ERD 고려사항
모델 독립성 : 업무변화 능동적 대응, 정규화(중복 제거)
② 요구사항 간결 명확 표현
③ 데이터 품질 확보 : 표준정의, 표준준수율 관리

2 3층 스키마

2.1 3층 스키마
- 사용자/설계자/개발자 가 db 바라보는 관점 따라 기술, 관계 정의한 ANSI 표준
- 데이터 스키마의 독립성 확보를 위한 방법 > 데이터 복잡도 감소, 중복 제거, 대응력 향상, 유비 비용 절감
- 각 계층을 뷰(view)라고 한다.
2.1.1 3층 스키마의 독립성
- 논리적 독립성 : 개념스키마가 변경돼도 외부 스키마x
- 물리적 독립성 : 내부스키마가 변경돼도 개념 스키마x
2.2 3층 스키마 구조
- 외부 스키마 : 사용자 관점, db의 뷰 표시, 응용프로그램이 접근하는 db
- 개념 스키마 : 설계자 관점, db의 규칙과 구조 표시, 통합 db 구조, 조직 전체적 관점으로 통합을 표현하는 계층
- 내부 스키마 : 개발자 관점, db 물리적 저장 구조, 데이터 레코드/저장 구조-필드정의-인덱스 등

3 엔터티

3.1 엔터티
- 관리해야 하는 데이터 집합
- 피터첸 : 변별할 수 있는 사물
- 제임스 마틴 : 저장할 수 있는 어떤 것
- C.J Date : 내부에서 변별 가능한 객체
- 토마스 브루스 : 정보 저장 가능한 장소, 사람, 사건, 개념, 물건
3.2 엔터티 도출
- 관리 되어야 하는 정보 추출

고객계좌
회원id계좌번호
패스워드계좌명
이름예수금
주소계좌개설 지점
전화번호계좌 담당자

3.3 엔터티 특징
- 식별자 : 유일한 식별자 ex) 회원id, 계좌번호
- 인스턴스 집합 : 2개 이상의 인스턴스 ex) 고객정보 2명 이상
- 속성 : 반드시 속성 ex) 회원id, 패스워드, 이름, 주소, 전화번호
- 관계 : 최소 1개 이상 관계 ex) 고객은 계좌를 개설
- 업무 : 업무에서 관리되어야할 집합 ex) 고객, 계좌
 
* 릴레이션 == 테이블 : 릴레이션에 기본키 및 제약조건을 설정하면 테이블이 된다.
* Relationship : 릴레이션 간 관계
* 인스턴스 : 릴레이션이 가질 수 있는 값. 행의 수
 
3.4 엔터티 종류
- 유형 무형 엔터티
 유형 엔터티 : 지속적으로 사용되는 엔터티 ex) 고객,강사,사원 등
② 개념 엔터티 : 물리적 형태가 없는 개념적으로 사용되는 엔터티 ex) 거래소 종목, 코스닥 종목, 생명보험 상품 등
③ 사건 엔터티 : 프로세스 실행시 생성되는 엔터티 ex) 주문,체결,취소주문,수수료 청구 등
- 발생시점 엔터티
 기본 엔터티(키엔터티) : 독립적으로 생성되는 엔터티 ex) 고객,상품,부서 등
② 중심 엔터티(메인엔터티) : 기본엔터티로부터 발생하고 행위 엔터티를 생성하는 엔터티 ex) 계좌,주문,취소,체결 등
③ 행위 엔터티(액티브엔터티) : 2개 이상의 엔터티로 부터 발생 ex) 주문이력, 체결이력 등
 

4 속성

- 엔터티가 가지는 항목
- 더이상 분리되지 않는 단위
4.1 속성의 특징
- 업무에서 관리되는 정보
- 하나의 값만 가짐
- 주식별자에게 함수적으로 종속돼서 기본키가 변경되면 속성 값도 변경된다.
4.2 속성의 종류
 분해여부에 따른 속성
- 단일 속성 : 하나의 의미로 구성 ex) 회원id, 이름
- 복합 속성 : 여러개의 의미로 구성 ex) 주소
- 다중값 속성 : 여러개의 값을 가질 수 있다. 엔터티로 분해됨. 하나의 컬럼에 삽입하지 않고 별도의 릴레이션으로 도출되어야 한다.ex) 상품리스트
 특성에 따른 속성
- 기본 속성 : 비즈니스 프로세스에서 도출되는 본래의 속성 ex) 회원id
- 설계 속성 : 엔터티를 식별하기 위해 부여된 일련번호. 모델링 과정에서 발생되는 속성. 유일한 값 ex) 상품코드, 지점코드
- 파생 속성 : 다른 속성에 의해 만들어지는 속성 ex) 합계, 평균
 
* 도메인 : 속성이 가질 수 있는 값의 범위 ex) 성별 속성 도메인은 '남자'와 '여자

5 관계

- 엔터티 간의 관련성.
5.1 관계의 종류
존재 관계 : 엔터티 간의 상태. ex) 고객이 회원가입 하면 관리점이 할당, 관리점에서 고객 관리. 고객은 관리점에 소속된다.
행위 관계 : 엔터티 간의 행위가 있는. ex) 계좌를 개설한다. 주문을 발주한다.
5.2 관계 차수
- 2개의 엔터티 간체 참여하는 수
- 최대 기수성 : 일대일(1:1),일대다(1:M),다대다(M:N)
- 최소 기수성 : 필수, 선택
1대1 관계
- 완전 1:1 : 고객의 전화번호가 있으려면 고객의 ID가 있어야됨.
- 선택적 1:1 : 고객은 하나의 전화번호를 가지거나 없을 수도 있다.
1대N 관계
- 행이 하나 있을 때 엔터티 값 여러개
- 고객이 여러개 계좌
M대N 관계
- 학생은 여러 과목 들을 수 있다. 한 과목을 여러명이 수강할 수 있다.
- 두 개 엔터티가 서로 여러개 관계
* 카테시안 곱 : 릴레이션에 존재하는 모든 데이터 조합 연산. M대N 관계의 조인에서 발생
 필수적 관계와 선택적 관계
- 필수적 관계 : 반드시 하나가 있어야 하는 관계. "|"
ex) 고객이 반드시 있어야 계좌 개설.
- 선택적 관계 : 없을 수도 있는 관계. "O"
ex) 고객은 있지만 계좌는 없을 수도 있다.
5.3 식별 관계와 비식별 관계
식별 관계 :
- 고객의 기본키인 회원id를 계좌의 기본키로 공유
- 강한개체 : 다른 엔터티에게 기본키 공유, 식별관계로 표현, 기본키 값이 변경되면 식별관계 엔터티 값도 변경, 누구에게 지배되지 않는 독립적 개체
- 약한개체 : 계좌 엔터티, 다른 개체의 존재에 달려 있는 객체
- 실선으로 표현
비식별 관계 :
- 강한개체의 기본키를 일반 컬럼으로 관계를 가지는 것
- 점선으로 표현
5.4 엔터티 식별자
 대표성
- 주식별자 : 엔터티 대표, 참조 관계로 연결. 대표성/유일성/최소성/Not null
- 보조식별자 : 유일성,최소성 만족. 대표성 없는 식별자
 생성여부
- 내부식별자 : 스스로 생성
- 외부식별자 : 엔터티 와의 관계로 만들어지는
 속성의 수
- 단일식별자 : 하나의 속성 ex) 고객 엔터티에 회원id
- 복합식별자 : 두개 이상의 속성
④ 대체 여부
- 본질 식별자 : 프로세스에서 만들어지는 식별자
- 인조 식별자 : 인위적으로 만들어지는 식별자. 주식별자로 선정할 것이 없거나, 주식별자가 너무 많은 컬럼. 순서번호를 사용해서 식별자를 만듬. ex) 계좌번호 = 지점코드 + 상품코드 + 일련번호
 
* 카디널리티 : 특정 데이터 집합의 유니크한 값의 개수. 하나의 릴레이션에서 튜플의 전체개수
* 선택도 : 카디널리티로부터 계산. 데이터 집합에서 특정 값을 얼마나 잘 골라낼 수 있는지. 특정 조건에 의해 선택될 것으로 예상되는 레코드의 비율. 조건절에서 요청한 값 범위 / 전체값 으로 계산
* 도메인 : 하나의 속성이 가질 수 있는 값들의 집합.

'DB' 카테고리의 다른 글

[SQLD Part3] 03 SQL 최적화의 원리  (0) 2023.08.31
[SQLD Part3] 02 SQL 활용  (0) 2023.08.29
[SQLD Part3] 01 SQL 기본  (0) 2023.08.21
[SQLD Part2] 02 데이터 모델과 성능  (0) 2023.08.11