데이터베이스

E-R 모델

dev-rootable 2023. 6. 13. 12:27

[해당 글은 공부 목적으로 아래 사이트 및 교재 등을 참고하여 작성되었습니다.]

[모든 다이어그램은 IE 표기법을 따르며, 해당 내용은 불친절한 SQL 프로그래밍 교재를 참고함]

 

📌 E-R 모델(Entity-Relationship Model)이란

 

엔터티(Entity)와 관계(Relationship)로 데이터를 표현하는 모델로 산출물을 ERD(Entity-Relationship Diagram)이라 한다. 주로 IE(Information Engineering) 표기법과 Barker 표기법을 사용한다.

 

📌 E-R 모델 구성요소

 

🔎 엔터티(Entity)

 

기업에서 지속적으로 저장하고 관리해야 할 대상으로 실제 세상에 존재하는 객체이다. 하나의 관리 대상이 엔터티가 되기 위해서는 반드시 두개 이상의 속성을 가져야 한다. 또한, 엔터티는 반드시 기본 식별자(Primary Identifier)를 가져야 한다.

 

 

E-R 모델과 관계형 모델, 데이터베이스와 관계 (출처: 불친절한 SQL 프로그래밍 by 정희락)

 

🔎 속성(Attribute)

 

엔터티에서 관리되는 데이터의 최소 단위 또는 엔터티에 종속되는 명사적 단어들을 말한다. 일반적으로 명사적 단어들 중에 구성 요소를 포함하고 있는 명사들은 엔터티가 되고 그렇지 못한 명사들은 속성이 된다.

 

업무적으로 분리되지 않아야 하며, 하나의 속성값만 가져야 한다.

 

 

🔎 관계(Relationship)

 

엔터티 간의 업무적 연관이다. 엔터티 관계에서 참조하는 엔터티자식 엔터티, 참조 대상이 되는 엔터티부모 엔터티라고 한다. 자식 엔터티는 부모 엔터티의 기본 식별자를 상속받는다. 이처럼 상속 받은 식별자를 래 식별자(Foreign Identifier, FK)라고 한다.

 

부서 엔터티와 사원 엔터티의 관계

 

📢 엔터티와 엔터티 간의 관계

 

카디널리티 : 하나의 부모 인스턴스가 몇 개의 자식 인스턴스와 페이링될 수 있는지를 나타낸다.

 

  • 1:1 관계
    • A 엔터티에 존재하는 데이터 1개와 관계되는 B 엔터티에 존재하는 데이터의 개수도 1개인 엔터티간의 관계

 

하나의 부서는 한 명의 사원만 가질 수 있고, 한 명의 사원은 한 부서에만 속할 수 있다.

  

  • 1:M 관계
    • A 엔터티에 존재하는 데이터 1개와 관계되는 B 엔터티에 존재하는 데이터의 개수가 여러 개인 엔터티 간의 관계

 

하나의 부서는 여러 사원을 가질 수 있고, 한 명의 사원은 한 부서에만 속할 수 있다.

 

  • M:M 관계
    • A 엔터티에 존재하는 데이터 1개와 관계되는 B 엔터티에 존재하는 데이터의 개수가 여러 개이며, B 엔터티에 존재하는 데이터 1개와 관계되는 A 엔터티에 존재하는 데이터의 개수도 여러 개인 엔터티 간의 관계

 

 

위 경우 아래와 같이 부서소속사원 엔터티를 추가하여 M:M 관계를 해소할 수 있다. 이러한 엔터티를 연관 엔터티(associative entity)라 한다.

 

하나의 부서는 한 명 이상의 사원을 가질 수 있고, 한 명의 사원은 하나 이상의 부서에 속할 수 있다.

 

📢 M:M 관계의 문제점

 

🔸 조인 시 성능 저하 발생

 

M:M 관계인 두 테이블을 조인하게 되면 MxM 만큼의 결과 데이터가 추출된다. 이 경우 추출되는 데이터가 많아지기 때문에 마지막에 Group by를 통해 데이터를 줄인다. 따라서, 조인이 힘들어지고 Group by를 통해 데이터를 줄이는 작업으로 인해 성능 저하가 발생한다.

 

🔸 원하는 데이터 추출의 어려움

 

M:M 관계에서는 원하는 데이터를 추출하기 위해 Group by절을 자주 사용하게 되므로 SQL 작성이 어려워진다.

 

M:M 조인 결과 예시

 

