SQL

SQL - 데이터모델링의 이해 (엔터티)

북국버들 2023. 3. 2. 08:38

공부 정리용!

 

자료는 한국데이터산업진흥원 참고 사용   

https://dataonair.or.kr/db-tech-reference/d-guide/sql

 

SQL – DATA ON-AIR

 

dataonair.or.kr

1. 엔터티(Entity)의 개념 

- 엔터티는 사람, 장소, 물건, 사건, 개념등의 명사 

- 업무상 관리가 필요한 관심사 

- 저장이 되기 위한 어떤 것(Things)

- 집합에 속하는 개체들의 특성을 설명할 수 있는 속성(Attribute)를 갖음 

   Ex. '학생' 엔터티는 학번, 이름, 이수학점, 등록일자, 생일, 주소, 전공 등 속성으로 특징 지을 수 있음 

- 엔터티는 인스턴스의 집합이라 할 수 있고 인스턴스는 엔터티의 하나의 값으로 정의 가능 

   Ex. '과목' 엔터티에  수학, 영어, 국어 라는 인스턴스가 존재 

2. 엔터티와 인스턴스에 대한 내용과 표기법 

Tip. 오브젝트 모델링에는 Class와 Object라는 개념이 존재 

Class : 여러개의 Object를 포함하는 Object 깡통 

3. 엔터티의 특징 

아래 성질을 만족하지 못할 경우 적절하지 않은 엔터티일 확률이 높다 

- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 함 (환자, 토익의 응시횟수...)

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

- 영속적으로 존재하는 인스턴스의 집합이어야 함 (한 개가 아니라 '두 개 이상')

- 업무 프로세스에 의해 이용되어야 함 

- 반드시 속성이 있어야 함 

- 다른 엔터티와 최소 한 개 이상의 관계가 있어야 함  

 

가. 업무에서 필요로 하는 정보 

업무영역에서 관리할 필요가 있는지 판단이 중요 

  Ex. 환자(엔터티) = 병원에서는 필요한 엔터티, 일반회사에서는 필요 없음 

나. 식별이 가능해야 함 

- 식별자(Unique Identifier)에 의해 식별이 가능해야 함 

- 각 업무적으로 의미를 가지는 인스턴스가 식별자에 의해 한개씩만 존재하는지 검증 필요 

Ex. 이름 - 동명이인이 가능하므로 유일하게 식별 불가, 

사원번호 - 회사에 입사한 사람에게 고유하게 부여된 번호이므로 식별자 가능 

 

다. 인스턴스의 집합 

- 영속적으로 존재하는 인스턴스의 집합이 되어야 함 

Ex. 회사(엔터티) > 인스턴스 (LG CNS)  = 인스턴스가 하나 밖에 없을 경우 집합이 아니라 엔터티 성립 불가 

      회사(엔터티) > 인스턴스 (LG CNS, 삼성의료원, 새회사 등 ) =  엔터티 성립 가능 

 

라. 업무프로세스에 의해 이용

- 업무프로세스가 반드시 그 엔터티를 이용해야 함 

- 업무 프로세스에 의해 CREATE, READ, UPDATE, DELETE 등이 발생하지 않는 고립된 엔터티의 경우 엔터티의제거 OR 누락 프로세스를 살펴보고 추가 필요 

 

마. 속성을 포함 

- 반드시 속성을 포함해야 함 

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

- 단, 관계엔터티(Associative Entity)의 경우 주식별자 속성만 있어도 엔터티로 인정 

 

바. 관계의 존재 

- 다른 엔터티와 최소 한 개 이상의 관계가 존재해야 함 

