본문 바로가기

잡다/SQL

[SQL] Entity Relationship Model

Entity

현실에서 독립되어 존재하는 대상을 의미하며, 물리적 혹은 개념적으로 존재할 수 있다. 

 의자, 나무, 자동차 등은 현실에 물리적으로 존재한다. 반면 선호도나 견해 등은 물체는 아니지만 개념적으로 존재한다. 이렇듯 현실에서 독립된 형태로 나타낼 수 있는 모든 대상을 Entity라고 한다.


Attribute

엔티티를 설명하는 속성들을 의미한다.

 흔히 자기소개를 하게 되면 이름 · 나이 · 학력 등의 정보를 이용하여 자신을 설명한다. 이때 이러한 정보들이 모든 사람에게 존재하는 일종의 속성이라면, 인간을 해당 속성을 기반으로 분류하거나 묘사할 수 있게 된다. 인간뿐만 아니라 다양한 존재들에 대해 해당 대상을 설명하는데 필요한 몇몇 속성들이 존재할 수 있는데, 이러한 개개의 존재(엔티티) 들이 가지는 속성들을 Entities라 부른다.

 

Composite Attribute

좀 더 구체적으로 구분될 수 있는 속성을 의미한다. 

 예를 들어 네이버 본사의 주소인 경기도 성남시 분당구 불정로 6 (우)13561 에 대해 생각해보자. 해당 주소는 하나의 주소로 볼 수도 있지만, 구체적으로 / / 를 포함한 도로명 주소로 나타낼 수 있다. 즉, 주소라는 속성은 / / 라는 좀더 구체적인 속성으로 구분될 수 있다. 이러한 Attribute를 Composite Attribute라고 한다.

Simple Attribute

더 이상 구분될 수 없는 간단한 속성을 의미한다. 

특정 사람의 몸무게가  68.2Kg 이라고 하자. 이때 해당 몸무게는 FLOAT 형의 데이터로 볼 수 있으며, 통상적으로 더 이상 구체적인 속성으로 구분하지 않는다. 이렇듯 더 이상 구분되지 않는 속성을 Simple Attribute라고 한다.

 

Single-Valued Attribute

각각의 Entity가 단 하나만을 가질 수 있는 속성을 의미한다.

모든 사람은 생물학적인 생일이 존재한다. 이때, 어떤 사람도 2개의 생일을 가질 수는 없다. 이렇듯 하나의 Entity가 하나의 값만 가질 수 있는 속성을 Single-Valued Attribute라고 한다.

MultiValued Attribute

각 Entity가 여러개를 동시에 가질 수 있는 속성을 의미한다. 

시장에 가면 한 사람이 바구니에 많은 물건을 담을 수 있다. '이때 바구니에 들어있는 물건' 이 속성이라고 하면, 해당 속성은 반드시 하나의 고유한 값만 가질 필요가 없다. 이 경우 해당 속성은 MultiValued Attribute이다.

 

Derived Attributes

다른 속성으로부터 유도될 수 있는 속성을 의미한다. 

 특정 사람의 출생일이 1999년 9월 3일 이라면, 이 사람의 생일은 매년 9월 3일이 된다. 이때 생일은 태어난 날로부터 유도되었다고 볼 수 있으므로, Derived Attributes에 속한다.

Stored Attributes

다른 속성이 유도되는 속성을 의미한다.

 위 예시에서 출생일이 Stored Attributes에 해당한다.

 

Complex Attribute ( 복합 속성 ) 

Composite ( 세부 속성으로 구분될 수 있음 ) 의 특성 및 MultiValued ( 여러 값을 동시에 가질 수 있음 ) 의 속성이 중첩되어 나타나는 Attribute을 의미한다. Complex Attribute을 표현할 때, 두가지 속성은 다음과 같이 나타난다.

  • Multivalued : { } 
  • Composite : ( )

특정 사람의 주소 및 전화번호를 동시에 가지는 Attribute을 생각해보자. 해당 속성은 2개의 세부 속성을 가진다.

  • { 주소 (도, 시, 구, 동, 세부 주소) }
  • { 전화번호 } 

 주소는 세부 도, 시, 구 등의 세부 속성을 가질 수 있으므로 Composite Attribute 이다. 전화번호의 경우 특정 주소의 건물에서 반드시 하나만 가져야 하는 것은 아니므로, Multivalued Attribute이다. 이러한 속성에 의해 해당 Attribute 는 다음과 같이 나타날 수 있다.

{ Address_Phone ( { 전화번호 } , 주소 ( 도, 시, 구, 동, 세부_주소  ) ) }

위와 같이 MultiValued Attribute 및 Composite Attribute의 형태가 중첩되는 특성 때문에, 흔하게 다루지는 않는다.

 

Null Values

알려져 있지 않거나, 적용시킬 수 없는 값을 의미한다. 보통 모르거나 없는 값을 NULL 로 처리한다.

NULL에서 모르는 경우는 크게 2가지 종류가 있다.

  1. 존재하지만 모르는 경우 | ex) 어떤 사람의 생일은 반드시 존재하지만, 그 사람의 생일을 알지 못한다.
  2. 있는지 없는지 모르는 경우 | ex) 어떤 사람이 반드시 전화를 가지고 있다는 보장은 없다.

 

Entity Type

동일한 Attributes을 가지는 엔티티의 모음으로, 이름 및 attribute 의 조합으로 구성된다.

 좌측의 쿼리를 통해 만들어진 STUDENT 테이블에 속한 각 엔티티들은 공통적으로 id, name, age 및 mobile_no 라는 attributes로 구성된다. 이때 STUDENT 테이블은 언급한 공통의 Attributes을 가지는 엔티티들로 구성된다고 볼 수 있으므로, Entity Type 이다. 

 위 상황에서 Entity Type의 이름은 STUDENT, attributes는 id, name, age, mobile_no 이다.

