brunch

You can make anything
by writing

C.S.Lewis

by imRachel Mar 01. 2023

[SQLD1] 1.3 엔티티의 특징

기획자의 데이터 공부 - 데이터 모델링의 이해

* 엔티티의 특징 (만족하지 못하면 부적절한 엔티티일 확률이 높음)

- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보

- 유일한 식별자에 의해 식별 가능

- 영속적으로 존재하는 인스턴스의 집합

- 엔티티는 업무 프로세스에 의해 이용

- 엔티티는 반드시 속성이 있어야함

- 엔티티는 다른 엔티티와 최소 한 개 이상의 관계가 있음


* 반드시 해당 업무에 필요하고 관리하고자 하는 정보

- 시스템을 구축하고자 하는 업무에서 필요로하고 관리하고자 하는 정보

e.g. 의료시스템에서 환자 엔티티는 반드시 필요, 일반 회사 시스템에서는 환자 엔티티는 필요하지 않음

- 시스템 구축 대상인 해당 업무에서 그 엔티티를 필요하는 가를 판단하는 것이 중요

- 엔티티 도출 시 업무 영역 내에서 관리할 필요가 있는지를 먼저 판단하는 것이 중요


* 유일한 식별자에 의해 식별 가능

- 임의의 식별자를 부여하여 유일하게 만들 수 있음

- 엔티티 도출 시 각 업무적으로 의미를 가지는 인스턴스가 식별자에 의해 한 개씩만 존재하는 지 검증해야 함

- 유일한 식별자는 그 엔티티의 인스턴스만의 고유한 이름

- 두 개 이상의 엔티티를 대변하면 그 식별자는 잘못 설계된 것

e.g. 직원을 구분할 수 있는 방법 : 사원번호 (이름은 동명이인으로 유일한 식별자가 안됨)


* 영속적으로 존재하는 인스턴스의 집합

- 한 개가 아니라 두 개 이상의 집합

- 두 개 이상 : 엔티티뿐만 아니라 엔티티 간의 관계, 프로세스와의 관계 등 여러 개의 인스턴스를 포함


* 엔티티는 업무 프로세스에 의해 이용

- 업무에 반드시 필요하다고 생각하여 선정했지만 전혀 이용되지 않으면 잘못 선정된 것

- 데이터 모델링 시 발견 못하여 데이터 모델 검증이나 상관 모델링을 할 때 단위 프로세스 교차 점검으로 문제 도출

- 업무 프로세스에 의해 CREATE, READ, UPDATE, DELETE 등이 발생하지 않는 고립된 엔티티는 제거

- 누락된 프로세스가 존재하는지 살펴보고 해당 프로세스 추가


* 엔티티는 반드시 속성이 있어야 함

- 속성을 포함하지 않고 엔티티 이름만 가지만 관계가 생략되거나 업무 분석이 미진하여 속성 정보가 누락될 수 있음

- 주식별자만 존재하고 일반속성이 없는 경우도 부적절한 엔티티

- 예외적으로 관계엔티티 associative entity는 주식별자 속성만 가져도 엔티티로 인정


* 엔티티는 다른 엔티티와 최소 한 개 이상 관계가 있음

- 최소 한 개 이상의 관계가 존재

- 엔티티는 업무적인 연관성(존재적 연관성, 행위적 연관성)을 갖고 다른 엔티티와 연관의 의미를 갖고 있음

- 관계가 설정되지 않은 엔티티의 도출은 부적절한 엔티티이거나 다른 엔티티와 적절한 관계를 찾지 못한 것


- 관계 생략 : 통계성 엔티티 도출, 코드성 엔티티 도출, 시스템 처리시 내부에 필요에 의한 엔티티 도출과 같은 경우

    1) 통계를 위한 엔티티 : 업무 진행 엔티티로 통계 업무만을 위해 별도로 다시 정의해서 관계 생략 (read only)

    2) 코드를 위한 엔티티 : 너무 많은 엔티티와 관계 설정은 데이터 모델 읽기 효율성 저하,

        테이블과 프로그램 구현 후 외부 키에 의해 참조무결성 체크를 위한 규칙을 DB 기능에 맡기지 않는 경우

    3) 시스템 처리 내부 필요에 의한 엔티티 (트랜잭션, 로그 테이블 등)




[본 글은 SQLD 자격증 공부를 위해 아카이빙한 글입니다.

출처 - https://snnchallenge.tistory.com/180]

작가의 이전글 [SQLD1] 1.2 엔티티와 인스턴스, 표기법
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari