엔터티란?
업무를 수행하는 데 필요한 데이터를 특성이 유사한 것끼리 모아놓은 집합
판단기준
: 관리하고자 하는 데이터인가?
설계 목적
: 업무에 필요한 데이터를 효율적으로 저장하고 관리하기 위해
구성요소 : 인스턴스, 속성, 식별자
기본 개념
인스턴스(집합의 원소) : 실제 쌓이는 데이터 값, 개별 행
서로 명확히 구별돼야 그 모임의 집합이 된다.
속성 : 더 이상 분리되지 않는 최소의 데이터 단위 *엔터티가 저장하는 정보의 종류
식별자 : 엔터티에서 데이터의 유일성을 보장해주는 결정자 역할을 하는 속성 or 속성 집합
엔터티를 정의한다는 것은?
엔터티가 본질적으로 어떤 집합으로 이루어져 있는지 명백하게 하는 것
엔터티의 설명을 적는 것
엔터티 정의가 잘못됐다는 것은?
집합 자체를 잘못 정의 -> ‘거래처’ 엔터티를 ‘상품’으로 정의했을 경우
여러 집합이 혼재하도록 -> 한 엔터티에 ‘거래처‘, ’상품’ 등 여러 집합이 존재하는 경우
-> 엔터티를 명확하게 이해하기 위해 엔터티를 분류해보자!
<기준>
엔터티에서 관리하는 데이터가 무엇인가
A. 기존 데이터가 존재하는 백업 데이터는 원본 데이터가 있으니 "가공 데이터"라고 할 수 있다.
삭제 후 백업은 원본 데이터가 즉, 백업 데이터가 됐으니 "원천 데이터"라고 할 수 있다.
A. 가공데이터일지라도 직접 작성하여 새로운 데이터를 얻었다면 "원천 데이터"라 할 수 있다.
엔터티 정의 순서 : 존재 파악 -> 그 존재의 행위 파악 -> 존재나 행위를 명확하게 이해하기 위한 가공 데이터 생성
이해하기 쉬운 순서! 필수는 아님
<성격, 본질, 주제에 따른 정체성이 분명한 엔터티로 설계해야 한다>
데이터 정체성 : 엔터티를 명확하게 정의해야 한다.
엔터티 무결성 : 한 엔터티는 동일한 주 식별자 값이 존재할 수 없으며 NULL값을 허용할 수 없다.
엔터티 유일성 : 하나의 주제는 하나의 엔터티에서만
데이터 혼용 배제 : 여러 종류의 데이터를 혼용x
타 엔터티와 관계 존재 : 엔터티는 보통 다른 엔터티와 관계가 존재하는 것이 일반적이다. / 가공, 기준 엔터티 등은 관계가 존재하지 않을 수 있다.
프로세스 도출 지양 : ‘데이터 성격’을 기준으로 엔터티 생성한다.
화면 도출 지양 : 프로세스와 마찬가지로 ‘데이터 성격’을 기준으로 엔터티 생성한다.
데이터 관리 요건 : 데이터베이스에서 관리하려는 데이터를 엔터티로 설계해야 한다.
엔터티명을 보고 어떤 데이터를 관리하는지 알 수 있도록 표현한다.
모호한 단어 사용하지 않고 수식어 적절히 사용하여 데이터 성격을 표현한다.
일관성 있게, 구체적으로, 행위나 실체가 연상될 수 있게, 확장성 있게, 필요한 단어로만
업무 표현 지양(~등록, ~처리 X) Ex) 구매한 내역만 모니터링 한다면 “모니터링 처리” -> “모니터링대상구매내역”
명사형으로, 가능하면 짧게, 동일한 엔터티 명 없도록
A. 엔터티를 구성하는 집합의 성격이 고정적이라면, ‘의류’과 같이 구체적으로 / 집합의 성격이 가변적이라면 ‘상품’과 같이 일반화해서 표현한다.
엔터티가 어떤 데이터를 관리하는지 알기 위해 간결하고 명료하되, 완전한 문장으로 기술한다.
본질적인 설명 : 엔터티 구성하는 데이터 본질, 성격, 주체 등 (필수 내용)
부가 설명 : 업무에 대한 설명, 프로세스에 대한 설명 (참고 내용)
-> 사실 어떤 엔터티인지 알 수 없게 하는 가장 큰 요인은 잘못된 엔터티명과 업무 식별자다.
(중요한 부가 정보)
데이터 무결성
데이터 성능 : 데이터를 빨리 입력, 조회 하는 것이다.
관리 효율성 : ERD나 DB 관리를 효율적으로 한다.
사용 편의성 : 개발하기 편하도록 설계하는 것이다.
이외에 지켜져야할 원칙
- 정체성 : 엔터티 정의 명확하고 그에 맞는 주 식별자를 정한다.
- 통합성 : 유사한 성격의 데이터는 통합한다
- 유연성, 성능 효율성 : 데이터를 통합할수록, 엔터티가 정규화될수록 확장하기 수월하고 성능이 좋다.
- 무결성 : 데이터에 결점이 없는 상태이다.
- 가독성, 업무 연관성
- 관리 효율성 : 엔터티 개수 줄이기 별 의미 없는 1:1 엔터티 합치기
- 표준화 : 표준 지침을 통해 동일한 용어를 사용한다.
- 데이터 보안 대비 : 암호화 대상 속성을 주 식별자로 사용하지 않기
Ex) 주민등록번호 사용함 -> 외래 식별자(FK)도 암호화 -> 검색 구문에 사용하기 불편
데이터 무결성이란? 데이터가 정확하고 완전해야 한다.
그럼 불완전하다는 것은?
참조 무결성 제약의 생략이나 업무적으로 논리에 맞지 않는 데이터, 업무 규칙 반하는 데이터
엔터티 무결성
참조 무결성
Foreign Key : 관계 속성의 FK 값은 참조 엔터티의 PK속성에 존재하거나 NULL값이어야 한다
도메인 무결성
업무 무결성
** "관계형 데이터 모델링 노트"를 참고하여 작성했습니다.