0. 관계형 데이터 모델링
- Model : 어떤 목적을 가지고 진짜를 모방한 것. (좋은 모델은 목적에 부합하는 모델)
- 데이터 모델링 : 컴퓨터에 복잡한 정보 담기
1. 데이터 모델링의 순서
- 업무파악 > 개념적 데이터 모델링 > 논리적 데이터 모델링 > 물리적 데이터 모델링
2. 업무 파악
- 1) 컴퓨터 자체 문제 해결 2) 데이터를 통해 현실 문제 해결
- 2)의 경우 실무자와 교류해 업무 파악, UI를 그려 이해 편하게 하기 (말의 기능을 불신하기)
* 기획 : ovenapp (UI 그려보기)
3. 개념적 데이터 모델링 : ERD (Entity Relation Diagram : 개체 관계성 모델)
- 정보 / 그룹 / 관계
- Entity : Table
- Attribute : Column
- Relation : PK, FK (주키, 보조키)
- Tuple : Row
- 정규화
* ERD 그려보기 (모델링과 UI 함께하면 이해도 편하고 왕 좋음!) : draw
- 식별자 지정 (Identifier) : 고유값 (기본키, 대체키, 중복키-여러가지 대체키를 합침)
- 엔티티간의 연결 : 관계
- Cardinality : 기수. 1:1 관계, 1:다 관계, 다:다 관계 ㅁㅡㅁ, ㅁㅡ<ㅁ, ㅁ>-<ㅁ
- Optionality : 옵션. ㅁㅡo-ㅁ (우측 Entity는 옵션), ㅁ-|ㅡo-ㅁ (좌측은 Mandatory, 우측은 Optional)
- 연습 사이트 : erd.yah.ac
4. 논리적 데이터 모델링
- 관계형 데이터 프로그램에 잘 적응시키기 (Mapping Rule)
- Entity : Table
- Attribute : Column
- Relation : PK, FK (주키, 외래키)
- ER Master 프로그램 실습 이용
- N:M관계
cf) 한 Tuple에 하나만 올 수 있으므로 다대다관계에서 한쪽에만 외래키를 만들어주면 여러가지 값들이 오게 됨
> 연결테이블 만들어주기
- 완성 결과
4+. 논리적 데이터 모델링 : 정규화
- 제 1 정규화 : Atomic columns : 각 컬럼을 원자화하기.
- 제 2 정규화 : No partial dependencies : 부분 종속성이 없어야함.
- 제 3 정규화 : No transitive dependences : 이행적 종속성이 없어야함. (테이블 안에 분리된 의존(이행적 종속성)이 있는지 확인해서 분리)
5. 물리적 데이터 모델링 : 성능 향상
- 역정규화(반정규화, denormalization) : 정규화 만든 것이 성능 향상을 위해 (읽기 편리해 지기 위해) 최후의 수단
1) 컬럼의 역정규화
(1) Join 줄이기
(2) 파생 컬럼의 형성 : 계산 작업 줄이기
2) 테이블의 역정규화
(1) 컬럼을 기준으로 테이블을 분리 (한 열이 용량이 유난히 큰 경우)
(2) 행을 기준으로 테이블 분리 (특정 행을 기준으로 이전, 이후로 분리)
3) 관계의 역정규화
(1) 지름길 만들기
'코딩 어쩌구 > Data' 카테고리의 다른 글
[생활코딩] MySQL (1) (0) | 2021.01.18 |
---|---|
[시험 준비] SQLD 일정 및 내용 (0) | 2021.01.15 |
[생활코딩] SQL Join (0) | 2020.12.22 |
[생활코딩] DATABASE1 (0) | 2020.12.21 |
<고객DB분석> (0) | 2020.11.24 |