Tip. 데이터 모델링에서 관계를 생략하여 표현하는 경우: 

 1) 통계성 엔터티 도출 : 업무진행 엔터티로부터 통계업무(Read Only)을 위해 별도로 엔터티 정의> 관계의 생략에 해당 

 2) 코드성 엔터티 도출 :

     2-1) 너무 많은 엔터티와 엔터티간의 관계설정으로 데이터 모델의 읽기효율성(Readability)이 저하되어 모델링 작업을

            진행 할 수 없음

     2-2) 물리적으로 테이블과 프로그램 구현이후에도 외부키에 의한 참조 무결성을 체크하기 위한 규칙을 DB 기능에

             맡기지 않음 > 논리적, 물리적 관계설정 할 필요 없음  

  3) 시스템 처리시 내부 필요에 의한 엔터티 도출(트랜잭션 로그 테이블 등) : 트랜잭션이 업무적으로 연관된 테이블과

            관계설정이 필요 하나 업무적 필요가 아닌, 시스템 내부 필요에 의해 생성된 엔터티라 관계 생략 가능

 

4. 엔터티의 분류 

가. 유무형에 따른 분류 

- 유형엔터티(Tangible Entity) : 물리적 형태 O, 안정적이며 지속적으로 활용되는 엔터티. 업무로 부터 구분 용이

                                                 Ex) 사원, 물품, 강사 

- 개념엔터티(Conceptual Entity) : 물리적 형태 X, 관리해야 할 개념적 정보로 구분이 되는 엔터티 

                                                 Ex) 조직, 보험 상품 

- 사건엔터티(Event Entity) : 업무를 수행함에 따라 발생되는 엔터티, 발생량이 많음 , 각종 통계자료에 이용 

                                                Ex) 주문, 청구, 미납 

 

나. 발생시점에 따른 분류 

1) 기본 엔터티(Fundamental Entity, Key Entity) :

  - 업무에 원래 존재하는 정보.

  - 다른 엔터티와 관계에 의해 생성되지 않고 독립적 생성이 가능

  - 자식은 타 엔터티의 부모역할 수행

  - 다른 엔터티로 부터 주 식별자를 상속받지 않고 고유한 식별자 가짐 

     Ex) 사원, 부서, 고객, 상품, 자재 

 

2. 중심 엔터티(Main Entity) :

  - 기본엔터티로부터 발생되고 업무에 있어 중심역할 수행 

  - 데이터의 양이 많이 발생되고 다른 엔터티와의 관계에서 많은 행위 엔터티(Active Entity) 생성 

    Ex)  계약, 사고, 예금원장, 청구, 주문, 매출 

 

3. 행위 엔터티(Active Entity) :

  - 두 개 이상의 부모 엔터티로부터 발생되고 자주 내용이 바뀌거나 데이터량이 증가

  - 분석초기보다 상세 설계단계나 프로세스와 상관 모델링을 진행하며 도출 됨

    Ex) 주문목록, 사원변경 이력 

 

다. 엔터티 분류 방법의 예 

그외에 독립엔터티 vs 의존 엔터티 ( 엔터티가 스스로 생성되는지 여부에 따라)가 존재

5. 엔터티의 명명 

1) 현업업무에서 사용하는 용어 사용

2) 약어를 사용하지 않음 

3) 단수 명사 사용 

4)모든 엔터티에서 유일하게 이름 부여되어야 함 

5) 엔터티 생성 의미대로 이름을 부여

   Ex) 고객이 어떤 제품을 주문시 '주문목록' 이라고 할 수 있고 '고객제품' 이라 할 수 있다. 

          '고객제품' 의 경우 고객이 주문한 제품인지, 고객의 제품인지 의미가 애매모호해질 수 있다.

 

 

 

참고사이트 : 

https://dataonair.or.kr/db-tech-reference/d-guide/sql/?pageid=5&mod=document&uid=326 

 

엔터티

1. 엔터티의 개념 데이터 모델을 이해할 때 가장 명확하게 이해해야 하는 개념 중에 하나가 바로 엔터티(Entity)이다. 이것은 우리말로 실체, 객체라고 번역하기도 하는데 실무적으로 엔터티라는

dataonair.or.kr