Entity
- 업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 알아야 하는 유, 무형의 사물(개체)를 의미.
엔터티와 속성 도출
엔터티 도출 과정

- 업무 분석 단계 이후, 분석 자료(업무 기술서, 인터뷰 자료, 장부와 전표 등...)들로부터 엔터티를 도출한다.
- 정해진 공식은 없지만 일련의 과정들을 거쳐 엔터티 기술서를 작성하게 된다.
- 엔터티 후보 풀과 엔터티 리스트를 그린다.
- 분석 대상 문서를 보고 명사를 찾아 표시한다.
- 명사 하나하나에 대해 속성인지 엔터티인지를 구분한다.
- 중복된 명사나 유사한 의미의 명사는 하나로 정리한다.
- 엔터티 후보 풀에 있는 명사들을 검토한다.
- 도출된 엔터티에 대하여 구축될 시스템에서 데이터를 관리할 필요가 있는지를 판단한다.
엔터티 도출 원칙
- 업무의 관심 대상이 되는 사물이어야 된다.
- 두 개 이상의 인스턴스를 소유해야 한다.
- 데이터의 정체성이 분명해야 한다.
- 데이터 종속성에 의해서 하나의 주제만을 관리하는 정의가 명확한 모델
- 엔터티의 인스턴스를 식별할 수 있는 식별자(Identifier)가 존재해야 한다.
- 동일한 성격의 데이터는 유일해야 한다.
- 엔터티 명은 관리하고자 하는 데이터의 성격(주제)을 가장 잘 표현하는 이름으로 한다.
업무 기술서에서 엔터티 리스트 도출하기

속성명 정의

- 엔터티 후보 풀: 엔터티 도출 과정에서 엔터티인지, 혹은 속성인지 아닌지 애매한 명사를 담아두는 보관소
- 엔터티 리스트: 찾아낸 엔터티를 기록하는 보관소. 엔터티명, 포함속성, 유사어로 표시
- 명사를 찾아 표시할 때 추상명사도 표시하며 한번 나왔던 명사는 다시 표시하지 않는다.
제거 및 정리

- 대출 가능 도서 수는 회원의 등급에 따라 정해지므로 종속 엔터티인 대출에 들어간다.
- 회원증이나 회원카드는 회원 엔터티와 유사한 의미로 불필요하게 속성이 반복될 것이므로 제외한다.
엔터티 리스트에서 엔터티 기술서 도출하기
식별자 정의 및 엔터티 설명

- 앞서 구한 엔터티 리스트에서 도출 한 엔터티와 속성을 파악하여 해당 엔터티들을 설명하고 속성
중에 식별자 역할을 하는 속성을 표시한다.
엔터티 종류
실체 엔터티
- 보이는 물체의 본질적인 성격을 관리하는 엔터티이다.
- 수표, 사원, 창고, 제품, 고객, 학생, 입출금전표 등이다.
기준 엔터티
- 실체나 행위 데이터의 기준이 되는 데이터를 관리하는 엔터티
- 업무를 수행하면서 참조하는 데이터가 있어 참조 엔터티라고도 불린다.
- 기준이 되는 엔터티의 데이터들이 여러 개면 어떤 것을 참조해야 할지 알 수 없으므로 하나만 존재해야 한다.
- 우편번호, 이자율, 수수료율, 영업일자 등
행위 엔터티
- 행위나 활동에 의해 발생된 원천 데이터를 관리하는 엔터티이다.
- 계약, 주문, 신청, 입금 등이다
가공 엔터티
- 원천 데이터가 아닌 원천 데이터를 추출, 집계한 데이터를 관리하는 엔터티
- 가공 엔터티에 데이터를 쌓는 방법은 두가지가 있다.
- 트랜잭션 데이터가 발생할 때마다 집계
- 특정 시점에 해당하는 기간의 데이터를 집계
- 집계, 임시, 요약 등
속성(Attribute) 종류

- 엔티티가 가지는 항목이며 인스턴스의 구성요소이다.
분해 여부에 따른 속성의 종류
- 단일 속성
- 하나의 의미로 구성된 속성
- 부서명, 상품명, 재고 수량 등
- 복합 속성
- 두 개 이상의 세부 속성으로 구성된 속성
- 전화번호(국번, 전화번호)나 주소(시, 구, 동)처럼 의미에 따라 별도로 나눠서 관리할 수도 있고 하나로 관리할 수도 있다.
- 다가 속성(다치 속성, 다중값 속성)
- 속성에 여러 값을 지니고 있는 속성
- 주문 내역, 입출고 내역, 결제 내역, 주문 메뉴명 등
- 1정규형에 의하면 속성은 단일값을 지녀야 하므로 다른 인스턴스로 구분하거나 어느정도 한 정적인 갯수라면 속성을 분리해서 관리할 수도 있다.
특성에 따른 속성의 종류
- 기초 속성
- 엔터티의 본질을 설명하는 속성
- 기초 속성만으로도 엔터티의 성격을 알 수 있다.
- 관계 속성
- 타 엔터티와의 연관성을 나타내는 속성
- 관계속성은 다른 엔터티의 주 식별자 속성이다.
- 추출 속성
- 원본 속성의 값을 연산해서 채울 수 있는 속성이다.
식별자(Identifier)

