관계 데이터 모델. ERD

Sejin·2025년 4월 6일
0

Data, DB공부

목록 보기
8/26

ERD 이해

개체-관계 모델(ERM, E-R Model, Entity-Relationship Model)

피터 첸(Peter Chen)이 제안한 개념적 데이터 모델.
개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현.

핵심 요소

  • Entity(개체)
    데이터 모델에서 대상이나 개념

  • Attribute(속성)
    개체의 특성이나 성질

  • Relationship(관계)
    개체 간의 연관성이나 상호작용

개체-관계 다이어그램(ERD, E-R Diagram, Entity-Relationship Diagram

개체-관계 모델을 시각적으로 표현
⇒ 관계자들이 쉽게 이해할 수 있도록 함

ERD 작성 순서

  • 엔터티 그리기 및 배치
    엔터티를 그린 후 적절하게 배치.
    가급적 선이 꼬이지 않게 배치.
    왼쪽 오른쪽, 위→ 아래 순으로 읽어
    나가기 편하도록 배치.

  • 엔터티 간 관계 설정
    엔터티 간의 관계를 설정함.
    식별자 관계를 우선 설정함.
    가급적 Cycle 관계도 발생하지 않아야 함.

  • 관계명 기술(양 방향)
    관계명을 양방향으로 기술함.
    현재형 사용, 지나치게 포괄적인 단어는 지양함.
    실제 프로젝트에서는 크게 고려하지 않음.

  • 관계차수와 선택성 표시

ERD 핵심요소

개체(Entity)

피터 첸(Peter Chen):
"관심 있는 객체나 개념"으로, 속성과 관계를 통해
설명된다.

엘마스리와 나바테(Elmasri and Navathe):
"독립적으로 존재하는 사물이나 개념"으로,
데이터베이스에서 정보를 저장하는 기본 단위이다.

크리스 데이트(C.J. Date):
"데이터베이스에서 표현되는 현실 세계의 객체"로,
각 엔터티는 특정 속성을 가진다.

현실 세계의 특정한 사물이나 개념을 나타내며 고유한 속성과 관계를 가짐.
예) 의사, 말, 사건, 과목, 학생 도서 등

개체 분류

유형 엔터티
물리적인 형태가 있으며 안정적이고 지속적으로
활용되는 개체.
예) 교수, 강의실, 학생 등

무형 엔터티

  • 개념 엔터티:
    물리적인 형태는 존재하지 않지만 관리해야 할
    개념적 정보.
    예) 수업, 보험상품 등
  • 사건(Event) 엔터티:
    업무 수행 과정에서 발생하며 비교적 발생량이
    많은 개체로, 각종 통계 자료에 이용됨
    예) 수강신청, 주문, 입금 등

개체 구성요소

개체 타입(Entity Type)

  • 정의
    같은 종류의 개체들이 공통적으로 가지는 속성을
    정의하는 것으로, 특정 개체의 유형을 나타냄
  • 예시
    학생 개체 타입은 학번, 이름, 학과 등의 공통 속성을 가짐
  • 관계
    데이터베이스의 파일 구조에서 레코드 타입 (Record Type)에 대응됨

인스턴스(Entity Instance)

  • 정의
    개체 타입을 구성하는 속성이 실제로 저장되어 있는
    데이터 값으로, 개체의 특정한 사례를 나타냄.
    ⇒ 개체 어커런스(Entity Occurrence)라고도 함
  • 관계
    데이터베이스의 파일 구조에서 레코드 인스턴스(Record Instance)에 대응됨

집합(Entity Set)

  • 정의
    특정 개체 타입에 대한 개체 인스턴스들을
    모아 놓은 것임
    ⇒ 동일한 유형의 개체들의 집합을 의미함

엔터티의 특징

  • 고유성
    각 엔터티는 고유의 속성을 가지고 있어야 하며,
    다른 엔터티와 구분할 수 있어야 함. 유일한 식별자에 의해 식별이 가능해야 함

  • 영속성
    영속적으로 존재하는 둘 이상의 인스턴스의 집합이어야 함

  • 업무 프로세스와의 연계
    엔터티는 업무 프로세스에 의해 이용되어야 함.
    업무 프로세스에 의해 CRUD(Create, Read, Update, Delete) 작업이 발생해야 함.
    CRUD가 발생하지 않는다면 이는 부적절한 엔터티 도출 또는 업무 누락을 의미함.

