엔티티 이야기

장우솔·2024년 6월 12일
0

데이터베이스

목록 보기
1/7

엔터티 정의

엔터티란?

업무를 수행하는 데 필요한 데이터를 특성이 유사한 것끼리 모아놓은 집합

판단기준
: 관리하고자 하는 데이터인가?

설계 목적
: 업무에 필요한 데이터를 효율적으로 저장하고 관리하기 위해
구성요소 : 인스턴스, 속성, 식별자

기본 개념

  • 인스턴스(집합의 원소) : 실제 쌓이는 데이터 값, 개별 행
    서로 명확히 구별돼야 그 모임의 집합이 된다.

  • 속성 : 더 이상 분리되지 않는 최소의 데이터 단위 *엔터티가 저장하는 정보의 종류

  • 식별자 : 엔터티에서 데이터의 유일성을 보장해주는 결정자 역할을 하는 속성 or 속성 집합

엔터티를 정의한다는 것은?
엔터티가 본질적으로 어떤 집합으로 이루어져 있는지 명백하게 하는 것
엔터티의 설명을 적는 것

엔터티 정의가 잘못됐다는 것은?
집합 자체를 잘못 정의 -> ‘거래처’ 엔터티를 ‘상품’으로 정의했을 경우
여러 집합이 혼재하도록 -> 한 엔터티에 ‘거래처‘, ’상품’ 등 여러 집합이 존재하는 경우

-> 엔터티를 명확하게 이해하기 위해 엔터티를 분류해보자!

  • 만질 수 있는 것과 없는 것
  • 자립과 종속 엔터티
  • 원천과 가공 데이터
  • 실체, 행위, 가공, 기준 엔터티
  • 내부 생성, 외부 생성 데이터 등 ,,

엔터티 정의 방법

<기준>
엔터티에서 관리하는 데이터가 무엇인가

1. 원천 데이터인가?

  • 원천 데이터 : 스스로 존재하는 최초의 데이터, 고객이나 사용자가 직접 입력
  • 가공 데이터 : 원천 데이터를 사용해서 만들어낸 데이터
    • 원천 데이터를 추출, 집계한 데이터
    • 원천 엔터티 값 바뀌면 수정 -> 어떻게 맞출까? -> 실시간 수정 or 특정 시간 배치

Q. 기존 데이터를 두고 백업한다면? 기존 데이터 삭제하고 백업한다면?

A. 기존 데이터가 존재하는 백업 데이터는 원본 데이터가 있으니 "가공 데이터"라고 할 수 있다.
삭제 후 백업은 원본 데이터가 즉, 백업 데이터가 됐으니 "원천 데이터"라고 할 수 있다.

Q. 가공 데이터를 획득해 화면에서 직접 입력하여 데이터를 만들었다면?

A. 가공데이터일지라도 직접 작성하여 새로운 데이터를 얻었다면 "원천 데이터"라 할 수 있다.

2. 본질에 따라

엔터티 정의 순서 : 존재 파악 -> 그 존재의 행위 파악 -> 존재나 행위를 명확하게 이해하기 위한 가공 데이터 생성

  • 이해하기 쉬운 순서! 필수는 아님







엔터티 설계 원칙

<성격, 본질, 주제에 따른 정체성이 분명한 엔터티로 설계해야 한다>

  1. 데이터 정체성 : 엔터티를 명확하게 정의해야 한다.

  2. 엔터티 무결성 : 한 엔터티는 동일한 주 식별자 값이 존재할 수 없으며 NULL값을 허용할 수 없다.

  3. 엔터티 유일성 : 하나의 주제는 하나의 엔터티에서만

  4. 데이터 혼용 배제 : 여러 종류의 데이터를 혼용x

  5. 타 엔터티와 관계 존재 : 엔터티는 보통 다른 엔터티와 관계가 존재하는 것이 일반적이다. / 가공, 기준 엔터티 등은 관계가 존재하지 않을 수 있다.

  6. 프로세스 도출 지양 : ‘데이터 성격’을 기준으로 엔터티 생성한다.

  7. 화면 도출 지양 : 프로세스와 마찬가지로 ‘데이터 성격’을 기준으로 엔터티 생성한다.

  8. 데이터 관리 요건 : 데이터베이스에서 관리하려는 데이터를 엔터티로 설계해야 한다.

