◈ 데이터베이스 정규화 ◈
• 데이터베이스 정규화
이상 문제를 해결하기 위해 속성들끼리의 종속 관계를 분석하여 여러개의 릴레이션으로 분해하는 과정
• 이상 문제
삽입 이상 : 데이터를 저장할 때 원하지 않는 정보가 함께 삽입되는 경우
삭제 이상 : 튜플을 삭제함으로써 유지되어야 하는 정보까지도 연쇄적으로 삭제되는 경우
갱신 이상 : 중복된 튜플 중 일부의 속성만 갱신 시킴으로써 정보의 모순성이 발생하는 경우
• 릴레이션(=테이블)
관계형 데이터베이스에서 정보를 저장하는 기본 단위
• 참고
릴레이션 분해가 많이 될 수록 JOIN을 자주 사용하게 되어 쿼리의 속도가 상대적으로 느려지기 때문에 데이터베이스 정규화는 적정선에서 해야 함
* 보통의 경우 3정규화 까지만 진행 하는것을 권장
-> 이후까지 정규화를 진행하면 릴레이션 분해가 과하게 되기 때문에 성능에 영향을 미침
• 함수적 종속
릴레이션에서 속성(컬럼)들의 부분 집합을 X, Y라 할 때 특정 튜플에서 X의 값이 Y의 값을 함 수적으로 결정한다면 Y가 X에 함수적으로 종속되었다고 함
• 함수적 종속 추론 규칙
1. 재귀 규칙 : Y가 X의 부분 집합이면 X -> Y 이다.
2. 증가 규칙 : X -> Y 이면 WX -> WY 이고 WX -> Y 이다.
3. 이행 규칙 : X -> Y 이고 Y -> Z 이면 X -> Z 이다
4. 유니온 규칙 : X -> Y 이고 X -> Z 이면 X -> YZ 이다.
5. 분해 규칙 : X -> YZ 이면 X -> Y 와 X -> Z 이다.
6. 가이행 규칙 : 만일 W -> X 이고 WY -> Z 이면 WY -> Z 이다.
• 삽입 이상 발생
신입 학생이 입학하여 학번과 학년을 입력 했으나, 아직 과목이 정해지지 않았거나 시험을 보지 않아
성적이 없는 상태이기 때문에 불필요한 정보(과목이름,성적을 함께 삽입해야함)
• 삭제 이상 발생
학생 번호가 2번인 학생의 과목에 대한 성적을 삭제할 경우 학생 번호, 학년 등
모든 정보 가 같이 삭제되어 학생 정보 자체가 모두 사라짐
• 갱신 이상 발생
학생번호 3번인 학생이 2학년이 되어 정보를 변경할 때 3개의 데이터 중 하나라도 바꾸지 않을 경우 동일한 학생에 대한 정보가 서로 달라지는 모순성이 발생함
• 제1 정규형
도메인의 값을 모두 원자값이어야 함. 핸드폰에 2가지 정보가 들어가 있기 때문에 제 1정규형을 만족하지 않음
• 제1 정규형 진행
하나의 값만 들어갈 수 있도록 튜플 수정 및 추가
• 제2 정규형 (부분 함수 종속 제거)
학번은 학부와 등록금을 결정할 수 있고, 학번과 과목 코드는 성적을 결정할 수 있음
• 제2 정규형 진행
학번의 경우 학부와 등록금을 결정할 수 없음. 모든 컬럼에 대해 영향을 줄 수 있는 학번을 기준으로 릴레이션 분해
• 제3 정규형 (이행 함수 종속 제거)
학번(X)이 학부(Y)를 결정하고, 학부(Y)가 등록금(Z)을 결정하므로 이행
규칙에 따라 학번(X)이 등록금(Z)을 결정할 수 있음
* 이행규칙 : X -> Y 이고 Y -> Z 이면 X -> Z 이다.
• 그 외 정규형
1. BCNF : 결정자 중 후보키가 아닌 것들을 제거
2. 제4 정규형 : 다치 종속 제거
3. 제5 정규형 : 조인 종속 제거
데이터베이스 정규화에 대해 정리를 진행하였다! 프로젝트 기간에도 틈틈히 조금씩 시간을 투자하여 정리를 진행해야겠다! 그럼 20000
'Back-End > Oracle' 카테고리의 다른 글
Oracle ■ DCL GRANT, REVOKE (0) | 2024.08.02 |
---|---|
Oracle ■ DDL ALTER, DROP (0) | 2024.07.29 |
Oracle ■ CREATE (0) | 2024.07.25 |
Oracle ■ DML INSERT, UPDATE, DELETE (5) | 2024.07.24 |
Oracle ■ DML SELECT (4)-서브쿼리 (0) | 2024.07.17 |