CRUD 매트릭스(CRUD Matrix)
엔터티와 관련된 CRUD 작업을 시각적으로 정리하여 각 엔터티의 활용도를 평가하는 도구

속성의 필수성
엔터티는 반드시 속성을 가져야 하며,
속성없이 엔터티의 이름만 존재할 수 없음

관계의 필요성
다른 엔터티와 최소 한 개 이상의 관계를 가져야 하며(연결티어 있어야 함

  • 고립 엔터티 (Isolated Entity)
    부적절한 엔터티 도출 또는 관계·누락을 의미함

(고립 엔터티를 인정하는 경우)

  • 통계성 엔터티
    총거래량

  • 코드성 엔터티
    에러코드

  • 시스템 처리용 내부 엔터티
    트랜잭션 로그 테이블 등

엔터티의 명명
엔터티는 생성 의미에 맞추어, 실제 업무에서 사용하는 용어를 사용해야 함.

약어를 사용하지 않으며, 단수 명사를 사용해야 함.

이름이 동일한 엔터티가 중복으로 존재할 수 없음.

속성(Attribute)

개체 또는 관계가 가지고 있는 고유한 특성.
의미 있는 데이터의 가장 작은 논리적 단위.
파일 구조의 필드와 대응됨.
ERD에서 타원으로 표현하며, 타원 안에 이름을 표기함.

속성의 명명

현업에서 사용하는 이름을 부여해야 함.
약어 사용은 가급적 금지함.
서술식 속성명은 피하고, 명사형 속성명을 사용해야 함.
수식어와 소유격을 피해야 함.
속성의 이름은 전체 모델에서 가급적 유일하게 정의해야 함.

속성의 분류

단일 값 속성(Single-valued Attribute)

  • 정의
    값을 하나만 가질 수 있는 속성

  • 예시
    고객 개체의 ID, NAME, PASSWORD

다중 값 속성(Multi-valued Attribute)

  • 정의
    • 값을 여러 개 가질 수 있는 속성
    • ERD에서 이중 타원으로 표현

  • 예시
    • 고객 개체의 PHONE 속성
    • 책 개체의 저자 속성

단순 속성(Simple Attribute)

  • 정의
    의미를 더 이상 분해할 수 없는 속성

  • 예시
    고객 개체의 PASSWORD 속성
    책 개체의 이름, ISBN, 가격 속성

복합 속성(Composite Attribute)

  • 정의
    의미를 분해할 수 있는 속성

  • 예시
    고객 개체의 Card 속성
    (카드번호, 만료일, 보안코드 등으로 세분화 가능)
    고객 개체의 생년월일 속성
    (연, 월, 일로 세분화 가능)

단순 속성과 복합 속성

유도 속성(Derived Attribute)

  • 정의
    기존의 다른 속성의 값에서 유도되어 결정되는 속성
    값이 별도로 저장되지 않음

  • 예시
    주문 총액(가격과 수량으로 계산됨)
    평균 구매금액(총 구매금액을 총 구매횟수로 나누어 계산됨)

  • 표현
    E-R 다이어그램에서 점선 타원으로 표현됨

널 속성(Null Attribute)

  • 정의
    널 값이 허용되는 속성

  • 널(null) 값
    아직 결정되지 않았거나 모르는 값 또는 존재하지
    않는 값. 공백이나 0과는 의미가 다름

  • 예시
    등급 속성이 널 값인 경우.
    등급이 아직 결정되지 않았음을 의미

키 속성(Key Attribute)

  • 정의
    각 개체 인스턴스를 식별하는 데 사용되는 속성.
    둘 이상의 속성들로 구성될 수 있음.

  • 예시
    고객 개체의 ID 속성

  • 표현
    E-R 다이어그램에서 밑줄로 표현됨

도메인
각 속성이 가질 수 있는 값의 범위

예) 평점 : 0.0~ 4.5 사이의 실수
예) 주소 : 길이가 20자리 이내인 문자열

속성에 대한 데이터 타입과 크기, 그리고 제약사항을 지정하는 개념

