정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이때 이상현상이란 테이블 수정(갱신, 삽입, 삭제)시 원치 않은 데이터의 변형이 있을 수 있다. 관계형 데이터베이스 설계에서 중복을 최소화 하게 구조화 하는 것이다.
정규화의 원칙
-데이터의 중복을 최소화
-정보의 무손실
-독립적인 관계큰 별개의 릴레이션으로 표현
-데이터 모형의 단순화
-데이터 구조의 안정성 및 무결성 유지
-속성의 배열 상태 검증
등이 있음
정규화 절차 | 설명 |
제 1정규화 | 속성의 원자성을 확보한다. 속성의 중복값을 제거한다 기본키를 설정한다. |
제 2정규화 | 기본키가 2개 이상의 속성으로 이루어진 경우, 부분함수 종속성을 제거(분해)한다 부분함수 종속성이란, 기본키가 2개 이상인 칼럼으로 이루어진 경우에만 발생(기본키 1개 이과정 생략) 복합 인스턴스에 대해 각 인스턴스 종속적 중복을 생락 |
제 3정규화 | 기본키를 제외한 칼럼간에 종속성을 제거한다 즉, 이행 함수 종속성을 제거한다 일반 속성의 종속성을 제거한다 |
BNCF | 기본키를 제외하고 후보키가 있는경우, 후보키가 기본키를 종속시키면 분해한다. BNCF는 복수의 후보키가 있고, 후보키들이 복합속성이어야하며, 서로 중첩되어야한다. -결정자이면서 후보키가 아닌것을 제거 |
제 4정규화 | 여러 칼럼들이 하나의 칼럼을 종속시키는 경우, 분해하여 다중값 종속성을 제거한다 -다치 종속성을 제거한다 |
제 5정규화 | 조인에 의해서 종속성이 발생되는 경우 분해한다. |
비정규형 테이블)
회원번호 | 이름 | 메일 | 지역 | 회원레벨 | 제품명 | 구매이력 |
1 | mac | mac@nver.com | 경기도 | 그린 | 시계 | 23.03.14 |
1 | mac | mac@nver.com | 경기도 | 그린 | 전구 | 23.03.15 |
2 | book | book@naver.com | 충북 | 골드 | 아이패드 | 23.03.11 |
2 | book | book@naver.com | 충북 | 골드 | 노트북 | 23.03.12 |
3 | pro | pro@naver.com | 서울 | 블랙 | 가방 | 23.03.13 |
제 1정규화 => 도메인 원자값?을 만족시킨다는 조건은
1)반복 그룹이 존재하면 안됨
2)모든행은 식별자로 완전하게 구분되어야함
회원번호 | 이름 | 메일 | 지역 | 회원레벨 |
1 | mac | mac@nver.com | 경기도 | 그린 |
2 | book | book@naver.com | 충북 | 골드 |
3 | pro | pro@naver.com | 서울 | 블랙 |
회원번호 | 제품명 | 구매이력 |
1 | 시계 | 23.03.14 |
1 | 전구 | 23.03.15 |
2 | 아이패드 | 23.03.11 |
2 | 노트북 | 23.03.12 |
3 | 가방 | 23.03.13 |
이런 형식으로 정규화를 진행해주게 된다.
반정규화
데이터베이스의 성능향상을 위하여, 데이터 중복을 헝요하고 조인을 줄이는 데이터베이스의 성능향상방법이다.
반정규화는 조회 속도를 향상 시키지만, 데이터 모델의 유연성은 낮아진다.
반정규화를 수행하는 이유
정규화에 충실하여 종속성,활용성은 향상되었지만 수행속도가 느려진경우
다량의 벙위를 자주처리해야하는 경우
특정 범위의 데이터만 자주 처리하는 경우
요약/집계정보가 자주 요구된는 경우
'mysql' 카테고리의 다른 글
unic5n - showRoom 쿼리문 (0) | 2023.04.15 |
---|---|
LIMIT (0) | 2023.04.06 |
Sub-query (0) | 2023.04.06 |
SQL Error 1064(42000) (0) | 2023.03.23 |
CONSTRAINT 제약조건 (0) | 2023.03.22 |