이상(Anomaly)


이상(Anomaly)

  • 정규화 되지 않은 데이터베이스에서 발생하는 문제

  • 테이블 안에서 데이터 중복성에 의해서 발생되는 데이터 불일치 현상

  • 릴레이션 안에서 일부 속성들의 종속이나 데이터의 중복으로 인해 데이터 조작시 불일치가 발생하는 현상

  • 애트리뷰트들의 종속관계를 하나의 릴레이션에 표현하기 때문에 발생하는 현상

종류

삽입 이상 (Insertion Anomaly)

  • 현재 테이블에서 아직 강의가 없는 교수는 수업 코드가 널(빈값)이어서 수업 코드가 식별컬럼(널 비허용)인 이 테이블에 추가할 수가 없게 됨

갱신 이상 (Modification/Update Anomaly)

  • 같은 정보가 여러 튜플에서 표현 중일 때 갱신하면 논리적인 불일치가 발생한다.

  • 현재 릴레이션에서 특정 직원의 주소 변경은 여러 레코드에 적용해야 한다. 하지만 업데이트가 부분적으로 성공하면 테이블은 모순 상태가 되고 해당 직원의 주소에 대한 질문의 대답이 달라질 수 있다.

삭제 이상 (Deletion Anomaly)

  • 현재 릴레이션에서 임의의 과정에서 레코드가 릴레이션에서 삭제된다면 그 교수에 대한 정보를 아예 잃어버릴 수 있다.

해결책

  • 정규화

  • 키 (Faculty ID, Course Code)

  • (Faculty ID, Course Code) -> Faculty Name, Faculty Hire Date Faculty ID -> Faculty Name, Faculty Hire Date

  • 키가 아닌 Faculty Name, Faculty Hire Date는 (Faculty ID, Course Code)에 함수적 종속이면서 (Faculty ID, Course Code)의 부분집합인 Faculty ID에서 다시 함수적 종속이므로 완전 함수적 종속이 아니다

Faculty IDFaculty NameFaculty Hire Date

389

Dr.Giddens

10-Feb-1985

407

Dr.Saperstein

19-Apr-1999

Faculty IDCourse Code

389

ENG-206

407

CMP-101

407

CMP-102


  • 키 (Employee ID, Skill)

  • (Employee ID, Skill) -> Employee Address Employe ID -> Employee Address

  • 키가 아닌 Employee Address는 (Employee ID, Skill)에 함수적 종속이면서 (Employee ID, Skill)의 부분집합인 Employee ID에서 다시 함수적 종속이므로 완전 함수적 종속이 아니다

  • 갱신 이상 발생: 직원 주소를 바꿀 때 삭제 이상 발생: 스킬이 하나인 직원의 정보 삭제 시 직원 정보도 삭제 삽입 이상 발생: 스킬이 하나도 없는 직원 삽입 불가능

Employee IDEmployee Addresss

426

87 Sycamore Grove

519

94 Chestnut Street

Employee IDSkill

426

Typing

426

Shorthand

519

Public Speaking

519

Carpentry

Last updated