| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 베이직
- 파일시스템
- 이벤트처리
- 프로그래밍패러다임
- database
- folium
- sql
- 함수형프로그래밍
- ReactNative
- OOP
- 챌린지
- BFS
- javascript
- DFS
- pandas
- PYTHON
- 보안솔루션
- 가상메모리
- db
- defaultdict
- display
- Graph
- CSS
- 코딩테스트
- SQLD
- reactnavigation
- 단위테스트
- flexbox
- parser
- 부스트캠프
- Today
- Total
DevLog
[SQLD] 1과목 "데이터 모델링의 이해" 핵심 요약 정리 본문
01. 데이터모델의 이해
모델링의 개념
- 복잡한 현실세계를 단순화하여 표현하는 것
- 모델 = 현실세계를 추상화한 반영
모델링의 특징⭐
- 단순화(simplification) : 복잡한 현실세계를 약속된 규약에 의해 누구나 쉽게 이해할 수 있게 표현
- 추상화(abstraction) : 일정한 형식과 양식에 맞추어 현실세계를 간략히 표현
- 명확화(clearity) : 대상에 대한 애매모호함을 제거하여 한 가지의 명확한 의미를 가짐
데이터 모델링의 유의점
- 중복(duplication) : 여러 장소에 같은 데이터 중복으로 저장 x
- 비유연성(inflexibility) : 사소한 변화에도 데이터모델링이 수시로 변경된다면 유지보수가 어려움
- 비일관성(inconsistency) : 데이터 간 상호연관 관계에 대한 명확한 정의 요구
데이터 모델링이 3가지 요소
1. 대상(entity) : 관리하고자 하는 복수의 대상
2. 속성(attribute) : 엔터티가 갖는 속성
3. 관계(relationship) : 엔터티 간의 관계
데이터 모델링의 3단계⭐
- 개념적 모델링
- 추상화 수준이 높고 포괄적인 수준의 전사적 모델링 진행
- 핵심 엔터티를 추출하고 관계 표현 위한 ERD 작성
- 논리적 모델링
- 개념적 모델링에서 정의한 엔터티와 관계를 이용하여 세부속성, 식별자, 관게 등을 정확하게 표현
- 데이터 정규화 작업
- 물리적 모델링
- DB의 물리적 성능을 고려한 설계
- 하드웨어에 데이터를 물리적으로 저장하기 위한 가장 구체적인 모델링
- 추상화 수준이 가장 낮은 단계
ERD(Entity Relationship Diagram) :: 데이터 모델의 표기법
1976년 피터 첸이 만든 표기법으로, 데이터 모델링의 표준으로 사용되는 표기법
엔터티와 엔터티 간의 관계를 이해하기 쉽게 정의하는 모델링 방법
ERD 작성 절차 6단계⭐
1. 엔터티 도출 후 그리기
2. 엔터티를 적절하게 배치 (핵심 엔터티를 왼쪽 상단 → 추가되는 엔터티는 오른쪽 하단에 배치)
3. 엔터티 간 관계 설정
4. 관계명을 동사형으로 기술
5. 관계의 참여도 기술 : (1:1)관계 or (1:m)관계
6. 관계의 필수여부 기술 : 필수참여관계(-) or 선택참여관계(○)


