랑아
article thumbnail

03. E-R 다이어그램(ERD) 작성

01. E-R 다이어그램(ERD : Entity Relationship Diagram)

1) E-R 다이어그램의 등장 배경

  • 1976년 피터 첸(Peter Chen)에 의해서 최초로 제안되었으며 그의 논문을 통해 이 모델의 기본적인 구성 요소가 정립
  • 여러 데이터 모델 기법 가운데에서 E-R 다이어그램은 표준적인 데이터 모델 기법으로 부상했는데 이 모델이 지니고 있는 단순성 때문에 현재 개념 데이터 모델링이나 논리 데이터 모델링에서 가장 일반적으로 사용되고 있음
  • E-R 다이어그램은 개체와 관계로 현실 세계를 표현한 모델

2) E-R 다이어그램의 개념

  • 업무 분석 결과로 도출된 개체와 실체 간의 관계를 도식화한 것
  • ERD로 요소들 간 연관성을 도식화하여 데이터베이스 관리자, 개발자, 사용자 모두 데이터의 흐름과 연관성을 공통적으로 쉽게 확인할 수 있음
  • 데이터에 대한 관리자, 사용자, 개발자들이 서로 다르게 인식하고 있는 View들을 하나로 통합할 수 있는 단일화된 설계안을 만들 수 있음
  • ERD는 최종 사용자의 관점에서 데이터 구조를 그림 형태로 묘사하기 위해 개체, 관계, 속성이라는 세 개의 기본 요소를 사용

3) E-R 다이어그램의 특징

  • 각 기업에서 업무를 수행하기 위해 필요한 개체가 무엇이고, 개체의 유일성을 보장해 주는 식별자가 무엇이며, 각 개체 간에는 어떤 상관관계가 있고 필요한 속성이 무엇인지를 설명해주는 그림
  • E-R 다이어그램은 데이터베이스나 하드웨어 등과 같은 시스템과 아무런 상관없이 업무에서 필요한 데이터를 그림으로 그려 놓고 이를 검증하는 방법으로 사용
  • E-R 다이어그램은 논리적인 그림이기 때문에 외래키, 기본키, 액세스 성능, 분산 시스템 등의 물리적 시스템 환경은 고려하지 않음
  • 요소들 간 연관성을 그림으로 도식화하여 데이터베이스 관리자(DBA), 개발자, 사용자 모두 데이터의 흐름과 관계를 공통적으로 쉽게 활인할 수 있음
  • 잘 설계된 E-R 다이어그램은 비록 업무수행 방식이 바뀌어도 업무 영역이 바뀌지 않는 한 설계 변경이 거의 발생하지 않음
  • 논리 데이터 모델에서 하나의 개체는 반드시 물리적으로 하나의 테이블이나 세그먼트가 되지는 않으며, 하나 이상 또는 테이블 한 개의 일부가 될 수도 있음
  • 물리 데이터 모델링은 논리 데이터 모델링 도구인 E-R 다이어그램을 기초로 현재의 시스템 환경을 고려하여 최고의 성능 향상을 목적으로 함



02. E-R 다이어그램 표기법

1) 개체(Entity) - 사각형

  • 사물 또는 사건으로 정의
  • E-R 모델에서 개체는 사각형으로 표기
  • 사각형 안에는 개체명을 기입하며, 단수형으로 명명함
  • 가능한 대문자로 개체명을 사용
  • 유일한 단어로 사용

2) 속성(Attribute) - 동그라미

  • 개체가 가지고 있는 요소 또는 성질
  • 속성은 선으로 연결된 동그라미로 표시
  • 속성을 Peter Chen Model로 표시하기도 하지만 Crow's Foot Model로 표기하기도 함
  • 관계형 데이터베이스에 적용할 떄는 Crow's Foot Model이 편리함
  • 속성명은 단수형으로 명명함
  • 속성명은 개체명과 동일한 명칭으로 사용하지 않음
  • 속성 값이 NOT NULL인지 NULL인지 고려함

3) 관계(Relationship) - 마름모

1. 관계 표시 방법

2. 관계 표기법의 종류


