강한 엔티티 타입
- 정규 엔티티 타입
- 독자적으로 존재하며 엔티티 타입 내에서 자신의 키 애트리뷰트를 사용하여 고유하게 엔티티들을 식별할 수 있는 엔티티 타입
약한 엔티티 타입
- 키를 형성하기에 충분한 애트리뷰트들을 갖지 못한 엔티티 타입
- 소유 엔티티 타입이 있어야 존재 가능함
- 소유 엔티티 타입의 키 애트리뷰트를 결합해야만 고유하게 약한 엔티티 타입의 엔티티들을 식별할 수 있음
*소유 엔티티 타입: 약한 엔티티 타입과 연관된 강한 엔티티 타입
애트리뷰트
- 하나의 엔티티는 연관된 애트리뷰트들의 집합으로 설명됨
- EX) 사원 Entity는 ‘사원번호’, ‘이름’, ‘직책’, ‘급여’ 등의 애트리뷰트를 가짐
- 한 애트리뷰트의 도메인은 그 애트리뷰트가 가질 수 있는 모든 가능한 값들의 집합을 의미
- EX) 사원번호는 1000-9999까지의 값을 가짐
- 여러 애트리뷰트가 동일한 도메인을 공유할 수 있음
- EX) 사원번호와 부서 번호가 네 자리 정수를 가질 수 있음
- 키 애트리뷰트는 한 애트리뷰트 또는 애트리뷰트들의 모임으로서 한 엔티티 타입 내에서 각 엔티티를 고유하게 식별함
- ER 다이어그램에서 기본 키에 속하는 애트리뷰트는 밑줄을 그어 표시함
- 요구사항 명세서에 명사나 형용사로 표현됨
- 엔티티는 독립적인 의미를 갖는데 반해서 애트리뷰트는 독립적인 의미를 갖지 않음
- ER 다이어그램에서 타원형으로 나타냄
- 애트리뷰트와 엔티티 타입은 실선으로 연결
단순 애트리뷰트(simple attribute)
- 더 이상 다른 애트리뷰트로 나눌 수 없는 애트리뷰트
- ER 다이어그램에서 실선 타원으로 표현함
- ER 다이어그램에서 대부분의 애트리뷰트는 단순 애트리뷰트

복합 애트리뷰트(composite attribute)
- 두 개 이상의 애트리뷰트로 이루어진 애트리뷰트 (EX. Address)
- 동일한 엔티티 타입이나 관계에 속하는 애트리뷰트들 중에서 밀접하게 연관된 것을 모아놓은 것
- 요즘은 이런 방식보다 전부 따로 분해해서 정교하게 사용함

단일 값 애트리뷰트(single-valued attribute)
- 각 엔티티마다 정확하게 하나의 값을 갖는 애트리뷰트
- ER 다이어그램에서 단순 애트리뷰트와 동일하게 표현됨
- Ex. 사원의 사원번호 애트리뷰트는 어떤 사원도 두 개 이상의 사원번호를 갖지 않으므로 단일 값 애트리뷰트
- ER 다이어그램에서 대부분의 애트리뷰트는 단일 값 애트리뷰트
- Ex. 사원당 하나씩 갖고있는 사원 번호 등
다치 애트리뷰트(multi-valued attribute)
- 각 엔티티마다 여러 개의 값을 가질 수 있는 애트리뷰트
- 관계 데이터 모델에서 표현 불가
- ER 다이어그램에서 이중선 타원으로 표현함
- Ex. 한 사원이 여러개 가질 수 있는 취미 등

저장된 애트리뷰트(stored attribute)
- 다른 애트리뷰트와 독립적으로 존재하는 애트리뷰트
- ER 다이어그램에서 단순 애트리뷰트와 동일하게 표현됨
- ER 다이어그램에서 대부분의 애트리뷰트는 저장된 애트리뷰트
- EX) 사원 엔티티 타입에서 ‘사원 이름’, ‘급여’는 다른 애트리뷰트와 독립적으로 존재
유도된 애트리뷰트(derived attribute)
- 저장된 애트리뷰트와 반대의 개념
- 다른 애트리뷰트의 값으로부터 얻어진 애트리뷰트
- EX) 나이 애트리뷰트는 생년월일 애트리뷰트를 통해 알 수 있음
- 관계 데이터베이스에서 릴레이션의 애트리뷰트로 포함시키지 않는 것이 좋음
- ER 다이어그램에서 점선 타원으로 표현됨