관계(Relationship)

  • 정의
    개체와 개체가 맺고 있는 의미 있는 연관성

  • 의미
    개체 집합들 사이의 대응 관계, 즉 매핑(Mapping)을 의미함

  • 예시
    고객 개체와 책 개체 간의 주문 관계-
    "고객은 책을 주문한다."

  • 표현
    E-R 다이어그램에서 마름모로 표현됨

관계의 표기법

관계명

명명 규칙

  • 매매한 동사를 피해야 함
    예)관계된다, 관련 있다 등

  • 현재형으로 표현해야 함
    예) 신청했다, 강의할 것이다 등은 피함

관계의 유형

관계에 참여하는 개체 타입 수 기준

  • 이항 관계
    Binary Relationship
    개체 타입2개가 맺는 관계

  • 삼항 관계
    Ternary Relationship
    개체 타입 3개가 맺는 관계

  • 순환 관계
    Recursive Relationship
    개체 타입 1개가 자기 자신과 맺는 관계

매핑 카디널리티 기준

  • 매핑 카디널리티(Mapping Cardinality)
    관계를 맺는 두 개체 집합에서 각 개체 인스턴스가
    연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수

  • 일대일(1:1) 관계

  • 일대일(1:N) 관계

  • 다대다(N:M) 관계

처리하는 업무 형태 기준

  • 종속 관계(Dependent Relationship)
    한 개체가 다른 개체에 의존하는 관계로, 주·종 관계를 표현. 식별 관계와 비식별 관계로 나눌 수 있음
    예) 진단과 처방
    (진단 결과에 따라 약의 처방이 이루어짐)
    원자재 공급과 생산
    (원자재가 공급된 후에 제품 생산이 이루어짐)

  • 중복 관계(Redundant Relationship)
    동일한 개체가 여러 번 연관되는 관계로, 두 개체 사이에 2번 이상의 종속 관계가 발생하는 것.
    예) 사원이 속한 부서와 부서에 속한 사원 간의 관계

  • 재귀 관계(Recursive Relationship)
    개체가 자기 자신과 연결되어 있는 경우.
    예) 직원은 한 명의 관리자가 있으며, 그 관리자도 직원으로 간주됨

  • 배타 관계(Exclusive Relationship)
    배타 AND 관계:
    개체가 하위 개체 중 하나 이상에
    속할 수 있는 관계
    예) 사용자가 여러 권한(관리자, 편집자 등)을 동시에 가질 수 있음
    배타 OR 관계:
    개체가 하위 개체 중 하나에만 속할 수 있는 관계
    예) 사원이 정규직, 계약직, 파트타임 중 하나의 고용형태만 가질 수 있음

관계의 참여 특성

필수적 참여(전체 참여, Mandatory Membership)

모든 개체 인스턴스가 관계에 반드시 (참여해야 되는 것을 의미
예) 모든 학생은 반드시 과목을 선택해야 한다.
모든 작가는 출판사를 소유해야 한다.
모든 환자는 의료보험을 가입해야 한다.

선택적 참여(부분 참여, Optional Membership)

개체 인스턴스 중 일부만 관계에 참여해도 되는 것을 의미 (선택적으로 참여)
예) 학생은 동아리에 속할 수 있다.
고객은 리뷰를 남길 수 있다.
사용자는 프로필 사진을 설정할 수 있다.

관계의 종속성

약한 개체(Weak Entity)

다른 개체의 존재 여부에 의존하는 개체.
강한 개체와의 관계에 필수적으로 참여하며,
강한 개체의 키를 포함하여 키를 구성함.

  • 표현
    E-R 다이어그램에서 이중 사각형으로 표현되며, 강한 개체와의 관계는 이중 마름모로 표현됨

강한 개체(Strong Entity)
다른 개체의 존재 여부를 결정하는 독립적인 개체.
독립적으로 존재할 수 있으며, 자체적인 키를 가짐

관계

  • 일대다 관계
    일반적으로 강한 개체와 약한 개체는 일대다의
    관계에 있음

  • 예시
    도서관 책 개체와 대출 기록 개체

    • 강한 개체
      도서관 책 개체
      (독립적으로 존재 가능)
      약한 개체
      대출 기록 개체
      (도서관 책 개체에 의존)

식별 관계와 비식별 관계

식별 관계(Identifying Relationship)
외래키가 기본키에 포함된 경우.
ERD에서 실선으로 표시됨.

