일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- airflow.cfg
- pandas
- 머신러닝
- having
- SQL
- 프로그래머스
- MySQL
- SQLite
- GROUPBY
- Oracle
- Round
- matplotlib
- 데이터리안 웨비나
- 데이터분석
- PostgreSQL
- 데이터시각화
- join
- airflow 설치
- not in
- SUM
- hackerrank
- Limit
- TRUNCATE
- 결측값
- solvesql
- 다중 JOIN
- 전처리
- 그로스해킹
- 파이썬
- seaborn
Archives
- Today
- Total
Milky's note
[K-Digital] 데이터 모델링 본문
데이터 모델링
- 데이터베이스의 벼대를 세우는 작업
1. 요구사항 정리
데이터가 어떤 형태, 어떤 목적을 가지고 있는 지 정리
2. 개념적 모델 설계
핵심 개체를 찾고, 각 개체 간의 관계를 정리
3.논리적 모델 설계
실제 DB로 구현하기 위한 모델링
4. 물리적 모델 설계
데이터가 어떻게 컴퓨터에 저장될 지 설계
네이밍 규칙
- 줄임말 사용은 최소화한다. (하지만 범용적으로 사용되는 줄임말은 사용 가능)
테이블 네이밍 규칙
- 파스칼 표기법 사용
- 테이블인지 뷰인지 확인하기 위해 'tb_', 'v_'를 사용
컬럼 네이밍 규칙
- 스네이커 표기법 사용
- PK, FK는 'pk_', 'fk_'를 사용
데이터 정규화
- 테이블간 데이터 조작시 발생할 수 있는 이상 현상을 줄이기 위한 작업
- 1~3차 정규화까지 진행하면 대부분의 이상 현상을 없앨 수 있음
1차 정규화(1NF) - 중복제거
- 각 속성마다 값이 1개씩 존재하도록 하는 과정 (원자화)
한 행에 하나의 데이터만 존재하도록 데이터를 수정
2차 정규화(2NF) - 복합키인 컬럼을 분리해서 새 테이블 생성
- 복합키로 구성되어있을 때 고려해야하며, 모든 속성이 완전 함수 종속이 되도록 허용하는 작업
완전함수 종속 : A,B,C,D가 있을 때 B가 A에 의해 종속되는 경우 B는 다른 내용 (C,D)에 의해 종속이 되지 않는 경우
10-01의 전화번호가 바뀌었을 때 10-02 전화번호와는 차이가 난다.
고객 이름과 전화번호는 고객의 ID 에 종속되어 있음 이 두 속성을 대여 테이블로부터 분리시켜 종속성을 제거
3차 정규화(3NF) - 컬럼을 분해해서 새 테이블 생성
- 테이블 내에서 이행적 요소 제거
킥보드의 종류가 수정되면 킥보드 id는 같은데 종류가 다른 킥보드가 생기는 문제가 발생한다.
킥보드에 대한 정보(종류,이미지,연식)은 모두 킥보드ID에 영향을 받음
이를 분리시켜 이행적 요소를 제거
외래키 설정 옵션
- 외래키 컬럼은 다른 테이블의 기본키에 종속되어 있어 테이블간의 무결성을 맞추기 위해 수정이 안되는 경우가 있다.
그래서 외래키를 생성할 때 이를 허용해주는 옵션을 추가하여 외래키를 생성하면 테이블의 변경이 자유롭다.
on update '옵션'
RESTRICT - 참조하고 있는 내용이 있다면 변경 중지
CASCADE - 참조하고 있는 속성이 변경될 때 같이 변경
SET NULL - 참조하고 있는 속성이 변경될 때 NULL로 변경
on delete '옵션'
RESTRICT - 참조하고 있는 내용이 있다면 변경 중지
CASCADE - 참조하고 있는 속성이 변경될 때 같이 변경
SET NULL - 참조하고 있는 속성이 변경될 때 NULL로 변경
CREATE 'TABLE' (
.
.
.
FOREIGN KEY ... REFERENCES ... ON UPDATE CASCADE);
'SQL > 요약 정리' 카테고리의 다른 글
[PostgreSQL] Table Partitioning (0) | 2022.01.06 |
---|---|
[PostgreSQL] Vacuum 수행 (2) | 2022.01.05 |
[PostgreSQL] Window Function (1) | 2021.11.29 |
Comments