💕IT 공부하기/데이터베이스

ER모델에 대해 알고계신가요? (2)

수리즘 2022. 9. 2. 09:00
반응형

05. 약한 엔티티 타입

어떤 경우에는 엔티티 타입 내의 엔티티들이 자체적으로 갖고 있는 애트리뷰트들의 값에 의해서 고유하게 식별이 안됩니다. 예를 들어 회사에서 어떤 사원의 부양가족 이름은 다른 사원의 부양가족의 이름과 같을 수 있습니다. 한 가지 해결 방안은 회사의 사원들의 모든 부양가족에 대해서 고유한 번호를 부양하는 것입니다. 이런 고유한 번호는 데이터베이스 처리에 사용되지 않을 수 있습니다. 

 

또 다른 해결 방안은 부양가족이 속한 사원의 번호를 부양가족의 이름과 결합하여 부양가족의 키로 정하는 것입니다. 한 사원의 부양가족 이름은 모두 다를 것이므로, 사원번호와 부양가족의 이름을 결합하면 모든 사원들의 부양가족들을 고유하게 식별할 수 있습니다. 부양가족의 이름처럼 한 사원에 속한 부양가족 내에서는 서로 다르지만 회사의 모든 사원들의 부양가족들 전체에서는 같은 경우가 생길 수 있는 애트리뷰트를 부분 키(partial key)라고 부릅니다. 이처럼 자체적으로 키를 보유하지 못한 엔티티를 약한 엔티티 타입(weak entity type)이라고 부릅니다.

 

즉, 약한 엔티티 타입엔티티들을 고유하게 식별하기 위해서, 다른 엔티티 타입으로부터 키 애트리뷰트를 가져오는 엔티티 타입입니다.

 

이때 약한 엔티티 타입에게 키 애트리뷰트를 제공하는 엔티티 타입을 소유 엔티티 타입(owner entity type) 또는 식별 엔티티 타입(identifying entity type)이라고 부릅니다. 약한 엔티티 타입은 소유 엔티티 타입이 존재하지 않으면 존재할 수 없는 엔티티 타입입니다. ER 다이어그램에서 약한 엔티티 타입은 이중선 직사각형으로 표기합니다. 약한 엔티티 타입의 부분 키는 점선 밑줄을 그어 표시합니다.

 

기본 키를 가진 엔티티를 강한 엔티티 타입(strong entity type) 또는 정규 엔티티 타입(regular entity type)이라고 부릅니다. 마찬가지로 관계에도 약한 관계와 강한 관계가 있습니다. 강한 관계는 강한 엔티티들 사이의 관계이고, 강한 엔티티 타입과 약한 엔티티 타입을 연결하는 관계는 약한 관계입니다. 약한 엔티티는 다른 엔티티의 존재에 의존하므로 종속되는 엔티티라고도 부르며 이를 의존 종속성(existence dependence)라고 합니다. 만일 E가 약한 엔티티 타입이면 E에 하나 이상의 키를 제공하는 엔티티 타입 F들은 관계 타입 R에 의해서 E와 연관되어야 합니다.

 

약한 엔티티 타입

06. 관계와 관계 타입

하나의 엔티티 자체는 다른 어떤 엔티티와 연관을 가질 수 있습니다. 예를 들어, 사원 엔티티는 부서 엔티티에서 일을 합니다. 이를 엔티티들 간의 관계(relationship)라고 합니다. 엔티티와 마찬가지로 주어진 문제 영역과 연관된 엔티티들 간의 관계들을 수집하여 저장합니다. 다시 말해서 데이터베이스에는 사원과 부서에 관한 데이터뿐만 아니라, 사원과 부서 간의 관계에 대한 데이터도 저장해야 합니다. 예를 들어, 데이터베이스 사용자는 사원에 관한 질의 또는 부서에 관한 질의뿐만 아니라, 어떤 사원이 근무하는 부서를 질의하거나 어떤 부서에 근무하는 모든 사원들을 질의할 수 있기 때문입니다.

 

관계 타입은 ER 다이아그램에서 다이아몬드로 표기하고, 관계 타입이 서로 연관시키는 엔티티 타입들을 관계 타입에 실선으로 연결합니다.

관계 타입 WORKS_FOR

관계 집합은 동질의 관계들의 집합입니다. 관계 타입은 동질의 관계들의 틀로서 하나의 관계와 구분해야 합니다. 그러나 관계 집합과 관계 타입도 엄격하게 구분할 필요는 없고, 문맥에 따라 판단하면 됩니다. 요구사항 명세에서 흔히 동사는 ER 다이어그램에서 관계로 표현됩니다. 따라서 엔티티와 관계를 "Employee가 Department를 위해 일한다"라는 문장처럼 읽을 수 있습니다.

 

엔티티 관계 엔티티
사원(employee) 근무한다(works for) 부서(department)
공급자(supplier) 공급한다(supplies) 부품(part)
학생(student) 수강한다(enrolls) 과목(course)

 

► 관계의 애트리뷰트

관계 타입은 관계의 특징을 기술하는 애트리뷰트들을 가질 수 있습니다. 관계 타입은 키 애트리뷰트를 갖지 않습니다. 하나의 관계 집합 내에서 특정 관계 식별은 참여하는 엔티티들의 키들을 통해서 이뤄지기 때문입니다.

► 차수(degree)

관계의 차수는 관계로 연결된 엔티티 타입들의 개수를 의미합니다. 따라서 1진, 2진, 3진 관계는 각각 차수가 1,2,3입니다. 임의의 개수의 엔티티 타입 사이의 관계를 정의할 수 있지만 실세계에서 가장 흔한 관계는 두 개의 엔티티 타입을 연결하는 2진 관계입니다.

► 카디날리티 비율

데이터베이스를 설계하기 위해서 데이터 모델링을 수행할 때, 두 개의 엔티티 타입이 서로 연관된다는 사실만 알아서는 충분하지 않습니다. 두 엔티티 타입 간의 카디날리티 비율도 정확하게 모델링해야 합니다. 카디날리티 비율은 한 엔티티 타입의 몇 개의 엔티티가 다른 엔티티 타입의 몇 개의 엔티티와 연관되었는가를 나타냅니다. 이 비율은 관계 타입에 참여하는 엔티티들의 가능한 조합을 제한합니다.

 

카디날리티 비율

 

 

[IT 공부하기/데이터베이스] - ER모델에 대해 알고계신가요? (3)

 

ER모델에 대해 알고계신가요? (3)

06. 관계와 관계 타입 (2) ► 1:1 관계 E1의 각 엔티티가 정확하게 E2의 한 엔티티와 연관되고, E2의 각 엔티티가 정확하게 E1의 한 엔티티와 연관되면 이 관계를 1:1 관계라고 합니다. 예를 들어, 각 사

soonirism.tistory.com

 

 

 

 

반응형