데이터 모델링

1 minute read

개념적 데이터 모델링: 표를 만드는것
논리적: 제품에 맞는 현실적인 표를 만드는것
물리적:성능향상 고려

모델리을 할때 개념적 데이터 모델리을 위해 erd문서를자것ㅇ할수있다.

  • 식별자
    모델은 식별자를 가져야 한다.

후보키 candidate key: 요소들의 중복이 없어 식별자로 쓰일 수 있는 컬럼
기본키 primary key, PK : 후보키 중 선택한 키
대체키 alternate key : 후보키 중 기본키가 아닌 키

인조키 : 후보키가 없을때 인공저그로 만드는 키
(auto increment같은걸로 인덱스를 만든다던지)

키가 중복되어 식별자로 쓸게없다면 쌍으로 고유키를 만들 수 있는데, 중복키(composite key)라고 한다. 직원번호 + 부서번호

PK와 링크되는 키(조인등에서 쓰이는)를 외래키(foreign key, FK)라고 한다.

Cardinality(기수 1,2,3,4,5같은 기수)
1:1 1:N N:M과 같은 관계설정하는것을 말함
(N:M은 현실에서는 표현이 불가능하고 연결테이틀블 만들어서 1:N 테이블로 컨버팅한다.
=> 논리적 5번영상에 마지막 매핑테이블 참조

Optionality
저자는 댓글을 작성하지 않을수도 있다.
각 댓글은 반드시 저자가 있다.
이러한 관계를 설정하는 것을 말한다.
(mandantory - Optional)

Normalization
표가 있음
3NF(제3정규형)이 현실적으로 제일 많이 쓰이는 형태

제1 정규화
각 컬럼은 아토믹해야한다.
(한칸에 값이 여러개이면 안된다. 조인도 그렇고 다 불가능)
=> 컬럼를 다른 타이블로 쪼갠다

제2정규화 No partial dependancy
부분 종속성이 없어야한다.

제3 정규화 No transitive dependancy

=> 2,3은 잘모르겠지만 아무튼 필드가 중복되면 뺄생각을 해야한다.
(파편화되면 수정도 모조리 해줘야한다.)

물리적 데이터 모델링 => 성능개선

index: 인덱싱하는 시간도 오래걸리고 용량도 커지지만 속도를 얻을수있다!
caching
denormalization: 표의구조를 바꾸는 튜닝인데 최후의 수단

normalization은 write의 효율을 위해 read를 희생함(조인등을 함으로)
물론 관리의 효율은 압도적으로 좋다.
그리고 디노말이 무조건 성능이 좋아진다는 보장도 없다.

다만 최후으 ㅣ수단으로 해볼만하다.

물리적 5번 영상에 샤딩 설명이 있음
무거운 컬럼이 있을때 키와 무거운 컬럼은 다른 표로 빼기(샤딩)
빼서 여러 분산환경에서 따로 처리하기
(컬럼기준 분리)

행을 기준으로 나눌 수 있다. 데이터를 나눠서