위 그림처럼 MxM만큼의 데이터가 발생하고 직원번호 또는 부서번호를 Group by 컬럼으로 그룹핑함으로써 집합 레벨을 1로 만들어 데이터를 줄일 수 있다.

 

🔸 데이터 정합성

 

M:M 관계는 관계가 서로 복잡하여 데이터 정합성을 유지하는데 고려해야 할 것들이 많다.

 

M:M관계는 언젠가 1:M 관계로 해소해야 한다

 

Reference:

http://www.axiominfo.co.kr/default/article/column.php?com_board_basic=read_form&&com_board_search_code=&com_board_search_value1=&com_board_search_value2=&com_board_page=3&&com_board_id=2&&com_board_idx=134 

 

엑시엄에 오신것을 환영합니다

관계는 엔티티 사이에 의미를 부여하는 역할을 한다. 이러한 관계가 잘못되면 해당 정보 시스템은 데이터의 정합성 자체가 흔들리게 되고, 해당 시스템을 관리하는 사람도 서로 커뮤니케이션이

www.axiominfo.co.kr

 

📢 옵셔널리티

 

부모 인스턴스와 자식 인스턴스의 페어링 여부를 나타낸다.

 

🔸 필수(mandatory) 관계

 

상대 엔터티에 대해 해당 엔터티에 조건을 만족하는 엔터티가 반드시 존재할 경우(반드시 페어링되어야 하는 관계)

 

예를 들어, 부서는 사원을 가져야 하고, 사원도 반드시 부서에 속해야 한다면 상호 필수(fully mandatory) 관계라고 한다.

 

상호 필수 관계

 

🔸 선택(optional) 관계

 

상대 엔터티에 대해 해당 엔터티에 조건을 만족하는 엔터티가 존재할 수도 존재하지 않을 수도 있는 경우

 

예를 들어, 사원이 없는 부서는 존재할 수 있지만 소속 부서가 없는 사원은 존재할 수 없는 관계를 선택 관계라고 한다. 여기서 선택 관계인 쪽을 동그라미로 표시한다.

 

선택 관계

 

📢 관계 유형

 

🔸 식별 관계(밀접한 관계)

 

실선으로 표시하며, 한 엔터티가 다른 엔터티에 종속된다. 즉, 상대방 엔터티가 존재하지 않는다면 존재 의미가 없다. 특징으로 부모 엔터티의 기본 식별자가 자식 엔터티의 기본 식별자로 상속된다.

 

🔸 비식별 관계(느슨한 관계)

 

점선으로 표시하며, 두 엔터티가 서로 종속되지 않는다. 즉, 상대방 엔터티의 존재 여부에 상관 없이 존재할 수 있다. 특징으로 부모 엔터티의 기본 식별자가 자식 엔터티의 일반 속성으로 상속된다.

 

🔎 슈퍼타입과 서브타입

 

슈퍼타입은 서브타입을 추상화한 타입으로 개념적으로 서브타입보다 포괄적 의미를 가진다.

서브 타입은 배타적 또는 포괄적일 수 있다. 만일 포괄적이라면 슈퍼타입은 1개 또는 그 이상의 서브타입과 관련될 수 있다. 반면 배타적이라면 슈퍼타입은 서브타입과 1:1 관계를 가진다.

 

[그림 4-1-40] 에서 A는 B와 C 중 한 타입만 될 수 있다.

[그림 4-1-41] 에서 A는 B 또는 C 타입이 될 수 있다.

 

출처 : DATA ON-AIR (데이터 모델링 표기법 이해 편)

 

References:

https://dbguide.tistory.com/entry/%EB%AA%A8%EB%8D%B8%EB%A7%81-IE-%ED%91%9C%EA%B8%B0%EB%B2%95

 

모델링 IE 표기법

IE 노테이션에서 관계(Relationship) 표기법은 항상 헷갈리는 경우가 많다. ERWin에서 표준으로 사용하는 노테이션이 IE노테이션이고 이것을 잘 해석해야 설계를 잘 할 수 있고, 잘 이해할 수도 있기에

dbguide.tistory.com

https://dataonair.or.kr/db-tech-reference/d-guide/da-guide/?pageid=1&mod=document&keyword=%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8&uid=278 

 

데이터 모델링 표기법 이해

바커 표기법 (Baker Notation) 바커 표기법은 영국 컨설팅 회사 CACI에 의해 처음 개발되었고 리차드 바커(Richard Barker)에 의해 지속으로 업그레이드 되었다. 오라클에서 Case Method(Custom Development Method)로

dataonair.or.kr