약한 엔티티 타입
- 키를 형성하기에 충분한 애트리뷰트들을 갖지 못한 엔티티 타입
- 약한 엔티티 타입에게 키 애트리뷰트를 제공하는 엔티티 타입을 소유 엔티티 타입(owner entity type) 또는 식별 엔티티 타입(identifying entity type)라고 부름
- ER 다이어그램에서 이중선 직사각형으로 표기
- 약한 엔티티 타입의 부분 키는 점선 밑줄을 그어 표시

부분 키(partial key)
- 약한 엔티티 타입에서 개별 객체를 구분하는 속성
- 독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성을 식별자(Discriminator) 혹은 부분 키(Partial Key)라고 한다.
- EX. 가족과 직원이라는 두 개의 개체가 부양이라는 관계를 맺고 있는 경우
- 직원에는 직원 번호, 이름, 직책이라는 속성들이 있고 직원 번호가 직원의 고유키
- 직원이 부양하는 가족이 있다고 할 때 직원이 없으면 부양가족도 존재할 수 없으므로 가족은 약한 개체가 됨.
- 또한 부양가족의 이름이라는 속성은 직원의 직원 번호와 결합하여 약한 개체 타입을 식별할 수 있으므로 부분 키(식별자)가 됨.

관계와 관계 타입
- 관계는 엔티티들 사이에 존재하는 연관이나 연결로서 두 개 이상의 엔티티 타입들 사이의 맵핑시켜주는 것으로 생각할 수 있음
- 관계 집합은 동질의 관계들의 집합
- 관계 타입은 동질의 관계들의 틀
- 관계 집합과 관계 타입을 엄격하게 구분할 필요는 없음
- 요구사항 명세에서 흔히 동사는 ER 다이어그램에서 관계로 표현됨
- ER 다이어그램에서 다이아몬드로 표기
- 관계 타입이 서로 연관시키는 엔티티 타입들을 관계 타입에 실선으로 연결함

관계의 애트리뷰트
- 관계 타입은 관계의 특징을 기술하는 애트리뷰트들을 가질 수 있음
- 관계 타입은 키 애트리뷰트를 갖지 않음 → 아무 의미가 없기 때문
- 관계가 관리하는 엔티티의 키들이 모여 관계 애트리뷰트의 키 역할을 함

차수(degree)
- 관계로 연결된 엔티티 타입들의 개수를 의미
- 실세계에서 가장 흔한 관계는 두 개의 엔티티 타입을 연결하는 2진 관계

카디날리티
- 카디날리티 비율은 한 엔티티가 참여할 수 있는 관계의 수를 나타냄
- 엔티티는 관계를 맺지 않을 수도 있음
- 관계 타입에 참여하는 엔티티들의 가능한 조합을 재현함
- 관계를 흔히 1:1, 1:N, M:N으로 구분
- 카디날리티에 관한 정보는 간선 위에 나타냄
- 카디날리티는 관계 데이터 모델로 만드는 데에 있어 중요한 정보임
- 관계 데이터 모델은 원자 값만을 갖기 때문에 1:N, M:N의 관계에서는 집합 처리가 필요
- 스키마의 설계가 달라짐

