-
데이터베이스 정규화 핵심개념 [ 1차정규화 , 2차 정규화, 3차 정규화 ]자바 JAVA 2021. 5. 2. 21:24
정규화가 무엇인가??
정규화의 기본적인 개념은 중복 데이터를 제거 하고, 중복으로 낭비되는 저장 공간을 줄이는 것 입니다.
- 1차 정규화 : 테이블의 한 컬럼에 여러 데이터가 들어 갈수 없게 만드는 구조를 뜻합니다.
- 2차 정규화 : 기본키에 의해 데이터가 정의 되지 않고 중복으로 데이터가 쌓이는 구조가 있다면 테이블을 나누어 관리 하는 것을 뜻합니다.
- 3차 정규화 : 이행함수 종속성을 없애는 과정으로 기본키가 아닌 하위 컬럼에 의해 데이터가 결정되는값이 있다면 해당 데이터를 테이블로 나누어 관리 하는 것을 뜻합니다.
정규화(Normalization) !!!
관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다.
조금 더 이론적으로 접근해 보면 함수적 종속성을 이용해서 연관성 있는 속성들을 분류하고, 각 릴레이션들에서 이상현상이 생기지 않도록 하는 과정을 말한다.
정규화 된 정도를 정규형(Normal Form) 으로 표현하는데, 정규형에는 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF 까지 있다. 비공식적 표현으로는 3NF 가 되었으면 정규화 되었다고 말한다.
3NF 테이블의 대부분이 삽입, 변경, 삭제 이상이 없으며, 3NF 테이블의 대부분이 BCNF, 4NF, 5NF이다. 각 정규형이 되기 위해서는 만족시켜야 할 제약조건들이 있다. 높은 차수의 정규형으로 갈 수록 조건이 까다롭다.
RDBMS VS NOSQL [ RDBMS와 NOSQL 차이점은 무엇일까?
정규화와 반정규의 차이가 뭐죠? !!
정규화 - 온라인 거래 시스템 같은 OLTP(OnLine Transaction Processing) 데이터베이스는 CRUD(Create, Read, Update, Delete) 가 많이 일어나 정규화가 적절합니다.
반정규화 - 분석 리포트 같은 OLAP(OnLine Analytical Processing) 데이터베이스는 분석과 리포팅을 위해 사용되기 때문에 연산의 속도를 위해 반정규화를 사용하는 게 좋습니다.
*반정규화: 정규화된 시스템을 성능 향상 및 개발과 운영의 단순화를 위해 역으로 정규화를 수행하는 것을 말합니다.
일반적으로 join을 많이 사용해야 할 경우, 대량의 범위를 자주 처리하는 경우 등 조회에 대한 처리가 중요하다고 판단될 때 부분적으로 반정규화를 합니다.
'자바 JAVA' 카테고리의 다른 글
서브쿼리 무엇이고? [ SQL 쓰이는 곳에 따라 인라인뷰, 스칼라 서브쿼리 ] (0) 2021.05.02 DML DDL DCL [ SQL의 각 종류 설명 ] (0) 2021.05.02 트랜잭션 처리 ? [ 트랜잭션 이 뭐길래? ] (0) 2021.05.02 RDBMS VS NOSQL [ RDBMS와 NOSQL 차이점은 무엇일까? (0) 2021.05.02 JPA를 사용한 Querydsl 가이드 (0) 2020.12.18