일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- cyworld
- javascript
- react-native
- C++
- react
- c++ 정보은닉
- 스탠실 버퍼 튜토리얼
- node.js
- CSS
- react native accessible
- react native typescript navigation
- Expo
- GitHub
- react native typescript navigate
- c++ using
- 리액트 네이티브 맥
- 스탠실 버퍼 사용
- 스탠실 버퍼 시작
- stencil buffer
- node
- 벡터와 리스트의 차이
- react native
- 싸이월드
- react native 타입스크립트
- unity stencil buffer
- html
- react native mac
- 리액트 네이티브 설치 오류
- react native typescript
- react native ios 기기 연결
- Today
- Total
혀니의 이거저거 뿌시기
[DB] 정규화 본문
[Database] 정규화(Normalization) 쉽게 이해하기 - MangKyu's Diary (tistory.com)
[Database] 정규화(Normalization) 쉽게 이해하기
지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normaliz
mangkyu.tistory.com
정규화의 기본 목표: 테이블 간에 중복된 데이타를 허용하지 않는다는 것
무결성 유지할 수 있으며, DB의 저장용량 역시 줄일 수 있음.
이런 테이블을 분해하는 정규화 단계가 정의되어 있는데, 여기서 테이블을 어떻게 분해되는지에 따라 정규화 단계가 달라짐.
1. 제 1 정규화
테이블의 컬럼이 원자값을 갖도록 테이블을 분해하는 것
요러케
2.제2정규화
제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것
이 테이블에서 기본키는 (학생번호, 강좌이름)으로 복합키임.
학생번호 -> 성적
강좌이름-> 강의실로 결정자임.
이렇게 분해하여 별도의 테이블로 관리해야 함
3.제 3 정규화
제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것.
(이행적 종속: A -> B , B -> C일 떄 A-> C가 성립되는 것)
이렇게 하여 이행적 종속을 제거해야 함.
제거해야 하는 이유: 501번의 학생이 스포츠경형학으로 변경하였을때 수강료도 함께 변경되어야 함으로
4.BCNF 정규화
제 3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것
교수가 특강이름을 결정하는 결정자이지만, 후보키가 아님.
따라서 테이블을 분해해야 함.
'CS > 데이터베이스(DB)' 카테고리의 다른 글
[DB] NoSQL (+Redis) (0) | 2023.12.17 |
---|---|
[DB] clustered / non clustered index (0) | 2023.12.17 |
[DB] Union vs Union All (+JOIN) (0) | 2023.12.17 |
[DB] 키(key) (0) | 2023.12.17 |
트랜잭션 (0) | 2023.09.27 |