DBMS의 분해는 테이블을 여러 테이블로 나누어 데이터베이스에서 중복, 이상 및 불일치를 제거합니다.
다음은 유형입니다 -
무손실 분해
조인을 사용하여 분해된 테이블에서 관계 R을 재구성하는 것이 가능한 경우 분해는 무손실입니다. 이것이 선호되는 선택입니다. 정보는 분해될 때 관계에서 손실되지 않습니다. 조인하면 동일한 원래 관계가 생성됩니다.
예를 들어 보겠습니다 -
Emp_ID | Emp_Name | 임원 나이 | Emp_Location | 부서_ID | 부서 이름 |
E001 | 야곱 | 29 | 앨라배마 | Dpt1 | 작업 |
E002 | 헨리 | 32 | 앨라배마 | Dpt2 | HR |
E003 | 톰 | 22 | 텍사스 | Dpt3 | 재무 |
위의 표를 두 개의 표로 분해:
Emp_ID | Emp_Name | 임원 나이 | Emp_Location |
E001 | 야곱 | 29 | 앨라배마 |
E002 | 헨리 | 32 | 앨라배마 |
E003 | 톰 | 22 | 텍사스 |
부서_ID | Emp_ID | 부서 이름 |
Dpt1 | E001 | 작업 |
Dpt2 | E002 | HR |
Dpt3 | E003 | 재무 |
이제 위의 두 테이블에 Natural Join이 적용됩니다 -
결과는 -
Emp_ID | Emp_Name | 임원 나이 | Emp_Location | 부서_ID | 부서 이름 |
E001 | 야곱 | 29 | 앨라배마 | Dpt1 | 작업 |
E002 | 헨리 | 32 | 앨라배마 | Dpt2 | HR |
E003 | 톰 | 22 | 텍사스 | Dpt3 | 재무 |
따라서 위의 관계는 무손실 분해 즉 정보의 손실이 없습니다.
손실 분해
이름에서 알 수 있듯이 관계가 둘 이상의 관계 스키마로 분해되면 원래 관계를 검색할 때 정보 손실이 불가피합니다.
예를 들어 보겠습니다 -
Emp_ID | Emp_Name | Emp_Age | Emp_Location | Dept_ID | 부서 이름 |
E001 | 야곱 | 29 | 앨라배마 | Dpt1 | 작업 |
E002 | 헨리 | 32 | 앨라배마 | Dpt2 | HR |
E003 | 톰 | 22 | 텍사스 | Dpt3 | 재무 |
위의 표를 두 개의 표로 분해 -
Emp_ID | Emp_이름 | Emp_Age | Emp_Location |
E001 | 야곱 | 29 | 앨라배마 |
E002 | 헨리 | 32 | 앨라배마 |
E003 | 톰 | 22 | 텍사스 |
Dept_ID | 부서 이름 |
Dpt1 | 작업 |
Dpt2 | HR |
Dpt3 | 재무 |
이제 Emp_ID 이후로 위의 테이블에 조인할 수 없습니다. DeptDetails의 일부가 아닙니다. 관계.
따라서 위의 관계는 손실 분해가 있습니다.