1:1 관계
- E1의 각 엔티티가 정확하게 E2의 한 엔티티와 연관되고, E2의 각 엔티티가 정확하게 E1의 한 엔티티와 연관되면 이 관계를 1:1 관계라고 함
- Ex. 각 사원에 대해 최대한 한 개의 PC가 있고, 각 PC에 대해 최대한 한 명의 사원이 있으면 사원과 PC의 관계는 1:1 관계이다
1:N 관계
- 실세계에서 가장 흔히 나타나는 관계
- E1의 각 엔티티가 E2의 임의의 개수의 엔티티와 연관되고, E2의 각 엔티티는 정확하게 E1의 한 엔티티와 연관되면 이 관계를 1:N 관계라고 함
- Ex. 각 사원에 대해 최대한 한 대의 PC가 있고, 각 PC에 대해 여러 명의 사원들이 있으면 PC와 사원 간의 관계는 1:N 관계이다
M:N 관계
- 한 엔티티 타입에 속하는 임의의 개수의 엔티티가 다른 엔티티 타입에 속하는 임의의 개수의 엔티티와 연관됨
- Ex. 각 사원에 대해 여러 대의 PC가 있고, 각 PC에 대해 여러 명의 사원들이 있으면 사원과 PC의 관계는 M:N 관계이다.
카디날리티 비율의 최솟값과 최댓값
- ER 다이어그램에서 관계 타입과 엔티티 타입을 실선 위에 (min, max) 형태로 표기
- min은 이 엔티티 타입 내의 각 엔티티는 적어도 min 번 관계에 참여함을 의미
- max는 이 엔티티 타입 내의 각 엔티티는 최대한 max 번 관계에 참여함을 의미
- min=0 은 어떤 엔티티가 반드시 관계에 참여해야 할 필요가 없음을 의미
- max=* 은 어떤 엔티티가 관계에 임의의 수만큼 참여할 수 있음을 의미

역할(role)
- 관계 타입의 의미를 명확하게 하기 위해 사용됨
- 특히 하나의 관계 타입에 하나의 엔티티 타입이 여러 번 나타나는 경우에는 반드시 역할을 표기해야 함
- 관계 타입의 간선 위에 표시

전체 참여와 부분 참여
- 전체 참여는 어떤 관계에 엔티티 타입 E1의 모든 엔티티들이 관계 타입 R에 의해서 어떤 엔티티 타입 E2의 어떤 엔티티와 연관되는 것을 의미
- 부분 참여는 어떤 관계에 엔티티 타입 E1의 일부 엔티티만 참여하는 것을 의미
- 약한 엔티티 타입은 항상 관계에 전체 참여
- 전체 참여는 ER 다이어 그램에서 이중 실선으로 표시
- 카디날리티 비율과 함께 참여 제약조건은 관계에 대한 중요한 제약조건임

다중 관계
- 두 엔티티 타입 사이에 두 개 이상의 관계 타입이 존재할 수 있음

순환적 관계
- 하나의 엔티티 타입이 동일한 관계 타입에 두 번 이상 참여하는 것

ER 스키마를 작성하기 위한 지침
- 엔티티는 키 애트리뷰트 이외에 설명 정보를 추가로 가짐
- 다치 애트리뷰트는 엔티티로 분류해야 함
- 애트리뷰트들이 직접적으로 설명하는 엔티티에 애트리뷰트들을 붙임
- 가능한 한 복합 식별자를 피함
- 관계는 일반적으로 독자적으로 존재할 수 없지만 엔티티 타입과 관계 타입을 절대적으로 구분하는 것은 어려움
- 설계자의 선택에 따라 달라질 수 있음
데이터베이스 설계 과정
- 응용의 요구사항을 수집하여 기술
- 응용과 연관이 있는 엔티티 타입들을 식별
- 응용과 연관이 있는 관계 타입들을 식별
- 관계가 1:1, 1:N, M:N 중에서 어느 것에 해당하는지 결정
- 엔티티 타입과 관계 타입들에 필요한 애트리뷰트들을 식별하고, 각 애트리뷰트가 가질 수 있는 값들의 집합을 식별
- 엔티티 타입들을 위한 기본 키를 식별
- 응용을 위한 ER 스키마 다이어그램을 그림
- ER 스키마 다이어그램이 응용에 대한 요구사항과 부합되는지 검사
- ER 스키마 다이어그램을 DBMS에서 사용되는 데이터베이스 모델로 변환
출처
'Computer Science > DataBase' 카테고리의 다른 글
뷰와 시스템 카탈로그(1) (0) | 2022.04.20 |
---|---|
릴레이션 정규화 (0) | 2022.04.20 |
물리적 데이터베이스 설계 (0) | 2022.04.15 |
데이터베이스 설계와 ER모델(2) (0) | 2022.04.13 |
관계대수와 SQL(1) (0) | 2022.04.08 |