02. 엔터티(Entity)
엔터티의 개념
엔터티는 업무상 분석해야 하는 대상(instance)들로 이루어진 개체 집합이다.
분석 대상은 동질성을 가지며, 업무상 실제로 필요한 정보로만 구성되어야 한다.
* 엔터티 → 2개 이상 인스턴스의 집합, 인스턴스 → 엔터티의 하나의 값 (즉, 인스턴스는 엔터티 내 하나의 row)
엔터티의 특징
- 엔터티는 식별자(Identifier)에 의해서 식별이 가능해야 한다. (유일한 식별자 = PK)
- 엔터티에는 2개 이상의 인스턴스가 존재해야 한다.
- 각 엔터티는 반드시 2개 이상의 속성(변수)을 가진다.
- 엔터티는 업무에서 관리되어야하는 집합이다.
- 엔터티는 다른 엔터티와 최소 1개 이상의 관계를 가져야 한다.
엔터티의 분류
a. 유형과 무형에 따른 분류
- 유형엔터티 : 물리적인 형태가 있어 안정적이고, 지속적으로 활용되는 엔터티 (ex- 사원, 물품 등)
- 개념엔터티 : 관리해야 할 개념적 정보로 구분되는 엔터티 (ex- 조직, 보험상품 등)
- 사건엔터티 : 업무를 수행함에 따라 발생하는 엔터티 (ex- 주문, 미납, 계약 등)
b. 발생 시점에 따른 분류
- 기본엔터티 : 업무에 원래 존재하는 정보. 독립적으로 생성되어 타 엔터티의 부모 역할을 함 (ex-사원, 상품)
- 중심엔터티 : 기본엔터티로부터 발생되며, 업무에서 중심적 역할을 하는 엔터티 (ex- 계약, 사고)
- 행위엔터티 : 2개 이상 부모 엔터티 간 관계로부터 발생하는 엔터티. 자주 내용이 바뀐다. (ex- 주문목록, 사원변경이력)
엔터티의 명명
일반적으로 엔터티의 이름을 지을 때에는 현업에서 사용하는 용어를 사용하며 단수 명사를 사용하고,
유일성을 만족하는 고유한 이름을 부여하며 엔터티 생성 의미대로 이름을 부여하는 것을 기준으로 한다.
03. 속성(Attribute)
속성의 개념
속성은 업무에서 분석해야 할 대상(인스턴스)이 가지고 있는 고유한 성질 및 특징이자
인스턴스로 관리하고자 하는 최소의 데이터 단위이다.
엔티티, 인스턴스, 속성, 속성값
- 엔터티는 2개 이상의 인스턴스로 이루어진 집합이어야 한다.
- 엔터티는 2개 이상의 속성을 갖는다.
- 한 개의 속성은 1개의 속성값을 갖는다.
속성의 특징
하나의 인스턴스는 속성마다 반드시 하나의 속성 값을 가진다. (=원자성)
-> 하나의 속성에 여러 개의 값이 있는 경우는 별도의 엔터티로 분리한다.
속성의 분류
1) 속성의 특성에 따른 분류
- 기본 속성 : 데이터 모델링시 업무에서 추출되어 바로 생성되며, 가장 일반적으로 많이 존재하는 속성. (ex-원금, 이자율 등)
- 설계 속성 : 업무를 구체적으로 설계하는 단계에서 업무 규칙화를 위해 새로 만들어지거나 기본 속성을 변화하여 만들어지는 속성. (ex- 상품코드, 예금분류 등)
- 파생 속성 : 다른 속성에 의해 만들어지거나 통계적 계산으로부터 생성되는 속성. (ex- 합계, 평균, 이자 등)
2) 엔터티 구성방식에 따른 분류
- PK(기본 키, Primary Key) 속성 : 인스턴스를 식별할 수 있는 유일한 식별자(=주 식별자)
- FK(외래 키, Foreign Key) 속성 : 다른 엔터티와의 관계에서 포함된 속성(FK를 이용해 다른 엔터티를 참조)
- 일반 속성 : PK/FK 외 나머지 속성들
3) 분해 여부에 따른 분류
- 단일 속성 : 하나의 의미로 구성 (ex- 이름, 성별 등)
- 복합 속성 : 여러 개의 의미로 구성 (ex- 주소 등)
- 다중값 속성 : 속성에 여러 개의 값을 가지는 경우 (→ 엔터티로 분해)
속성의 명명
일반적으로 속성의 이름을 지을 때에는 해당 업무에서 사용하는 용어를 사용하고 서술식 용어를 사용하지 않으며, 유일성을 만족하는 고유한 이름을 부여한다.
도메인(domain)⭐
각 속성이 가질 수 있는 값의 범위.
엔터티 내에서 속성에 대한 데이터 타입과 크기, 제약사항을 지정한다.

