기록이 힘이다.

RDB(생활코딩) 본문

SQL

RDB(생활코딩)

dev22 2022. 6. 18. 10:01
728x90

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

erd.yah.ac

<논리적 데이터 모델링>

Mapping Rule

Entity(네모) → Table

Attribute(동그라미) →Column

Relation →PK,FK

 

open source 무료

ER Master

ermaster.sourceforge.net

여러가지 제약조건(도메인)을 설정해줘야 한다.

릴레이션을 설정해 줘야 한다.

 

저자테이블 -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

정규화를 하고 나서 역정규화를 하게 된다. 성능을 향상시키기 위해 역정규화를 사용한다.

bit.ly/2WLMCko

컬럼의 역정규화-컬럼 중복: JOIN을 줄이기

테이블의 역정규화 -컬럼을 기준으로 테이블을 분리

테이블의 역정규화-행을 기준으로 테이블 분리

관계의 역정규화-지름길을 만든다.

 

역정규화하게 되면 복잡도가 높아진다. 그럼에도 불구하고 성능 향상을 위해서

데이터를 처리하는 비용을 줄이기 위한 역정규화 - 파생 컬럼의 형성: 계산 작업을 줄이기

 

테이블이 역정규화 - 컬럼을 기준으로 테이블을 분리 :어려워서 최후의 수단.

 

관계의 역정규화-지름길을 만든다. fk를 만들어야 한다.

많은 조인은 성능을 저하시킨다. 조인을 줄이기 위해 fk를 만들어 사용한다.

개념적: erd

논리적: 표로 작성

물리적: 실제 표로 작성