엔터티명 원칙

  • 엔터티명을 보고 어떤 데이터를 관리하는지 알 수 있도록 표현한다.

  • 모호한 단어 사용하지 않고 수식어 적절히 사용하여 데이터 성격을 표현한다.

  • 일관성 있게, 구체적으로, 행위나 실체가 연상될 수 있게, 확장성 있게, 필요한 단어로만

  • 업무 표현 지양(~등록, ~처리 X) Ex) 구매한 내역만 모니터링 한다면 “모니터링 처리” -> “모니터링대상구매내역”

  • 명사형으로, 가능하면 짧게, 동일한 엔터티 명 없도록

Q. 구체적인데 어떻게 확장성 있게 표현할까?

A. 엔터티를 구성하는 집합의 성격이 고정적이라면, ‘의류’과 같이 구체적으로 / 집합의 성격이 가변적이라면 ‘상품’과 같이 일반화해서 표현한다.

엔터티 설명 기술 원칙

  • 엔터티가 어떤 데이터를 관리하는지 알기 위해 간결하고 명료하되, 완전한 문장으로 기술한다.

  • 본질적인 설명 : 엔터티 구성하는 데이터 본질, 성격, 주체 등 (필수 내용)

  • 부가 설명 : 업무에 대한 설명, 프로세스에 대한 설명 (참고 내용)
    -> 사실 어떤 엔터티인지 알 수 없게 하는 가장 큰 요인은 잘못된 엔터티명과 업무 식별자다.

(중요한 부가 정보)

  • 가공 엔터디 : 원천 데이터가 어떤 엔터티인지 기술
  • 외부에서 받은 데이터 : 어디서 받았는지 기술







데이터모델 설계원칙

모델을 설계할 때 고려해야 할 우선순위

  1. 데이터 무결성

  2. 데이터 성능 : 데이터를 빨리 입력, 조회 하는 것이다.

  3. 관리 효율성 : ERD나 DB 관리를 효율적으로 한다.

  4. 사용 편의성 : 개발하기 편하도록 설계하는 것이다.

이외에 지켜져야할 원칙

  • 정체성 : 엔터티 정의 명확하고 그에 맞는 주 식별자를 정한다.

  • 통합성 : 유사한 성격의 데이터는 통합한다

  • 유연성, 성능 효율성 : 데이터를 통합할수록, 엔터티가 정규화될수록 확장하기 수월하고 성능이 좋다.

  • 무결성 : 데이터에 결점이 없는 상태이다.

  • 가독성, 업무 연관성

  • 관리 효율성 : 엔터티 개수 줄이기 별 의미 없는 1:1 엔터티 합치기

  • 표준화 : 표준 지침을 통해 동일한 용어를 사용한다.

  • 데이터 보안 대비 : 암호화 대상 속성을 주 식별자로 사용하지 않기
    Ex) 주민등록번호 사용함 -> 외래 식별자(FK)도 암호화 -> 검색 구문에 사용하기 불편







데이터 무결성

데이터 무결성이란? 데이터가 정확하고 완전해야 한다.

그럼 불완전하다는 것은?
참조 무결성 제약의 생략이나 업무적으로 논리에 맞지 않는 데이터, 업무 규칙 반하는 데이터

데이터베이스 차원에서 지켜야 할 무결성 종류

DBMS에서 무결성 지킬 수 있는 각종 제약

엔터티 무결성

  • Pirmary Key : 엔터티에서 PK로 지정된 속성에는 동일한 값을 가질수X, PK로 지정된 속성에는 NULL값 X
    Unique : 엔터티에서 Unique로 지정된 속성에는 동일한 값X, NULL값 X, 여러 개 속성 지정 가능

참조 무결성
Foreign Key : 관계 속성의 FK 값은 참조 엔터티의 PK속성에 존재하거나 NULL값이어야 한다

도메인 무결성

  • Check : 속성 값에는 특정한 범위의 값이나 특정 규칙을 따르는 값만이 존재할 수 있다
  • Default : 속성의 값이 지정되지 않을 경우, 대체할 수 있는 기본 값을 설정한다
    Data Type : 속성에 데이터 타입을 지정해 특정 형식을 유지할 수 있다
    Null/Not Null : 속성 값이 Null 일 수 있는지, 값이 반드시 존재해야 하는지를 지정한다

업무 무결성

  • Trigger : 속성 값이 입력, 수정, 삭제될 때 자동으로 데이터를 처리할 수 있도록 지정한다











** "관계형 데이터 모델링 노트"를 참고하여 작성했습니다.

<이미지참고>
https://m.blog.naver.com/clsrnclsrn95/222069240916

profile
공부한 것들을 정리하는 블로그

0개의 댓글