대학 전공 공부/데이터베이스1

11. 데이터베이스 설계 이론

Xerath(제라스) 2022. 6. 14. 13:01
728x90
반응형

- 나쁜 스키마에는 3가지 이상(anormaly)이 있음.

1) 갱신 이상

2) 삭제 이상

3) 입력 이상

 

course 테이블과 department 테이블을 합쳐서 다음과 같은 테이블을 만듦.

->mybadtable1(cID, title, deptName, credit, chairman, building, budget)

이 테이블은 나쁜 스키마인데...

- Update anormaly 측면

chairman을 하나만 바꿔도 여러개 다른 row들에서도 바꿔줘야 함. ->redundancy(중복성) 유지 X

- Delete anormaly 측면

만약 Java, Data, Structure, Databases 모두 사라지면 CS과에 대한 정보들도 같이 삭제됨.

-Insert anormaly 측면

새로운 과를 신설해두려고 함. 하지만 해당 과에 과목을 지정을 같이 하지 않으면 신설 불가능.(∵cID가 PK이기 때문)

 

- Functional Dependency(함수 종속성)

: 유효한 관계 인스턴스에 대한 제약으로 일부 속성 값이 다른 속성 값을 유일하게 결정함을 의미함.

- 슈퍼키 : 관계 속성의 일부분으로서 전체 속성을 함수적으로 결정하는 속성

- 후보키 : 슈퍼키의 성질을 만족하면서 슈퍼키의 성질을 만족하는 서브셋이 없는 속성 셋.

 

- 함수 종속성의 사용

1) 주어진 관계 인스턴스의 유효성을 검사

2) 적법한 테이블의 제약 조건을 명시

 

- trivial(무의미한) 함수 종속성

: 함수 종속성이 테이블의 모든 인스턴스에 대하여 만족이 되는 경우

 

- 함수 종속성의 폐포(closure)

: 주어진 함수 종속성 집합으로부터 유추할 수 있는 모든 함수 종속성을 가진 집합

 

- 암스트롱 공리(Armstring Axioms)

: 새로운 함수 종속성을 유추할 수 있는 추론 규칙

1) 재귀성(reflexivity) : 무의미한 함수 종속성을 생성함.

2) 부가성(augmentation) : 주어진 함수 종속성에 동일한 속성을 양쪽에 추가하여도 됨.

3) 이행성(transivity) : 추론의 이행성을 설명하는 것. 

 

이 규칙들은 1) sound(새롭게 생성되는 규칙이 유효함) 2) complete(모든 유효한 함수 종속성을 암스트롱 공리를 이용하여 생성할 수 있음) 해야 한다.

 

+추가 규칙

- 위 규칙들을 가지고 쭉쭉 해나가면 Closure를 구할 수 있음.

- 속성 폐포의 사용

1) 주어진 속성이 슈퍼 키인지 검증할 때 사용

2) 주어진 함수 종속성이 유효한지 검증(a->b에 대해 a의 closure에 b가 속하면 유효한 FD임)

 

- 정규 커버(=최소 커버, Canonical cover)

redundant한 FD를 제거한 FD set 

- 정규형

제 1~3정규형, BCNF는 함수 종속성을 이용하여 정의

제 4정규형은 다치 종속성을 이용하여 정의

 

- 제 1정규형

: 도메인의 모든 값이 원자 값인 정규형

 

- 주요 속성 / 비주요 속성

: 다수 개의 후보 키가 존재할 때 최소 하나 후보 키에 속하면 주요 속성임.

 

- 완전 함수 종속성

: a->b에서 a의 어떤 부분집합 r도 r-> b를 만족하지 않는 경우

만약 이를 만족하면 '부분 함수 종속성'이라고 함.

 

- 이행 함수 종속성

: a->b, b->r 일 때 a->r을 뜻함.

 

- 제 2정규형

: 모든 비주요 속성이 모든 후보 키에 완전 의존적인 정규형

- 제 3정규형

: 제 2정규형 중에서 비주요 속성이 모든 후보 키에 이행적으로 의존적이 아닌 정규형

혹은

모든 의미 있는 함수 종속성 a->b에서 a가 슈퍼 키이거나 또는 b가 주요 속성인 정규형

 

 

- BCNF

: 관계형 스키마가 모든 의미 있는 함수 종속성 a->b에서 a가 슈퍼 키인 정규형

※ 속성이 2개인 테이블은 무조건 BCNF!!!!!!!

 

 

728x90
반응형