주식별자(Primary Identifier)
- 엔터티에 소속된 인스턴스들을 구별하는 기준 역할을 하는 속성이다.
- 주식별자는 유일성, 최소성, 불변성, 존재성의 특징을 갖는다.
- 유일성: 주식별자에 의해 엔티티 내에 모든 인스턴스들을 유일하게 구분되어야 한다.(중복되지 않는다.)
- 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
- 불변성: 주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 한다.
- 존재성: 주식별자가 지정되면 반드시 데이터 값이 존재해야한다.(NULL은 허용되지 않는다.)
- 주식별자는 하나가 아닌 여러 속성일 수 있다. (복합키)
- 엔터티의 속성 중 주식별자 속성이 없다면 새로운 속성을 만들어 준다.
외래식별자(Foreign Identifier)
- 관계가 있는 두 엔터티를 부모, 자식 엔터티로 구분한 후 부모의 주식별자와 공통 속성이 자식에게도 존재하면 해당 속성을 외래식별자로 지정한다.
- 자식 엔터티에 부모 엔터티 주식별자 공통 속성이 없을 경우 자식에게 속성을 추가한 후 외래식별자로 지정한다.
도메인
도메인이란
- 하나의 속성이 취할 수 있는 동일한 타입의 원자값들의 집합
- 유사한 속성에 동일한 데이터 타입을 할당할 수 있어 데이터의 일관성과 정합성을 유지할 수 있다.
도메인 도출 및 할당
- 도메인은 다음과 같은 절차로 도출할 수 있다.
- 모든 속성을 엔터티별로 나열한다.
- 합성명사를 분리한다.
- 공통적인 합성명사와 명사들을 나열한다.
- 공통적인 명사를 도메인으로 설정하고 속성을 도메인에 할당한다.
- 각 도메인별로 데이터 타입과 길이를 지정한다.

관계(Relationship)
관계란
- 두 개 이상의 엔터티 간에 존재하는 연관성을 나타낸다.
- 하위(자식) 엔터티의 속성으로 관리될 때만 관계를 표현한다.
- 관계에는 종속관계와 참조 관계가 있다.
- 종속관계: 부모 엔터티와 자식 엔터티 간의 관계로 부모 엔터티가 존재해야 자식 엔터티가 존재할 수 있다. 반대로 말하면 부모 엔터티 없이 관계를 삭제하고 자식 엔터티만 존재할 수 없다.
- 참조관계: 엔터티간에 연관성이 존재하긴 하지만 다른 엔터티가 없다고 존재할 수 없는 관계는 아니다. 단순히 참조 데이터를 관리하므로 관계를 삭제해도 한 속성에 대한 연관성만 문제가 되고 하위 엔티티 존재해는 지장이 없다
관계의 구성요소

카디널리티(Cardinality)
- 카티널리티는 릴레이션에서 튜플의 개수이자 상위(부모) 엔터티의 인스턴스 하나가 하위(자식)엔터티의 인스턴스 몇 개와 관련이 있는지 혹은 그 반대를 나타내는 것이다.
- 카디널리티를 통해 관계가 있는 두 엔터티는 일대일(1:1), 일대다(1:M), 다대다(M:M) 관계를 나타낸다.
- 다대다(M:M) 관계이면 교차 엔터티(Association Entity)를 통해 다대다 관계를 일대다(1:M) 관계로 해소해 주어야 한다.
옵셔널리티(Optionality)
- 상위(부모) 엔터티와 하위(자식)엔터티가 서로 연관되는 값이 반드시 존재해야 하는지 존재하지 않아도 되는지를 의미한다.
- 서로 연관되는 값이 반드시 존재하면(최소 1개 이상) Mandatory이다.
- 서로 연관되는 값이 반드시 존재하지 않아도 된다면(최소 0개 이상) Optional이다.
관계 디그리(Relationship Degree)
- 하나의 관계에 포함된 엔터티의 개수를 뜻한다.
- 하나의 관계는 하나의 엔터티나 두개의 엔터티 뿐 아니라 3개 이상의 엔터티에서도 발생한다.
- 1개체 관계(Unary Relationship): 한 개의 엔터티가 연관된 관계(재귀 관계(Recursive Relationships))
- 2개체 관계(Binary Relationships): 두 개의 엔터티가 연관된 관계
- 3개체 관계(Ternary Relationships): 세 개의 엔터티가 연관된 관계
- N개체 관계(N-ary Relationships): N개의 엔터티가 연관된 관계
특별한 관계의 종류
일대일 관계(One-to-One Relationship)

- 상위(부모)엔터티의 하나의 인스턴스가 하위(자식)엔터티의 하나의 인스턴스와 연관되는 관계를 말한다.
- 성능이나 업무 규칙에 의해 일대일 관계를 채택할 수 있다.
- 데이터의 성격이 다르면 업무를 표현하기 위해서 일대일 관계를 채택할 수도 있다.
- 유사한 속성을 과도하게 일대일로 분해하는 것은 유의해야 한다.
배타 관계(Exclusive Relationship)

- 두 개 이상의 상위(부모) 엔터티와 관계를 가지며 상호 배타적(하위(자식)엔터티의 하나의 인스턴스가 한번에 하나의 부모 엔터티와 관계를 가지게 됨)일 때의 관계를 말한다.
재귀 관계(Recursive Relationship)

- 하나의 엔터티에서 인스턴스가 같은 엔터티의 다른 인스턴스와 관계를 가진다.
- 주로 계층 구조로 상위와 하위의 개념인 계층 구조(레벨이 존재하는 개념)가 생기는 데이터를 관리하는데 사용되며 엔터티의 개수가 늘어나 조인해야 할 엔터티가 늘어나는 것을 방지해 준다.