티스토리 뷰
중복성때문에 발생하는 문제(Anomaly)
- 갱신 이상(update anomaly)
중복된 데이터 중 하나를 갱신할 때 나머지 다른 행과 불일치(inconsistency) 발생
- 삽입 이상(insertion anomaly)
어떤 데이터 값을 모르면, 입력이 어려운 경우 발생
어떤 정보를 저장하려면, 다른 정보도 같이 저장해야 하는 경우 발생
- 삭제 이상(deletion anomaly)
어떤 정보를 지우면, 다른 정보도 같이 상실되는 경우 발생
한 릴레이션 스키마가 자연스럽지 않은 속성들간의 연관을 억지로 함께 명시할 때에 중복 발생.
함수 종속 관계를 이용하여, 중복 여부를 판단할 수 있고 스키마의 정제가 필요함을 알 수 있음
키가 아닌 속성들간에 함수 종속관계가 있으면, 일반적으로 데이터의 중복 발생
스키마 분해
릴레이션을 더 작은 릴레이션들로 분해하는 것. 중복이 있는 릴레이션을 분해하여, 문제점들을 해결함
스키마 분해 시 고려해야 할 점
- 릴레이션의 분해가 필요한가?
- 함수 종속 관계를 이용하여 데이터 중복 저장 여부 판단
- 무손실-조인(lossless-join) 분해인가?
- 종속성 유지(dependency-preservation) 되는가?
무손실-조인 분해
: 분해된 릴레이션들을 동등조인하여 원래의 릴레이션으로 복구되어야 함
* 무손실-조인: 원래의 데이터와 정확하게 동일하게 복구하는 것. 더 많은/더 적은 데이터로 조인되면 모두 손실 조인(lossy-join)
종속성 유지
: 분해된 릴레이션들에서 원래의 모든 제약 조건들을 유지
스키마 분해의 결점
분해된 릴레이션들을 대상으로 조인 질의가 많을 경우(여러 개의 릴레이션으로 분해한 경우), 처리시간이 많이 걸리기 때문에 성능상의 문제가 발생할 수 있음
'cs > DB' 카테고리의 다른 글
[데이터베이스/Database] 정규형(1NF, 2NF, 3NF, BCNF) (0) | 2021.03.27 |
---|---|
[데이터베이스/Database] 함수 종속성과 폐포(암스트롱 공리) (0) | 2021.03.18 |
[데이터베이스/Datebase] SQL DDL/DML 정리 (0) | 2021.01.16 |
[데이터베이스/Datebase] SQL 명령 정리 (0) | 2021.01.16 |
[데이터베이스/Datebase] SQL 연습문제 (0) | 2021.01.16 |