(Key 정리)
- 슈퍼키(super key): 중복되지 않고 어떤 튜플을 유일하게 구분할 수 있는 테이블 안의 속성들의 조합. 튜플을 유일하게 구분할 수 만 있으면 여러개가 존재 할 수 있음.
- 후보키(candidate key): 슈퍼키 중 최소성(최소한의 속성의 집합)을 만족 하는 키. 유일성 + 최소성
- 기본키(primary key): 후보키 중에서 하나를 선택한 키. NULL값과 중복값을 가질 수 없음.
- 대체키(alternate key): 후보키 중에서 기본키로 선택되지 못한 키
- 부분키(partial key): 약한 개체를 유일하고 최소한으로 구분하는 키. 즉, 약한 개체의 기본키. (= 구별자)
- 외래키(foreign key): 다른 테이블의 기본키를 참조하는 키. 중복 값을 가질 수 있으며 NULL값이 허용됨.
특수화(Specialization)
- 하향식 설계방식(Top-down design process)
- 하나의 개체 타입을 속성을 같는 몇 개의 하위 레벨 개체 타입으로 분리한다.
- ISA라고 적힌 삼각형으로 표현.
- 개체 상속 (Attribute inheritance): 하위 레벨 개체는 자신과 연결된 상위 레벨 개체 집합의 모든 속성과 관계를 상속받는다. 맨 위의, 상위 계층 개체가 가장 많이 상속한다.
일반화(Generalization)
- 상향식 설계방식(bottom-up design process)이다.
- 특수화의 역 방향 설계로 ER 다이어그램에서 같은 방식으로 표현되며 서로 바꿔서 부를 수 있다.
- 몇 개의 개체 타읍을 합쳐서 상위 레벨의 한 개체로 만든다.
※ ISA 관계는 superclass - subclass relationship로 불리기도 한다
특수화/일반화의 제약 조건
- 하위 레벨 개체 집합의 멤버가 될 수 있는 제약: 조건에 의한 정의(condition-defined)/사용자에 의한 정의(user-defined)
- 분리(disjoint): 하나의 객체는 반드시 하나의 하위 개체 집합에만 속할 수있다. ISA 삼각형 옆에 'disjoint'라고 표기함으로써 표현되며 반드시 특수화/일반화에 명시되어야 한다.
- 중첩(overlapping): 한 객체가 하나 이상의 하위 개체 집합에 속할 수 있다. 중첩이 기본 사항이므로 따로 표기하지 않는다.
- 완전성 제약조건(Completeness constraint): 상위 개체 집합의 개체가 특수화/일반화에서 반드시 하나 이상의 하위 개체 집합에 속해야하는지 아닌지에 대한 것.
- 전체(total): 상위 개체는 반드시 하위 개체 집합에 속한다. 이중선을 이용하여 표현.
- 부분(partial): 어떤 상위 개체는 하위 개체 집합에 속할 수도, 속하지 않을 수도 있다. 기본사항이므로 따로 표시하지 않는다.
집단화(Aggregation)
- 각 구성 요소를 표현하는 개체 집합으로부터 새로운 개체를 정의한다. 서로 관련이 있는 여러 개체 타입을 묶어 한 개의 상위 개체 타입으로 만든다.
- 중복되는 관계를 단순한 관계로 표현하는 것이 가능해진다.
※ 아래 그림에서 모든 manages는 work_on와 연결되지만 모든 woks_on는 manages에 연결되지 않기 때문에 이 둘은 중첩된다. 중첩을 지우기 위해 관계들 사이에 추상적인 개체의 관계를 만들어 그 밑의 그림처럼 바꿔줄 수 있다.
ER 다이어그램 표현 Symbol 정리
UML(Unified Modeling Language)
- 전체 소프트웨어 시스템의 다양한 측면을 그래픽으로 모델링하는 많은 컴포넌트를 가지고 있다.
- UML Class Diagram은 E-R Diagram과 유사하지만 몇가지 차이가 있다.
1) 개체타입과 속성: 개체 집합은 박스로 표현되고, 속성은 박스 안에 있다.
2) 관계: binary 관계 집합은 집합을 연결하는 선만 그린다. 관계 집합의 이름과 관계 집합 안의 개체 집합에 수행되는 역할은 줄에 인접하여 작성한다. 관계집합의 이름은 속성과 함께 박스 안에 기재할 수 있고 점선으로 연결된다. non-binary는 다이아몬드를 이용한다.
3) 카디널리티 제약 조건: 제약조건의 위치는 E-R과 반대이다. 아래 그림에서 E2의 0..*은 최대 하나의 관계에 참여한다는 것을 뜻하고, E1의 0..1은 각 E1의 개체는 다양한 관계에 참여할 수 있다는 것을 의미한다. 1 혹은 * 같은 단일값 중에서 1은 1..1(오직 하나만)과 같고 *은 0..*(0부터 *개까지)과 동일하게 처리된다.
4) 특수화/일반화
'Programing > [DB]SQL' 카테고리의 다른 글
[DB] E-R 모델을 이용한 데이터베이스 디자인(1) (0) | 2020.09.28 |
---|---|
[DB]데이터베이스 개념(3) - DBA, DC Manager, 클라이언트/서버, 분산처리 (0) | 2020.09.14 |
[DB] 데이터베이스 개념(2) - 독립성, 구조, 매핑, DBA 등 (0) | 2020.09.13 |
[DB] 데이터베이스 개념(1) - DBMS와 구성요소, 데이터 모델 (0) | 2020.09.12 |