원본
위의 원본을 요약하면서 나와 다른 사람이 이해하기 편하게 (나름대로) 하기 위해 작성한 글입니다.
1. 엔티티의 개념
엔티티( Entity )는 우리나라 말로 실체, 객체라고 번역한다.
Database 에서 Entity는 다음과 같이 요약할 수 있다.
- 사람, 물건, 사건, 개념 등 명사
- 관리가 필요한 관심사
- 저장이 되기 위한 어떠한 것
엔티티는 집합에 속하는 개체들의 특성을 설명할 수 있는 속성을 갖는다.
예를 들어서 대학교의 Database(앞으로 DB라고 부름)에는 여러가지가 존재하겠지만, 학생과 과목이라는 Entity가 있다고 해보자.
학생이라는 엔티티는 학번, 이름, 총 이수학점, 생일, 성별 등의 속성을 가질 수 있다.
과목이라는 엔티티는 과목명, 이수학점, 수강 정원 등의 속성을 가질 수 있다.
속성 중에서는 다른 엔티티가 공유할 수 있는 공통적인 속성도 있을 수 있다.
위의 예는 과목을 이수했을 때 학생의 총 이수학점에 영향이 늘어나야 하기 때문에 과목은 공유 될 수 있는 속성인 것이다.
2. 엔티티와 인스턴스에 대한 표기법
인스턴스란 여러 곳에서 많은 의미를 가지는데 사실 여기서 쓰인 인스턴스의 의미는 정확히는 모르겠다. (개념이 나와있지 않음)
DB에서는 사용자가 DB와 통신하는 프로세스 (연결선, 인터페이스)를 의미한다.
다만 아래에서 쓰인 의미는 Entity의 데이터의 목록이라고 생각하면 될 것 같다.
엔티티는 대부분 사각형으로 표현한다.
3. 엔티티의 특징
- 꼭 필요하고 관리하고자 하는 정보여야 한다.
- 예를 들어 환자의 정보는 병원에서 필요하지, 삼성전자에서 필요한 정보가 아니기 때문에 삼성전자는 환자 Entity를 가질 필요가 없음.
- 유일한 식별자에 의해 식별이 가능해야 한다.
- 보통 PK ( Primary Key : 식별자)라고 부르는데 구분할 수 없는 식별자는 사용하면 안된다.
- 아래 이미지를 예로 들겠다.
- 수학에는 김개똥이라는 학생이 과목을 수강한다. 하지만 김개똥이라는 학생이름은 1명이 아닐 수 있다.
때문에 학생 이름은 식별자가 될 수 없다. ( 과목명도 식별자가 되기에 적절하지 않다.)
- 영속적으로 존재하는 인스턴스의 집합(2개 이상)이어야 한다.
- 업무 프로세스에 의해 이용
- 꼭 속성이 있어야 함
- 다른 엔티티와 최소 한 개 이상의 관계가 있어야 한다.
- 관계형 Database에서 다른 엔티티와의 관계가 없다면 잘못 되거나 누락되었을 가능성이 있다.
- 단 예외가 있는데, 읽기 전용 엔티티( ex : 통계자료 엔티티), 코드를 위한 엔티티라면 관계가 생략된다.
4. 엔티티의 분류
유무형에 따른 분류
유형, 개념, 사건 엔티티로 구분된다.
- 유형 : 물리적인 형태가 있는 엔티티. ex) 사원, 물품, 강사 등의 실체가 있음
- 개념 : 물리적인 형태가 없음.
ex ) 조직, 보험상품 등의 추상적인 개념. 조직은 유형 아니야?라고 할 수 있지만, 조직은 실체가 없다. 삼성전자는 삼성전자의 건물이 있는거지 삼성전자라는건 그냥 이름일 뿐이다. - 사건 : 업무를 수행하며 발생하는 엔티티. 통계자료에 이용
ex ) 배민,요기요 등에서 주문으로 발생하는 주문 통계 엔티티, 배달기사의 배달지 엔티티 등
발생시점에 따른 분류
- 기본 : 업무에 존재하는 정보. 독립적으로 생성이 가능하고 다른 엔티티의 부모 역할을 함.
ex ) 사원, 고객, 상품, 자재 등 + 위의 예시의 과목, 학생 - 중심 : 기본엔티티에서 발생하며 중심적인 역할을 함. 다른 엔티티와의 관계를 통해 많은 행위 엔티티를 생성.
ex ) 계약, 사고, 주문, 청구, 매출 등 + 과목_수강 목록 - 행위 : 두개 이상의 부모 엔티티로부터 발생. 자주 바뀌거나, 데이터가 많음.
ex ) 계약 목록. 사고목록, 주문목록, 청구목록, 매출내역 등 + 수강 목록 변경이력 등
5. 엔티티의 이름
- 현업에서 사용하는 용어를 사용
- 약어(줄임말)을 사용하지 않음 ex : hm(human), sbj(subject)
- 단수명사를 사용
- 유일한 이름
- 엔티티 생성의미대로 이름을 부여 ( 의미가 명확해 알기 쉽게)
- ex ) 고객이 제품을 주문했을 때 주문한 목록을 엔티티로 만들 때 주문 목록, 고객제품 등의 이름을 생각할 수 있다. 고객제품으로 하면 고객이 주문한 제품인지, 고객의 제품인지 모르기 때문에 주문목록으로 이름으로 설정하는게 나음.
'자격증 > SQLD' 카테고리의 다른 글
SQLD 요약 - DDL (0) | 2023.01.15 |
---|---|
SQLD 요약 - 관계형 데이터베이스 개요 (0) | 2023.01.14 |
SQLD 요약정리 - 식별자 (5) | 2022.12.19 |
SQLD 요약 정리 - 관계 (2) | 2022.11.14 |
SQLD 요약 정리 - 속성 (0) | 2022.11.03 |