Key Attribute

특정 Entity를 유일하게 구분해주기 위한 속성이다. 위 예시에서 id 는 학생을 구분하는 기준으로 사용된다. 이 경우 STUDENT 엔티티 타입의 key attribute는 id 가 된다.

Value set of attribute

특정 attribute에 할당될 수 있는 값의 집합을 의미한다.

예를 들어 이름 속성에는 알파벳 및 공백 문자만 허용된다면, 이름 attribute의 Value set은 A-Za-z 및 공백문자가 된다. 나이 속성에 19세 이상 80세 미만 이라는 조건이 있다면, 나이속성의 Value set은 [ 19, 80 ) 의 정수 숫자가 된다.

Entity Set

동일 Entity Type을 만족하는 엔티티의 조합을 의미한다. STUDENT 엔티티 타입에 대해 13세 이상, 16세 미만이라는 조건을 만족하는 엔티티의 조합은 1행 및 4행이 된다. 

 

Weak Entity Types

 Key Attribute 가 없는 엔티티 타입으로, identifing / owner entity type이라 불리는 다른 엔티티 타입과의 연관을 통해 식별될 수 있다.

 Weak Entity Type과 owner Entity Type 사이에는 identifying relationship 관계가 설정된다.


Entity Relationship Diagram에서 사용되는 기호

  • Entity : 직사각형 형태를 띈다.
  • Weak Entity : 두개의 직사각형 모양을 가진다.

 

  • Attribute : 타원 형태를 가진다.
  • Key Attribute : 밑줄이 있다.
  • MultiValued Attribute : 타원이 2개 중첩된다.
  • Composite Attribute : 하나의 타원에 작은 타원들이 연결되어 있다.
  • Derived Attribute : 점선 형태를 띈다.

 

  • Relationship : 마름모 모양을 띈다.
  • Identifing Relationship : 두개의 마름모가 중첩된다.

사용 예시는 아래 영상을 참고하자.

https://nesoacademy.org/cs/08-database-management-system/03-entity-relationship-model/02-database-design-process


Relationships

엔티티 사이에서 발생하는 관계에 대해 설명한다.

https://www.youtube.com/watch?v=n3mHfQft5P8

Relationship

2 이상의 엔티티 사이에서 가지는 관계이다. 만약 선생이 학생을 가르친다고 하면, 선생 및 학생이라는 2개의 엔티티 사이에서 가르침이라는 관계(RelationShip)가 발생한다.


Degree of Relationship

relationship에 참여하는 엔티티 타입의 개수를 의미한다.

Unary relationship

자기 자신 엔티티에 대해 발생하는 Relationship으로, 자기 자신만 관계에 참여하므로 Degree of Relationship 은 1이다.

ex) 인간의 결혼 관계는 인간 사이에서만 발생하므로, 결혼이라는 Relationship은 인간 Person과만 연관된다.

Binary RelationShip

두개의 엔티티 사이에서 발생하는 연관 관계로, Degree of Relationship은 2이다.

Ternary Relationship

세개의 엔티티 사이에서 발생하는 연관관계이다. Degree of Relationship은 3이다.


Relationship Constraints

엔티티들이 관계를 형성할 때 발생할 수 있는 제한 조건을 다룬다.

Cardinality Ratio 

엔티티가 참여할 수 있는 관계의 최대 숫자 비율을 나타내며, 이를 통해 엔티티 사이의 관계에서 수치적인 제한조건을 설정하는데 사용된다. 흔히 아는 1 : 1, 1: N, M : N 등의 관계를 나타내는데 사용된다.

  • One-to-One : 한 부서에는 한명의 관리자만 존재할 수 있다.
  • One-to-Many : 하나의 회사에는 많은 회사원들이 일할 수 있다. 그러나, 회사원들이 많은 회사를 다닐 수는 없다.
  • Many-to-Many : 많은 학생들은 다양한 과목을 공부할 수 있다.

Participation Constraints

특정 엔티티가 다른 엔티티의 요소와 어떤 형태로 관련되어 있는지에 대해 설정한다. 두개의 엔티티 타입 사이에서 모든 엔티티가 관계에 참여할 수도 있지만, 그렇지 않을 수도 있다.

Total Participation : 두 엔티티 타입 사이에서 소외 없이 대응 관계가 존재

Partial Participation : 두 엔티티 타입 사이에서 관계에 참여하지 않는 엔티티가 존재.


Attributes of Relationship Types

엔티티들이 1 : 1, 1 : N, M : N 의 관계를 가질때, 관계된 Attribute은 다음 엔티티에 속해야 한다.

  • 1 : 1 관계 : 둘 중 하나에만 속한다.
  • 1 : N 또는 N : 1 관계 : N 쪽에 속한다.
  • M : N 관계 : 참여중인 엔티티의 조항에 의해 결정된다.

 

Role Name

각각의 relationship instance 에서 엔티티가 어떤 역할을 수행하는지 나타낸다.

Recursive Relationships : 엔티티가 하나의 관계(relationship)에 2개 이상의 role로 참여하는 경우

 

'잡다 > SQL' 카테고리의 다른 글

[SQL] SELECT 문  (0) 2022.01.15
[SQL] DB 및 테이블의 생성, 열람 및 삭제  (0) 2022.01.09
sql 데이터 형  (0) 2022.01.07