강의정리
integrity
- entity
- referential
(insert RI, update RI, delete RI)
- domain
attribute: data이 최소단위
basic attribute
concatenate attribute
delivered attribute
designed attribute
성능을 고려한 모델링
ex)
특정 entity attribute의 상태에 따라 search영역을 제한할 수 있다.
(물론 table 명은 query statement에서 지정되어야할 것이다.)
때로는 delivered attribute를 만들어 속도를 빠르게 할 필요가 있다.
designed attribute를 잘 두어야지 성능을 향상시킬수 있다.
primary key 정규화를 위해 필요
determinant 함수적 종속관계 필요
alternative key
foreign key
1차 정규화
eliminating repeated element
나가면서 super type
2차 정규화
whole primary key가 아닌 부분적인 primary key로써 가능한 함수적 종속관계 도출
나가면서 sub type
3차 정규화
attribute들 가운데 함수적 종속관계 도출
table을 도출하고 strong, weak table관계를 도출할 필요가 있다.
strong 관계는 A테이블의 attribute과 B테이블의 key로 사용될 때 A는 B의 strong관계를 가진다.
정규화이유는
table에 모든 attribute가 들어가면 memory에 모두 올려야하고 search time이 길어진다.
때문에 최소한의 attribute관계들만을 올려놓고 search time을 줄인다.
이를 위해서 table들로 쪼개로 각각의 관계를 설정한다.
정규화는 bottom-up
ex) 모든 양식을 취합하여 정규화작업시도
bottom --> up
초보자들은 양식으로 E-R diagram을 그리는 것이 안전
양식조사
-> 전산이 찍어주는 레포트 조사
-> delevered attribute도출
(데이터모델링->정규화예제 참고: 시험)
실무적으로는 3차 정규화까지만 적용
4차정규화
multi-valed dependency를 table화 시킨다.
distinct command를 써야한다면 4차 정규화 미적용
(물론 정규화를 하면 두개이상의 table을 join하여 가져와야할 것이다.)
때로는 비정규화할 필요도 있다. 때문에 정규화/비정규화 선택을 잘 해야할 것이다.
ex)전체적인 성능 개선이 아닌 특정 attribute(report)만의 access를 향상시키기 위해서는 비정규화가 필요할 수 있다.
특정 시간이 수많은 사람이 concurrently하게 사용하는 것을 고려해야한다.
ex) e마트에서 상품의 바코드를 scan하면 DB를 sesearching하여 price를 도출한다. 때문에 수많은 transaction에 대한 고려가 필요하다.
비정규화 모델을 정규화하는 것은 어렵다.불가능하다.
정규화모델을 비정규화하는것은 가능하다.
지속적인 성능안정성을 위해서는 정규화모델링을 지향해야한다.