ex) 주문이라는 엔터티가 있을 때 단가 라는 속성 값의 범위는 100에서 10,000 사이의 실수 값이며 제품명 이라는 속성은 길이가 20자리 이내의 문자열로 정의 할 수 있다.
04. 관계(Relationship)
관계의 개념
관계는 엔터티의 인스턴스 사이의 논리적 연관성으로서 엔터티와 엔터티 간 연관성을 표현한다.
관계의 분류
1. 존재에 의한 관계(존재 관계) : 엔터티 간 상태 (ex- A사원은 B부서에 소속되어 있는 상태)
2. 행위에 의한 관계(행위 관계) : 엔터티 간 어떤 행위가 있는 것 (ex- 주문은 고객이 주문을 할 때 발생)
관계의 표기법
a. 관계명(Membership) : 관계의 이름 (관점에 따라 현재형 동사로 명확하게 명명 ex- 포함하다/포함된다)
b. 관계차수(Cardinality) : `1:1`, `1:M`, `M:M (M:N)`
c. 관계선택사항(Optionality) : 필수참여관계(반드시 하나는 존재), 선택참여관계
05. 식별자(Identifier)
식별자 개념
식별자는 하나에 엔티티에 구성된 속성 중 엔터티를 대표할 수 있는 속성으로,
하나의 엔터티에는 반드시 하나의 유일한 식별자(unique identifier)가 존재해야 한다.
식별자 특징
식별자는 엔터티 내에서 각 인스턴스를 유일하게 구분할 수 있는 구분자로써
유일성, 최소성, 불변성, 존재성을 만족해야 한다.

*무결성 제약
관계 데이터 모델에서 데이터베이스 상태가 항상 만족시켜야 할 제약 조건
- 개체 무결성 entity integrity
기본 키 ≠ null
- 참조 무결성 referential integrity
외래 키 값은 반드시 피참조 릴레이션(집합 개념으로 entity와 relationship을 매핑한 것)의 기본 키 value이거나 null이어야 함
= 참조하는 FK가 유효해야 함
= FK가 피참조 릴레이션을 가리키는 곳에 데이터 or null 값이 존재해야 함
= 도메인 오류가 있으면(가리키는 값이 없으면) 안 됨
식별자 분류
1) 대표성 여부에 따른 식별자의 종류
- 주식별자 : 유일성과 최소성을 만족하면서 각 인스턴스를 구분할 수 있는 식별자. 타 엔터티와 참조관계 연결 가능
- 보조식별자 : 인스턴스를 구분할 수는 있으나(유일성, 최소성 만족) 대표성이 없어 참조 관계 연결 불가
2) 생성 여부에 따른 식별자의 종류
- 내부식별자 : 엔터티 내부에서 스스로 생성되는 식별자
- 외부식별자 : 다른 엔터티와의 관계로 인해 만들어지는 식별자(FK)
3) 속성 수에 따른 식별자의 종류
- 단일식별자 : 하나의 속성으로 구성
- 복합식별자 : 2개 이상의 속성으로 묶어서 구성
4) 대체 여부에 따른 식별자의 종류
- 본질식별자 : 업무상 비즈니스 프로세스에서 만들어지는 식별자
- 인조식별자 : 인위적으로 만들어지는 식별자
주식별자 도출 기준
- 해당 업무에서 자주 이용되는 속성인가
- 이름으로 기술되는 것들은 가능하면 기피 (명칭, 내역 등)
- 복합식별자의 경우, 너무 많은 속성이 포함되지 않도록 함(속성 수 최소화)
식별자 관계와 비식별자 관계
1) 식별자 관계 : 부모 엔터티의 PK가 자식의 PK로 상속, 강한 관계(Strong Relationship). 실선으로 표시(-)
2) 비식별자 관계 : 부모 엔터티의 PK가 자식의 일반 속성으로 상속, 약한 관계(Weak Relationship). 점선으로 표시(---)
'이모저모 > SQLD' 카테고리의 다른 글
| [SQLD] 2과목 "SQL 활용" - JOIN 파트 핵심 요약 정리 (0) | 2023.11.15 |
|---|---|
| [SQLD] 2과목 "SQL 기본" - 단일행함수, 집계함수 파트 핵심 요약 정리 (0) | 2023.11.15 |
| [SQLD] 2과목 "SQL 기본" 파트 핵심 요약 정리 (0) | 2023.11.15 |
| [SQLD] 1과목 "데이터 모델과 성능" 핵심 요약 정리 (0) | 2023.11.15 |
| [SQLD] SQLD 자격증 :: 제51회 SQLD 개발자 자격시험 준비 (0) | 2023.11.14 |