비식별 관계(Non-ldentifying Relationship)
외래키와 기본키가 별개임.
ERD에서 점선으로 표시됨.

식별자(Identifier)

하나의 개체 내에서 각 인스턴스를 유일하게 구분할 수 있는 구분자

주 식별자 특징

  • 유일성(Uniqueness)
    주 식별자는 엔터티 내의 각 인스턴스를 유일하게 구분해야 함
    예) ID

  • 최소성(Minimality)
    주 식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수여야 함
    예) ID는 유일성을 만족하지만, (ID, 이름)은 불필요하게 많은 속성

  • 불변성(Immutability)
    주 식별자가 지정되면, 그 식별자의 값은 변하지 않아야 함
    예) 탈퇴하기 전까지 ID는 불변

  • 존재성(Existence)
    주 식별자의 값은 Null이 될 수 없음
    예) ID 없는 회원은 존재할 수 없음

식별자 분류

대표성 여부

  • 주 식별자(Primary Identifier)
    개체를 대표하는
    유일한 식별자

  • 보조 식별자(Alternate Identifier)
    주 식별자를 대신하여 개체를
    식별할 수 있는 속성

스스로 생성 여부

  • 내부 식별자(Internal Identifier)
    개체 내에서 스스로 만들어지는 식별자

  • 외부 식별자(Foreign Identifier)
    다른 개체와의 관계에 의해 외부 개체의 식별자를 가져와 사용하는 식별자

단일 속성 여부

  • 단일 식별자(Single Identifier)
    주 식별자가 한 가지 속성으로만 구성된 식별자

  • 복합 식별자(Composite Identifier)
    주 식별자가 두 개 이상의 속성으로 구성된 식별자

대체 여부

  • 원조 식별자(Original Identifier)
    업무에 의해 만들어지는 가공되지 않은 원래의 식별자

  • 대리 식별자(Surrogate Identifier)
    속성들을 하나의 속성으로 묶어 사용한 인조 식별자

주 식별자와 보조 식별자

  • 주 식별자(Primary Identifier)
    개체를 대표하는 유일한 식별자.
    각 인스턴스를 유일하게 구분하며, 하나의 개체에 주 식별자는 한 개만 존재함
    예시) 사원 ID, 주민등록번호

  • 보조 식별자(Alternate Identifier)
    주 식별자를 대신하여 개체를 식별할 수 있는 속성.
    주 식별자가 아닌 다른 속성으로도 개체를 유일하게 식별할 수 있음.
    예시)이메일 주소, 전화번호(사원이 주 식별자로 ID를 사용할 때)

내부 식별자와 외부 식별자

  • 내부 식별자(Internal ldentifier)
    개체 내에서 스스로 만들어지는 식별자.
    해당 개체의 속성으로부터 유일하게 생성되며, 개체 내부에서만 사용됨
    예시) 데이터베이스의 기본키, 자동 생성된 ID

  • 외부 식별자(Foreign Identifier)
    다른 개체와의 관계에 의해 외부 개체의 식별자를 가져와 사용하는 식별자.
    자신의 개체에서 다른 개체를 찾아가는 연결자 역할을 함.
    예시) 주문 개체에서 고객 개체의 ID를 외래키로 사용하는 경우

단일 식별자와 복합 식별자

  • 단일 식별자(Single Identifier)
    주 식별자가(한 가지 속성으로만 구성된 식별자.
    유일성을 확보하기 위해 단일 속성만 사용됨.
    예시) 사원 ID, 주민등록번호 등

  • 복합 식별자(Composite Identifier)
    주 식별자가 두 개 이상의 속성으로 구성된 식별자.
    여러 속성을 조합하여 유일성을 확보함.
    예시) 학생 ID, 과목 코드 조합으로 구성된 성적 기록

원조 식별자와 대리 식별자

  • 원조 식별자(Original Identifier)
    업무에 의해 만들어지는 가공되지 않은 원래의 식별자로, 본질적인 식별자.
    개체의 본래 속성으로, 각 인스턴스를 유일하게 구분하는 데 사용됨.
    예시) 주민등록번호, 사원 ID 등

  • 대리 식별자(Surrogate Identifier)
    주 식별자 속성이 두 개 이상인 경우, 그 속성들을 하나의 속성으로 묶어 사용한 인조 식별자

profile
Sejin's Journey for Developers

0개의 댓글