728x90
정규화
- 여러 제약조건(규칙)을 기반으로 데이터베이스를 이상현상 없이 설계하는 기법이다.
- 데이터의 무결성을 향상한다.
정규화에 대한 자세한 내용은 https://hyeri0903.tistory.com/175?category=772718 에 정리해 두었다 ㅎㅎ
비정규화
- 비정규(Denoramlizaiton)는 데이터를 중복시키거나 그룹핑함으로써 데이터 베이스의 성능을 향상시키기 위한 기법이다.
- 정규화된 테이블을 읽기 성능 향상을 위해 다시 합치는 방법
- 역정규화는 정규화된 테이블을 비정규 상태로 만들기 위한 방법 중 하나이다.
- 비정규화 프로세스
데이터베이스의 완벽한 구조 설계를 포기하고 데이터의 무결성을 떨어트리는 대신 관계형 데이터베이스의 읽기 성능을 향상하기 위한 설계이다.
위와 같은 <강사>, <수업>, <수강료> 3개의 테이블이 존재할 때 원하는 데이터가 흩어져 있으므로 join을 사용해서 데이터를 조회한다.
만약 데이터의 양이 무수히 많다면 join의 속도에 영향을 주어 조회 속도가 느려진다는 점이있다.
따라서 아래처럼 <시간표>와 같이 비정규화 작업을 거치면 데이터 중복이 발생하지만 join을 하지않아도 되어서 조회 속도가 향상된다.
-비정규화 고려할 점
1) 무결성(데이터의 정확성) 주의 : 데이터의 중복이 발생하여 데이터 수정 시 일부만 수정되어 무결성이 깨질수도 있다.
2)읽기 속도는 빨라지지만 삽입/수정/삭제 속도는 느려짐
3)저장공간의 효율이 떨어짐
4)유지보수가 어려움 : 테이블이 크고 복잡하여 쉽게 수정할 수 없고, 확장성이 떨어짐.
데이터베이스의 정규화, 비정규화는 각각 상황에 따라 필요시 사용하면 된다~!
*참고
https://chankim.tistory.com/m/7
728x90
'스터디 > Database' 카테고리의 다른 글
[MySQL] 다중 테이블 업데이트, 여러 테이블 update 하기 (0) | 2022.10.06 |
---|---|
[DB] ACID란? (0) | 2021.07.04 |
[DB] Locking (잠금 기법) (0) | 2021.05.28 |
[DB] 데이터 정규화 1NF, 2NF, 3NF, BCNF (0) | 2021.05.28 |
[DB] Transation / Undo / Redo (0) | 2021.05.17 |
댓글