4) E-R 모델 작성 기법

  • 개체들은 정렬하여 배열함
  • 업무 흐름의 진행 순서와 관련된 개체는 진행 순서를 고려하여 좌에서 우, 상에서 하로 중심부에 배열함
  • 중심에 배열된 개체와 관계를 가진 개체를 가까이 배열함
  • 관계는 사선이 아닌 수직, 수평선을 사용함
  • 공간을 활용하여 복잡해 보이지 않도록 배열함
  • 교차선이 생기거나 관계선이 너무 길지 않도록 배열함
  • 관계있는 개체끼리 그룹핑함



03. 확장 E-R 다이어그램

1) 슈퍼 타입(Super-type)과 서브 타입(Sub-type)

  • 슈퍼 타입은 여러 개의 서브 타입을 나누어 표현할 수 있음
  • 슈퍼 타이봐 서브 타입은 "is-a"의 관계를 가짐
  • 서브 타입은 슈퍼 타입이 되어 여러 개의 서브 타입을 가질 수 있음

2) 특수화(Specialization)

  • 하나의 개체 타입(클래스)을 여러 개의 하위 레벨 개체 타입으로 분리하여 표현하는 것
  • 상위 레벨의 개체 타입과 하위 레벨의 개체 타입은 "is-a"의 관계를 기본으로 함
  • 자식 클래스 "Tiger"는 부모 클래스 "Animal"의 일종
  • 상위 클래스에서 하위 클래스를 보는 관점으로, 하위 클래스로 내려갈수록 인스턴스는 특수화됨
  • 하향식(Top-down) 설계 방식
  • 상위 클래스와 겹치지 않게 서브 클래스를 분리하거나 서로 다른 현실 세계 상황으로 분리하기 위해 사용

3) 일반화(Generalization)

  • 여러 개체 타입의 공통적인 특성을 가진 상위 객체 타입으로 표현하는 것
  • 상위 클래스는 하위 클래스의 공통적인 특징을 가지며 하위 클래스는 상위 클래스의 속성과 메소드를 상속받을 수 있음
  • 클래스들 간의 개념적인 포함 관계
  • 일반화는 클래스를 하위 클래스에서 상위 클래스를 보는 관점으로 상위 클래스로 올라갈수록 일반화됨
  • 상향식(Bottom-up) 설계 방식

4) 상속(Inheritance)

  • 새로운 개체 타입을 설계할 때 기존의 개체 타입을 그대로 사용하는 것
  • 하위 클래스는 상위 클래스의 모든 것을 상속받을 수 있음
  • 하나의 하위 클래스는 여러 개의 상위 클래스로부터 다중으로 상속받을 수 있음
  • 맨 위에 있는 상위 클래스가 가장 많이 상속을 시킴
  • "is-a" 관계를 통해서 계속적으로 상속시킬 수 있음

5) 집단화(Aggregation)

  • 각각의 개체 타입으로 새로운 개체 타입을 만들 수 있음
  • 서로 관련이 있는 여러 개체 타입을 묶어 하나의 상위 개체 타입으로 만들 수 있음
  • 중복될 수 있는 개체 타입들을 단순하게 표현할 수 있음
  • 클래스 사이의 "부분-전체(part-whole)" 관계 또는 "부분(is-a-part-of)" 관계를 표현할 수 있음
  • 클래스들 간의 구조적인 집약 관계
  • "학교" 클래스는 "학생", "교수", "교직원" 클래스로 구성할 수 있음
  • 공학적인 데이터베이스 설계에 주로 사용하는 관계이며 CAD를 이용한 설계에 유용함
  • 특수화와 일반화는 상속 관계를 가질 수 있지만 집단화 상속 관계를 가질 수 없음

6) 분류화(Classification)

  • 현실 세계에 존재하는 공통적인 성질을 갖는 멤버들의 개체 타입을 표현하는 것
  • 개체 타입과 개체 타입의 개체 어커런스들 간의 관계를 표현할 수 있음
  • "is-member-of" 관계를 표현하며 상속 관계를 가질 수 있음
  • 트리 구조의 루트 노드를 유형으로 단 노드들을 유형의 멤버로 표현할 수 있음
  • 어느 회사의 "부서"에 "인사부", "영업부", "생산부"와 같은 부서가 있다면, 이때 부서들을 멤버로 갖는 유형으로 표현함
profile

랑아

@RangA

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!