일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- 인덱스
- 이펙티브 자바
- 알고리즘
- 도메인 주도 개발 시작하기
- vue.js
- AWS RDS
- 혼공SQL
- 클린코드
- 이팩티브 자바
- SQL쿡북
- DDD
- 네트워크
- jpa
- 인프런백기선
- 알고리즘분석
- 자바예외
- 자료구조
- aop
- CleanCode
- react
- MariaDB
- 인프런김영한
- AWS
- 스프링부트와AWS로혼자구현하는웹서비스
- java
- 자바스터디
- 자바
- 이펙티브자바
- 기술면접
- mysql
- Today
- Total
기록이 힘이다.
RDB(생활코딩) 본문
https://opentutorials.org/module/4134
관계형 데이터 모델링
수업소개 관계형 데이터베이스의 테이블을 설계하는 방법을 알려드리는 수업입니다. 이 수업은 아래와 같은 내용을 담고 있습니다. 데이터 모델링의 효용 업무파악 개념적 데이터 모델링 논
opentutorials.org
업무파악 → 개념적 데이터 모델링 → 논리적 데이터 모델링 → 물리적 데이터 모델링
개념적: erd
논리적: 표로 작성
물리적: 실제 표로 작성
<업무파악>
업무를 이해해야 컴퓨터 프로그램을 만들 수 있다. 실무자들도 이해보다 익숙해져서 설명을 못할 수도 있다. 컴퓨터는 익숙함 만으로 다룰 수 없다.
업무 파악을 할 때 사용하는 방법 : UI를 같이 그려 본다. User Interface -군대의 복명복창
naver oven을 이용한 ui작성
<개념적 데이터 모델링>
논리적,물리적은 기계적 원리라 개념적을 잘 이해하면 쉽다.
우리에게 제공해주는 것: 필터,언어=⇒ERD (Entity Relationship Diagram) :finder(정보, 그룹, 관계)
Entity → Table
Attribute → column
Relation →PK, FK, JOIN
Tuple → row
엔티티 정의
Db-UI 는 원인과 결과 관계이다.
기획서에서 Entity를 찾아내는 일이 중요하다.
erd에서 엔티티는 네모이다.
속성 정의
erd에서 속성은 타원이다. 관계는 실선.
Identifier 식별자
식별자에 밑줄을 그어준다.
Relationship
도형은 마름모
Cardinality
1:1 1:N N:M
Optionality
Mandatory - Optional 저자-댓글
1:1 1:N N:M
<논리적 데이터 모델링>
Mapping Rule
Entity(네모) → Table
Attribute(동그라미) →Column
Relation →PK,FK
open source 무료
ER Master
여러가지 제약조건(도메인)을 설정해줘야 한다.
릴레이션을 설정해 줘야 한다.
저자테이블 -pk
휴먼저자테이블 -fk
N:M관계는 중재자인 테이블이 하나 필요하다. - mapping 테이블
Normalization 정규화
First Normal Form
Atomic columns
- 제1정규형 : 테이블 내의 속성값은 원자값을 가지고 있어야 한다.
- 속성에 2개 이상 가지고 있는 경우 원자값이 아니기 때문에 속성 1개만 가지도록 저장하면 1차 정규화를 만족한다.
topic_tag_relation
title tag_id
MySQL 1
MySQL 2
ORACLE 1
ORACLE 3
Second Normal Form
No partial dependencies
- 제2정규형 : 부분함수 종속을 제거하면 2차 정규화를 만족한다.
Third Normal Form
No transitive dependencies
- 제3정규형 : 이행함수 종속 제거, 속성에 종속적인 속성을 분리한다.
<물리적 데이터 모델링>
find slow query
denomalization 역정규화
index / application에서 cache를 사용
write vs read 쓰기의 편리함을 위해서 읽기를 희생하는 것이라고 볼 수 있다.
join
정규화를 하고 나서 역정규화를 하게 된다. 성능을 향상시키기 위해 역정규화를 사용한다.
컬럼의 역정규화-컬럼 중복: JOIN을 줄이기
테이블의 역정규화 -컬럼을 기준으로 테이블을 분리
테이블의 역정규화-행을 기준으로 테이블 분리
관계의 역정규화-지름길을 만든다.
역정규화하게 되면 복잡도가 높아진다. 그럼에도 불구하고 성능 향상을 위해서
데이터를 처리하는 비용을 줄이기 위한 역정규화 - 파생 컬럼의 형성: 계산 작업을 줄이기
테이블이 역정규화 - 컬럼을 기준으로 테이블을 분리 :어려워서 최후의 수단.
관계의 역정규화-지름길을 만든다. fk를 만들어야 한다.
많은 조인은 성능을 저하시킨다. 조인을 줄이기 위해 fk를 만들어 사용한다.
개념적: erd
논리적: 표로 작성
물리적: 실제 표로 작성
'SQL' 카테고리의 다른 글
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. (0) | 2022.12.12 |
---|---|
[혼공 SQL] 데이터베이스 개체 (0) | 2022.12.12 |
[혼공 SQL] MySQL과 MariaDB (0) | 2022.12.12 |
MySQL 다운로드 및 설치하기 (0) | 2022.12.10 |
Intellij MySQL 연결 (0) | 2022.12.08 |