엔터티(Entity)
엔터티는 업무를 추상화한 데이터 집합을 말한다.
참조1의 엔터티 도출 예제의 일부를 보자
-> 업무 시나리오 표현
● (주)앙꼬래컨설팅에 입사하면 채용 시 개인정보를 기록한 간단한 이력서 외에도 자세한 개인정보를 기록할 수 있도록 인사기록 양식지를 배부한다.
● 입사한 모든 사원은 곧바로 부서에 배정된다.
● 인사기록 양식지에 크게 인사기본정보, 가족사항, 병역, 어학, 학력, 자격증정보, 해외경험내용, 경력 등을 기록해야 한다.
● 신입이든, 경력이든 입사한 모든 사람은 인사기록지에 위의 사항을 기록한다.
● 인사기본정보에는 한글이름, 영문이름, 주민등록번호, 집전화번호, 휴대폰번호, 전자메일, 본적주소, 현주소, 결혼여부를 기재한다.
-> 엔터티 도출
(주)앙꼬래컨설팅, 가족관계, 가족사항, 개인정보, 결혼여부, 경력, 경력수행, 국가, 군번, 귀국일자, 근무, 근무지,
근무회사이름, 기록, 기재, 독해점수, 동거여부, 듣기점수, 등록, 발령, 발생, 배부, 배정, 변화, 병역, 병역구분
엔터티의 특징
- 식별자 : 유일한 식별자가 있어야 한다
- 인스턴스 집합 : 2개 이상의 인스턴스가 있어야 한다 ex) 고객 테이블에서 고객은 2명 이상 있어야함
- 속성 : ex) 고객 엔터티에 고객ID, 이름, 전화번호 등..
- 관계 : 다른 엔터티와 최소 1개 이상의 관계가 있어야 한다
- 업무 : 업무와 연관이 있어야 한다
엔터티의 종류
유형과 무형에 따른 엔터티 종류
- 유형 엔터티 : 업무에서 도출되며 지속적으로 사용하는 엔터티이다 ex) 고객, 강사, 사원 등
- 개념 엔터티 : 물리적 형태 없이 개념적으로 사용하는 엔터티이다 ex) 코스피 종목, 보험사 상품 등
- 사건 엔터티 : 비즈니스 프로세스를 실행하면서 생성되는 엔터티이다 ex) 주문, 체결, 배달 등
발생 시점에 따른 엔터티 종류
- 기본 엔터티(Basic Entity) : 다른 엔터티로부터 영향을 받지 않고 독립적으로 생성되는 엔터티이다. 키 엔터티 라고도 한다 ex) 고객, 상품, 부서 등
- 중심 엔티티(Main Entity) : 기본 엔터티와 행위 엔터티 중간에 위치하여 기본 엔터티로부터 발생되고, 행위 엔터티를 생성하는 엔터티이다 ex) 계좌 ,주문, 취소, 체결 등
- 행위 엔터티(Active Entity) : 2개 이상의 엔터티로부터 발생된다 ex) 주문 이력, 체결 이력 등
속성(Attribute)
속성은 엔터티가 가지는 항목으로, 의미적으로 더 이상 분해되지 않는 요소이다. 주식별자에게 함수적으로 종속되는 특징이 있다. 다시 말해 기본 키값이 변경되면 속성 값도 변경된다.
속성의 종류
분해 여부에 따른 속성의 종류
- 단일 속성 : 하나의 의미로 구성된 것. ex)학번, 주민등록번호
- 복합 속성: 여러 개의 의미를 가진다. ex) 주소, 생년월일
- 다중값 속성 : 여러 개의 값을 가질 수 있는 것으로, 엔터티로 분해될 수 있다. ex) 취미, 색깔
특성에 따른 속성의 종류
- 기본 속성 : 비즈니스 프로세스에서 도출되는 본래의 속성
- 설계 속성 : 데이터 모델링 과정에서 발생되는 속성. 유일한 값을 부여한다 ex)상품 코드, 지점 코드 등
- 파생 속성 : 다른 속성에 의해서 만들어지는 속성이다 ex)합계, 평균값 등
관계(Relationship)
관계는 엔터티 간의 관련성을 의미한다.
관계의 종류
존재 관계
엔터티간의 존재 상태를 의미한다. 고객이 은행에 가입을 하면, 고객-계좌-관리점 엔터티간에 존재 관계가 생긴다.
행위 관계
엔터티간에 관계가 있는 것으로, 계좌는 주문을 발주할 수 있으므로 계좌-주문 엔터티간에는 행위 관계가 있다고 표현한다.
관계 차수(Cardinality)
두 개의 엔터티 간에 관계에 참여하는 수를 의미한다.
관계 차수에는 1대 1 관계, 1대 N 관계, M대 N 관계가 있다. 관계형 데이터베이스에서 M대 N 관계의 조인은 카테시안 곱이 발생하므로 1대 N, N대 1 관계로 푸는 것이 통상적이다.
식별관계와 비식별관계
식별관계(Identification Relationship)
식별관계는 어떤 엔터터의 기본키가 다른 엔터티의 기본키에 공유되는 관계이다. 예를 들어서 고객은 계좌가 없어도 된다고 가정해보자. 그럼 고객 엔터티는 독립적으로 존재할 수 있으므로 강한 개체이고, 계좌 엔터티는 약한 개체이다. 이때 계좌 엔터티의 기본키에 고객 엔터티의 기본키가 있다면 식별관계인 것이다.
식별관계에서는 강한 개체의 기본키값이 변경되면 기본키를 공유받은 개체에 있는 엔터티의 값도 변경된다.
비식별관계(Non-Identification Relationship)
비식별관계는 강한 개체의 기본키를 다른 엔터티의 '기본키가 아닌' 일반 칼럼으로 관계를 갖는 것이다.
보통 식별관계는 실선, 비식별관계는 점선으로 표기한다.
엔터티 식별자(Entity Identifier)
주식별자
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야한다. ex) 사원번호만으로도 고유한 구조인데, 사원분류코드+사원번호로 식별자가 구성될 경우 부적절하다
- 대표성 : 엔터티를 대표할 수 있어야한다
- 유일성 : 엔터티의 인스턴스(테이블에서 각 행)를 유일하게 식별한다
- 불변성 : 자주 변경되지 않아야한다
- 존재성 : 주식별자가 지정되면 null일 수 없다. 반드시 값이 지정되어야한다
키의 종류
- 기본키(Primary key) : 후보키 중에서 엔터티를 대표할 수 있는 키
- 후보키(Candidate key) : 유일성과 최소성을 만족하는 키
- 슈퍼키(Super key) : 유일성은 만족하지만 최소성은 만족하지 않는 키
- 대체키(Alternate key) : 여러 개의 후보키 중에서 기본키를 선정하고 남은 키
- 외래키(Foreign key) : 다른 테이블의 기본 키 컬럼을 가리키는 것. 참조 무결성(Referential Integrity)을 확인하기 위해서 사용한다. 예를 들어 고객:계좌 = 1:N의 관계일때, 계좌 엔터티에는 고객 ID값이 FK로 존재할 수 있다. 이 경우 계좌 엔터티는 고객 ID값이 임의로 들어갈 수 없고 반드시 고객 엔터티에 있는 ID값이 존재해야만 계좌 엔터티가 만들어질 수 있다.
식별자의 분류
대표성 여부에 따른 분류
주식별자 : 유일성과 최소성을 만족하면서 엔터티를 대표하는 식별자. 다른 엔터티와 참조 관계로 연결될 수 있다.
보조 식별자 : 유일성과 최소성은 만족하지만, 대표성을 만족하지 못하는 식별자이다.
생성 여부에 따른 분류
내부 식별자: 엔터티 내부에서 스스로 생성되는 식별자이다. ex) 부서코드, 주문번호, 종목코드 등
외부 식별자: 다른 엔터티와의 관계로 인해 만들어지는 식별자이다. ex) 계좌엔터티에 회원 ID
속성의 수에 따른 분류
단일 식별자: 하나의 속성으로 구성
복합 식별자: 두 개 이상의 속성으로 구성
대체 여부에 따른 분류
본질 식별자: 비즈니스 프로세스에서 만들어지는 식별자
인조 식별자: 인위적으로 만들어지는 식별자. 후보 식별자 중에서 주식별자로 선정할 것이 없을 때, 순서 번호(Sequence Number) 등을 이용하여 식별자를 만드는 것이다.
참조
0. [도서] 영진닷컴 - SQL 개발자 이론서 + 기출문제
1. Dataonair - 업무 시나리오에서 엔티티 타입 도출의 6단계
https://dataonair.or.kr/db-tech-reference/d-lounge/technical-data/?mod=document&uid=236077
'Programming-[Backend] > SQL' 카테고리의 다른 글
[SQLD] 4. 반정규화와 분산데이터베이스 (0) | 2022.05.13 |
---|---|
[SQLD] 3. 정규화 (0) | 2022.05.13 |
[SQLD] 1. 데이터 모델링의 종류, 특징, ERD, 3 level schema (0) | 2022.05.09 |
[TIL] 서브쿼리 - 여집합, 서브쿼리의 연결 고리 찾아서 해결 (0) | 2022.05.08 |
[TIL] GroupBy에서는 제외하여 그루핑하되, 다른 기능에 활용하는 것은 불가 (0) | 2022.05.04 |