엔터티(Entity)
: 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합(인스턴스의 집합!)
📍엔터티의 특징
- 반드시 해당 업무에서 필요한, 관리하고자 하는 정보여야 한다.
- 유일한 식별자에 의해 식별이 가능해야한다.
- 영속적으로 존재하는 인스턴스의 집합이어야 한다.(최소 2개 이상)
- 업무 프로세스에 의해 이용되어야 한다.
- 반드시 속성이 있어야 한다.
- 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.
위 표에서 회사와 병원 엔터티는 인스턴스가 한개 밖에 없기 때문에 성립 X
엔터티에 관계가 없으면, 잘못된 엔터티거나 관계가 누락되었을 가능성이 크다.
📍엔터티의 분류
유무형에 따른 분류
- 유형엔터티 : 물리적, 안정적, 지속적
ex)사원, 물품, 강사
- 개념엔터티 : 관리해야할 개념적 정보로 구분
ex)조직, 보험상품, 장소
- 사건엔터티 : 업무를 수행함에 따라 발생되는 엔터티(각종 통계자료에 이용될 수 있음)
ex)주문, 청구, 미납
발생시점에 따른 분류
- 기본/키엔터티 : 업무에 원래 존재하는 정보/독립적으로 생성가능, 타 엔터티의 부모역할 = 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가짐
ex)사원,부서,고객,상품
- 중심엔터티 : 기본엔터티로부터 발생
ex)계약, 사고, 예금원장, 청구, 주문, 매출
- 행위엔터티 : 두 개 이상의 부모엔터티로부터 발생
ex)주문목록, 사원변경이력, 계약진행
📍엔터티의 명명
- 가능하면 현업업무에서 사용하는 용어 사용
- 가능하면 약어 사용 x
- 단수명사를 사용
- 모든 엔터티에서 유일하게 이름이 부여
- 엔터티 생성의미대로 이름 부여
속성(Attribute)
: 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상으로 더 이상 분리되지 않는 최소의 데이터 단위
엔터티, 인스턴스, 속성, 속성값에 대한 관계
- 한 개의 엔터티는 두 개 이상의 인스턴스의 집합이어야 한다.
- 한 개의 엔터티는 두 개 이상의 속성을 갖는다.
- 한 개의 속성은 한 개의 속성값을 갖는다.
📍속성의 표기법
엔터티 내에 이름을 포함하여 표현하면 된다.
📍속성의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 한다.
- 정해진 주식별자에 함수적 종속성을 가져야 한다.
- 하나의 속성에는 한 개의 값만을 가진다. 하나의 속성에 여러 개의 값이 있는 다중값일 경우 별도의 엔터티를 이용하여 분리한다.
📍속성의 특성에 따른 분류
1)기본속성
ex)(원래속성)제품이름, 제조년월, 제조원가
2)설계속성
ex)(용기코드)001-식품용기, 002-약품용기, 003-기타용기
3)파생속성
ex)(계산값)전체용기 수, 용기의 총금액
📍엔터티 구성방식에 따른 분류
PK(Primary Key)속성 : 엔터티를 식별할 수 있는 속성
FK(Foreign Key)속성 : 다른 엔터티와의 관계에서 포함된 속성
일반속성 : 엔터티에 포함되어 있고 PK, FK에 포함되지 않은 속성
📍도메인
: 각 속성은 가질 수 있는 값의 범위, 도메인 이외의 값을 갖을 수 X
엔터티 내에서 속성에 대한 데이터타입과 크기 그리고 제약사항을 지정하는 것
📍속성의 명명
- 해당업무에서 사용하는 이름을 부여
- 서술식 속성명은 사용하지 X
- 약어 사용 가급적 제한
- 전체 데이터모델에서 유일성 확보하는것이 좋다
=>반정규화(테이블통합, 분리, 칼럼의 중복 등)을 적용할 때 속성명의 충돌을 해결
관계(Relationship)
: 상호 연관성이 있는 상태/엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위서 서로에게 연관성이 부여된 상태
📍관계의 표기법
관계명 : 관계의 이름
- 엔터티가 관계에 참여하는 형태를 지칭
- 각각의 관계는 두 개의 관계명을 가짐
- 각각의 관계명에 의해 두 가지 관점으로 표현
부서 : 관계시작점 / 사원 : 관계끝점
관계차수 : 1:1, 1:M, M:N
📍관계선택사양
- 필수참여관계 : 참여하는 모든 참여자가 반드시 관계를 가짐
ex) 주문서는 반드시 주문목록을 가져야함(주문서와 주문목록은 필수참여관계)
- 선택참여관계 : 참여하는 모든 참여자가 항상 관계를 갖는 것은 아닐 수 있음
ex) 목록은 주문이 될 수도 있고, 주문되지 않을 수도 있다(목록과 주문은 선택참여관계)
📍관계의 정의
- 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
- 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
- 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
- 업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?
식별자(Identifiers)
: 엔터티는 인스턴스들의 집합이고 여러 개의 집합체 각각을 구분할 수 있는 구분자
- 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성
- 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재
📍식별자의 특징
<주식별자>
- 주식별자에 의해 엔터티내에 모든 인스턴스들이 유일하게 구분되어야함(유일성)
ex)
- 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야함(최소성)
- 지정된 주식별자의 값은 자주 변하지 않은 것이어야 함(불변성)
- 주식별자가 지정이 되면 반드시 값이 들어와야함(존재성)
📍식별자 분류
* 대표성 여부
주식별자 : 엔터티 내에서 각 어커런스(튜플)를 구분할 수 있는 구분자/타 엔터티와 참조관계를 연결할 수 있는 식별자
보조식별자 : 엔터티 내에서 각 어커런스(튜플)를 구분할 수 있는 구분자/대표성을 가지지 못해 참조관계 연결을 못하는 식별자
* 스스로 생성여부
내부식별자 : 엔터티 내부에서 스스로 만들어진 식별자
외부식별자 : 타 엔터티와 관계를 통해 타 엔터티로부터 받아오는 식별자
* 속성의 수
단일식별자 : 하나의 속성으로 구성된 식별자
복합식별자 : 둘 이상의 속성으로 구성된 식별자
* 대체여부
본질식별자 : 업무에 의해 만들어진 식별자
인조식별자 : 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자
📍주식별자 도출기준
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정
- 명칭,내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
- 복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
📍식별자와 비식별자관계
항목 | 식별자 | 비식별자 |
---|
목적 | 강한 연결관계 | 약한 연결관계 |
자식 주식별자 영향 | 자식 주식별자의 구성에 포함 | 자식 일반 속성에 포함 |
표기법 | 실선 | 점선 |
연결고려사항 | 반드시 부모엔터티 종속 | 자식 주식별자구성을 독립적으로 구성 |
| 자식 주식별자구성에 부모 주식별자포함필요 | 자식 주식별자구성에 부모 주식별자 부분필요 |
| 상속받은 주식별자속성을 타 엔터티에 이전필요 | 상속받은 주식별자속성을 타 엔터티에 차단 필요 |