가자미의 개발이야기

[데이터베이스] ER 모델과 약한 엔티티집합 본문

Computer Science/데이터베이스

[데이터베이스] ER 모델과 약한 엔티티집합

가자미 2021. 5. 29. 13:22

ER 모델

엔티티 : 속성의 집합 (홍길동(사람 속성의 집합), 개똥이(강아지 속성의 집합) )

엔티티 집합 :  엔티티의 집합 (사람, 강아지)

관계 : 엔티티 간의 연관 (홍길동 -(반려관계)-개똥이)

관계 집합 : 관계의 집합.((홍길동,개똥이), (김철수, 멍돌이)....)

 

엔티티 집합에서의 기본키

정의 상 각 엔티티는 정의 상 유일하다.

이 엔티티들을 구분하는 속성을 기본키라 부름.

하나의 속성으로 구분하기 힘들 경우, 여러개의 속성이 기본키가 되기도 함.

 

관계 집합에서의 기본키

관계에 연관되는 엔티티 집합의 기본키 이름이 같다면, 그 엔티티 집합의 이름을 앞에 붙여서 표현 (홍길동.식별번호)

즉 관계를 나타낼 때 엔티티 집합의 기본키만으로도 파악이 가능하다.

 

Binary relationship에 따른 기본키 설정

many to many = 어느 한 쪽의 기본키만으로는 파악 불가.  양쪽 모두 필요

many to one = many 측의 기본키로 파악 가능

one to many = many 측의 기본키로 파악 가능

one to one = 양 쪽의 기본키 중 하나로 파악가능

 

약한 엔티티 집합

한쪽이 여러 속성을 기본키로 하는데 관계를 맺는 다른 쪽이 그 중 하나만 기본키로 사용할 경우

course 엔티티세트가 있고, section 엔티티세트가 course_id, semester, year, sec_id로 이뤄져있다고 하자.

section은 course와 관련있는 엔티티세트임을 알 수 있고(course_id가 있으니) 이 둘을 관계로 연결한다고 하자.

이때 course_id는 양 엔티티세트에 중복된다.

 

이런 중복을 해결하기 위해서는 section의 course_id를 제거하는 방법이 있다.

하지만 이렇게 되면 section 혼자로는 section의 엔티티들을 구분할 수 없게 된다.

이렇게 되면 section은 sec_course 관계에 의지해, 자신의 엔티티를 구분하는 신세가 된다.

이런 상황에 놓인 section을 약한 엔티티 집합이라 한다.

그리고 이런 상황을 만들게 한 중복된 엔티티(이 예시에서는 course_id)는 identifying entity라 부른다

그 외 엔티티는 discriminator entity라 부른다.

약한 엔티티 집합은 반드시 identifying entity와 관련이 되어야하고, 이런 경우 해당 약한 엔티티 집합은 identifying entity set에 존재 종속(existence dependent)된다고 한다.(반면 identifying entity set는 약한 엔티티집합을 own한다고 한다) 

 

#중복된 속성 처리

해당 그림을 보면 student의 dept_name는 department에도 존재하는 중복된 속성이고,

student만 생각해봤을 때 반드시 필요한 속성은 아니다.

즉 stud_dept를 설명하기 위해 존재한다. 이런 것은 지워주도록 한다.

하지만, 실제 테이블을 작성할 때는 적어줘야 할 수 있다.

 

강한 엔티티 집합

반면 강한 엔티티 집합은 중복된 엔티티(identifying entity)를 제거하고 나서도 스스로 엔티티들을 구분할 수 있는 엔티티 집합이다.

약한 엔티티 집합 표현

표현 방식은 관계에 두줄로 하고, 약한 엔티티 집합은 두줄로 표현한다. 그리고 discriminator entity에 점선으로 표현한다.

그리고 section에는 비록 course_id가 없지만, section의 기본키는 course_id, sec_id, semester, year이다.