https://jerryjerryjerry.tistory.com/50
Trigger : 명시된 이벤트가 발생할 때마다 자동으로 사용자가 정의한 일이 수행되는 것
Assertion : 제약조건이 만족되지 않는 이벤트는 수행되지 않음
Entity-Relationship 은 개념적 수준의 모델링의 사실상 표준이다.
Simple attribute : 더이상 다른 속성로 나눠지지 않음
Composite attribute : 다른 속성으로 나눠짐 (eg. 주소)
Single-valued attribute : 하나의 값만 가지는 속성
Multi-valued attribute : 여러 개의 값을 가질 수 있는 속성
Stored attribute : 값이 저장된 속성
Derived attribute : 다른 속성의 값으로부터 얻어지는 속성 (나이 -> 생년월일로 계산 가능)
ER 스키마를 논리적 스키마로 설계하는 것
방법 1,2 : 하나의 엔티티를 정해 다른 엔티티의 기본 키를 외래키로 포함시켜 관계를 표현할 수 있음
- 외래키가 어떤 관계를 표현한다는 것을 표현할 방법이 없음(문서로 표현하는 것 이외에)
- 어느 방향으로 엑세스하느냐에 따라 성능에 차이가 있을 수 있음(참조키를 찾는것과 기본키를 찾는 것의 속도차이가 존재하기때문, 기본키는 보통 인덱스로 찾을 수 있음)
- 관계에대한 어트리뷰트는 참조키를 가지는 릴레이션에 포함시킴, 어트리뷰트간의 혼동이 올 수 있음(해당 엔티티의 어트리뷰트인지, 관계에 대한 어트리뷰트인지)
방법3 : 두 엔티티의 기본키로 관계를 위한 릴레이션을 생성하는 방법
- 관계에 해당하는 어트리뷰트를 관계를 위한 릴레이션에 저장할 수 있어 관계를 위한 어트리뷰트와 엔티티의 어트리뷰트를 구분할 수 있음
- 하지만 관계에 대한 정보를 보기위해선 JOIN을 2번해야함.(JOIN의 오버헤드는 굉장히 크다. 그래서 JOIN을 최소화하기 위해 관계를 최소화하는 것이 중요)
방법4 : 어차피 1:1인데 하나의 릴레이션으로 합치자
- 엔티티를 의미단위로 나눠서 릴레이션으로 표현했었는데 이것을 합치면 의미단위가 모호해짐
- 어트리뷰트가 어떤 엔티티에 속하는지 혼동이 올 수 있음
- 하지만 퍼포먼스는 가장 좋음
방법2 : 관계를 위한 릴레이션을 만드는 방법
- 관계에 해당하는 어트리뷰트를 관계를 위한 릴레이션에 저장할 수 있어 관계를 위한 어트리뷰트와 엔티티의 어트리뷰트를 구분할 수 있음
- JOIN에 대한 오버헤드가 발생