데이터 모델링 개념 및 ERD 다이어그램 스터디

오정배·2023년 10월 26일
0
post-thumbnail

출처: https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8%EB%A7%81-1N-%EA%B4%80%EA%B3%84-%F0%9F%93%88-ERD-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8

  • ERD 관련해서 잘 이해가 안되서 참고할 만한 자료 찾다가 해당 출처의 블로그에 정리가 잘 되어 있길래 이것으로 공부해 보았습니다.

데이터 모델링

  • 정보 시스템 구축의 대상이 되는 업무 내용 분석 및 이해 + 약속된 표기법에 의해 표현하는 것
  • 데이터 모델링은 데이터 베이스 설계의 핵심 과정
  • 데이터를 추상화한 데이터 모델은 데이터 베이스의 골격을 이해하고 그 이해를 바탕으로 SQL 문장을 기능과 성능적인 측면에서 효율적으로 작성할 수 있기 때문이다.

데이터 모델링 순서

1. 업무파악 (요구사항 수집 및 분석)

  • 어떠한 업무를 데이터화하여 모델링 할 것인지 요구사항 수집
  • UI를 의뢰인과 함께 확인해 나아가는 것.

    게시판을 예로 들면 회원정보, 로그인 정보, 게시판의 게시글, 댓글 등...

2. 개념적 데이터 모델링

  • 파악한 업무와 데이터간의 관계를 구상하는 단계
  • 피터 첸 표기법(Peter Chen Notation) - ERD 다이어그램을 구성한 그림

3. 논리적 데이터 모델링

  • 완성된 개념적 데이터 모델을 바탕으로 구체화된 업무 중심의 데이터 모델을 작성
  • Key, 속성, 관계 등을 표시, 정규화 활동을 수행
    ※ 정규화: 데이터 모델의 일관성 확보, 중복 제거. 신뢰성 있는 데이터 구조를 얻는 것이 목적
  • 데이터 타입, 데이터 간의 관계(1:1, 1:N, N:M), 테이브의 Key 지정

4. 물리적 데이터 모델링

  • 최종적으로 데이터를 관리할 데이터 베이스를 선택
  • 선택한 데이터 베이스에 테이블을 만드는 작업
  • 실제로 SQL 코딩을 통해 완성하는 단계

ERD (Entity Relationship Diagram) 그리기

  • Entity 개체와 Relationship 관계를 중점적으로 표시하는 데이터 베이스 구조를 쉽게 보기 위한 다이어 그램.
  • 개체 관계도
  • 요구 분석에서 얻은 엔티티와 속성들의 관계를 그림으로 표현한 것.

엔티티(Entity)

  • 정의 가능한 사물 또는 개념(사람, 프로필 도서정보 등 유형, 무형의 정보 모두 데이터화 가능)
  • 데이터 베이스의 테이블

엔티티 속성(Attribute)

  • 개체가 갖고 있는 속성
  • 데이터 베이스의 테이블의 각 컬럼

엔티티 도메인(Domain)

  • 속성의 값, 타입, 제약사항 등 값의 범위
  • 속성만 작성 할 수도 있고, 가독성을 위해 생략도 가능

엔티티 분류

  • 유형 엔티티
    : 물리적인 형태
  • 무형 엔티티
    : 개념적으로만 존재하는 것
  • 문서 엔티티
    : 문서, 장부, 전표 등(거래명세서, 주문서...)
  • 이력 엔티티
    : 업무상 반복적으로 이루어지는 행위, 사건의 내용을 일자별, 시간별로 저장하기 위한 것(입고 이력, 출고 이력, 구매 이력....)
  • 코드 엔티티
    : 무형 엔티티의 일종으로 각종 코드를 관리하기 위한 것

ERD 키와 제약 조건 표기법

주 식별자 (PK: Primary Key)

  • 데이터베이스 테이블의 Primary Key를 표현
  • 중복이 없고, NULL값이 없는 유일한 값에 지정하는 식별자
  • 주로 열쇠로 표현, 구분하기 위해 구분선을 긋기도 한다.

NOT NULL

  • 해당 속성에 들어갈 값에 Null을 허용하지 않는다면, N 또는 NN을 적는다.
  • Null 허용 시 N을 적지 않는다.

외래 식별자(FK:Foreign Key)

  • 데이터베이스 테이블의 Foreign Key를 표현
  • 외래 식별자 표시 시 선을 이어주는데 이때 개체와 관계를 따져 표시한다.

ERD 엔티티 관계 표기법

항목식별자 관계비식별자 관계
목적강한 연결관계약한 연결관계
표기법실선 표현점선 표현
자식 주 식별자 영향자식 주 식별자의 구성에 포함됨자식 일반 속성에 포함됨
고려사항부모 엔티티 종속약한 종속관계
자식 주 식별자 구성에 부모 주 식별자 포함 필요독립적으로 구성
상속받는 주 식별자 속성을 타 엔티티에 이전 필요싱속받은 주 식별자 속성을 타 엔티티에 차단 필요

식별자 관계

  • 실선으로 표현
  • 부모 자식 관계에서 자식이 부모의 주 식별자를 외래 식별자로 참조하여 자신의 주 식별자로 설정

비식별자 관계

  • 점선으로 표현
  • 부모 자식 관계에서 자식이 부모의 주 식별자를 외래 식별자로 참조하여 일반 속성으로 사용.

ERD 관계 카디널리티

One-to-One Cardinality(1:1 관계)

  • 1:1로 매칭되는 관계
  • 예를 들어 학생과 그 학생의 신체 정보가 있다고 한다면 이는 1:1로 매칭된다.
    한 학생은 하나의 신체 정보만 갖기 때문이다.

## One-to-Many Cardinality(1:N 관계)

  • 1:N으로 매칭되는 관계
  • 예를 들어 학생은 여러 개의 취미를 가질 수도 있기 때문에 1:N으로 매칭된다.

## Many-to-Many Cardinality(M:N 관계)

  • M:N 즉, 다 대 다 관계
  • 예를 들어 제품 엔티티 입장에서, TV 제품은 대우, 삼성, 애플 등 제조업체가 여러 개가 있다.
  • 제조업체 엔티티 입장에서, 삼성은 세탁기 뿐만 아니라 MP3 같은 여러 종류의 제품을 생산한다.

  • 하지만 두 엔티티가 다 대 다 관계의 있는 경우, 두개의 엔티티 만으로는 서로를 표현하는데 부족하다.
  • 데이터 모델링 에서는 M:N 관계를 각각 1:N, M:1 로 조정하는 작업이 필요하다.
  • 두 엔티티의 관련성을 표현하기 위해 중간에 또 다른 엔티티를 필요로 하며 이 엔티티가 공유 속성 역할을 하게 된다.

ERD 관계 참여도

  • '|' 표시가 있는 곳은 반드시 있어야 하는 개체. (필수)
  • 'O' 표시가 있다면 없어도 되는 개체. (선택)

  • 학생의 학번은 필수로 있어야 하지만 이 학생이 취미가 없을 수도 있고 여러 개 일 수도 있다.
profile
개발 관련 블로그 입문

0개의 댓글

관련 채용 정보