본문 바로가기

SQLD

[SQLD : Ⅰ. 데이터 모델링의 이해] 1-3. 엔티티의 특징

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

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

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

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

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

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

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

 

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

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

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

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

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

 

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

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

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

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

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

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

 

 

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

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

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

 

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

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

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

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

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

 

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

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

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

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

 

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

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

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

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

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

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

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

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

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