해당 포스트는
SQLD
를 학습하며 정리한 내용에 대한 포스트입니다.
이론을 학습한 내용을 정리하고 퀴즈, 기출문제 등을 기록하려고 합니다.
🌈 엔터티 (Entity)
💻 엔터티란?
🔍 엔터티 (Entity)
엔터티의 사전적 의미는 독립체
이다.
데이터베이스에서 엔터티는 식별 가능한 객체라는 의미를 가지고 있다.
엔터티는 업무에서 관리해야 하는 데이터 집합을 의미하며, 저장되고 관리되어야하는 데이터다.
엔터티는 개념
, 사건
, 장소
등의 명사
이다.
엔터티는 명확한 조건이 기준이 되어야 한다.
전문가들이 정의한 엔터티
이름 | 시기 | 정의 |
---|---|---|
Peter Chen | 1976 | 식별할 수 있는 사물 |
C.J Date | 1986 | 데이터베이스 내에서 식별 가능한 객체 |
James Martin | 1989 | 정보를 저장할 수 있는 어떤 것 |
Thomas Bruce | 1992 | 정보를 저장할 수 있는 사람, 장소, 물건, 사건 그리고 개념 등 |
쉽게 말해서 엔터티는 업무에서 쓰이는 데이터를 용도별로 분류한 그룹이라고 할 수 있다.
- 엔터티 : table
- 인스턴스 : Row
- 속성 : Column
엔터티 간의 관계를 정의할 때 고려해야할 사항
- 두 엔터티 사이를 이어주는
동사
가 존재- 조합이 되는 정보가 존재
- 영향력 있는 관계가 존재
- 관심있는 연관규칙 존재
- 관계 연결에 대한 규칙 서술
각각의 엔터티는 자신을 더 상세하게 나타내기 위해 속성(Attribute)을 갖게 되는데, 속성의 개수는 엔터티마다 상이해서 용도에 따라 매우 많을 수도 있고 매우 적을 수도 있다.
예를 들어, ‘회원’ 이라는 엔터티는 ‘아이디’, ‘비밀번호’, ‘이름’, ‘핸드폰 번호’, ‘주소’와 같은 속성을 가질 수 있고,
‘상품’이라는 엔터티는 ‘상품코드’, ‘상품명’, ‘카테고리’, ‘배송비’ 와 같은 속성을 가질 수 있다.
그리고 만약에 상품 엔터티에 ‘먹태깡’이라는 상품과 ‘맛동산’라는 상품이 있다고 가정한다면 각각은 상품 엔터티의 인스턴스가 된다.
🔍 엔터티(Entity) 도출
엔터티는 고객의 비즈니스 프로세스에서 관리되어야 하는 정보를 추출한다.
예를 통해 알아보자
비지니스 프로세스 예시
- 고객이 회원 가입을 한다.
- 회원가입으로 가입할 때는 회원 ID, 패스워드, 이름, 주소, 전화번호등을 입력해야 한다.
- 회원으로 가입하기 위해서는 반드시 하나의 계좌를 개설해야 한다.
- 고객은 여러 계좌를 개설할 수 있다.
- 계좌를 개설할 때는 계좌번호, 계좌명, 예수금, 계좌개설지점, 계좌담당자가 입력된다.
💻 엔터티의 특징
✅ 업무에 필요하고 관리하고자 하는 정보
실질적으로 업무에 쓰이는 정보여야 엔터티로 도출하는 의미가 있다.
- 쇼핑몰 시스템에 ‘학생’이라는 엔터티를 도출
업무와 연관되어 있을 것 같은 엔터티라도 실제로 프로세스에 이용되지 않는다면 적절한 엔터티라고 볼 수 없다.
쇼핑몰에서 쿠폰을 발급할 것이라고 예상하고 ‘쿠폰’ 엔터티를 도출해 놓았는데 실제로는 쿠폰을 발급하지 않는다.
이 엔터티는 쓰이지 않을 것이므로 삭제하는 것이 바람직하다.
✅ 유니크함을 보장할 수 있는 유일한 식별자
엔터티에 속한 각각의 인스턴스가 중복되거나 식별이 모호하면 이 엔터티는 설계가 잘 못된 것이라 볼 수 있다.
회원 엔터티에 같은 아이디를 가진 사람이 어러 명이라면 로그인을 했을 때 이 사람이 누구인지 식별하는 것이 불가능
상품 엔터티의 경우 상품명이 동일한 상품이 존재할 수 있으므로 별도의 상품 코드를 발번하여 인스턴스를 식별 가능하도록 설계하는 것이 좋다.
✅ 영속적으로 존재하는 2개 이상의 인스턴스
현재 인스턴스가 1개만 존재하고 앞으로도 쭉 1개만 존재할 예정이라면 이것은 엔터티로 볼 수 없다.
쇼핑몰에 ‘대표’ 라는 엔터티가 있다고 가정했을 때 현재 대표가 1명이고 앞으로도 쭉 1명일 예정이라면 이걸 굳이 엔터티로 만들 필요는 없다.
✅ 속성 필수
속성이 없는 엔터티는 깡통 휴대폰과 같다.
엔터티는 반드시 자신을 상세하게 나타낼 수 있는 속성을 가지고 있어야 한다.
✅ 다른 엔터티와 최소한 1개 이상의 관계
각각의 엔터티는 다른 엔터티와의 연관성을 가지고 있어야 한다.
- 회원 엔터티는 주문 엔터티와 관계를 가지고 있고 주문 엔터티는 상품 엔터티와 관계를 가지고 있다.
공통코드, 통계성 엔터티의 경우 관계 생략 가능
엔터티 특징 | 설명 |
---|---|
식별자 | - 엔터티는유일한 식별자 가 있어야 한다. 예) 회원ID, 계좌번호 |
인스턴스 집합 | -2개 이상의 인스턴스 가 있어야 한다. 즉, 고객정보는 2명 이상 있어야 한다. |
속성 | - 엔터티는반드시 속성 을 가지고 있다. 예) 고객 엔터티에 회원 ID, 패스워드, 이름, 주소, 전화번호 |
관계 | - 엔터티는다른 엔터티와 최소한 한 개 이상 관계 가 있어야 한다. 예) 고객은 계좌를 개설한다. |
업무 | - 엔터티는업무에서 관리되어야 하는 집합 이다. 예) 고객, 계좌 |
릴레이션과 테이블, 인스턴스(instance)
릴레이션과 테이블은 같은 의미라고 해석하면 된다.
릴레이션에기본키
및 제약조건을 설정하면 테이블이 된다.
단,Relationship
은 릴레이션 간의관계
를 의미한다.
인스턴스는 릴레이션이 가질 수 있는 값
을 의미한다.
간단하게 말하면 행의 수를 의미한다.
💻 엔터티의 분류
엔터티의 분류는 유형과 무형에 따른 종류, 엔터티가 발생하는 시점에 따른 분류로 나누어진다.
엔터티를 유형과 무형으로 분류하는 기준은 물리적 형태의 존재 여부이다.
발생시점 : 기본(키), 중심, 행위
유무형 : 유형, 개념(무형), 사건
유형과 무형에 따른 엔터티 종류
유형 엔터티 | - 물리적인 형태 존재 , 안정적, 지속적 - 업무에서 도출퇴며 지속적으로 사용되는 엔터티 이다 예) 상품, 회원, 고객, 강사, 사원 등 |
개념(무형) 엔터티 | - 개념 엔터티는 물리적 형태가 없다 . - 개념적으로 사용되는 엔터티이다. 예) 부서, 학과, 거래소 종목, 코스닥 종목, 생명보험 상품 등 |
사건 엔터티 | - 비지니스 프로세스를 실행하면서 생성되는 엔터티 이다 - 행위를 함으로써 발생, 빈번함, 통계 자료로 이용 가능 예) 주문, 이벤트 응모, 체결, 취소주문, 수수료 청구 등 |
발생 시점에 따른 엔터티 종류
기본(키) 엔터티 | - 키 엔터티 라고도 한다. - 다른 엔터티로 부터 영향을 받지 않고 독립적으로 생성되는 엔터티 - 자식 엔터티를 가질 수 있음( 다른 엔터티의 부모역할을 하게됨 ) - 자신만의 주식별자를 가짐 예) 상품, 회원, 고객, 상품, 부서 등 |
중심 엔터티 | - 기본 엔터티와 행위 엔터티 간의 중간에 있는 것이다. - 즉, 기본 엔터티로부터 발생되고, 행위 엔터티를 생성하는 것이다. - 업무에 있어서 중심적인 역할을 하고 데이터의 양이 많이 발생 예) 주문, 계좌, 취소, 체결 등 |
행위 엔터티 | - 2개 이상 의 부모 엔터티로부터 파생 - 보통 설계 초기 단계보다는 상세 설계단계에서 많이 도출 - 데이터가 자주 변경되거나 증가할 수 있다. 예) 주문 내역, 이벤트 응모 이력 |
엔터티의 이름을 생성할 때 주의점
- 업무에서 실제로 쓰이는 용어 사용
약어로 사용하지 않고
영문은대문자
로 표기단수 명사
로 표현하고띄어쓰기는 하지 않음
유일성 보장
, 다른 엔터티와 의미상으로 중복될 수 없음(주문, 결제 엔터티는 중복될 수 있음)- 해당 엔터티가 갖고 있는 데이터가 무엇인지
명확하게 표현
🎯 추가 내용
교차 엔터티(Intersection Entity)
M:N(다 대 다)
관계일 경우 릴레이션 사이에 하나의 릴레이션이 더 필요한데 이를 교차 엔터티라고 한다.다대다(M:N) 관계를 해소하는 목적으로 인위적으로 만드는 것
엔터티의 배치
엔터티를 어디에 배치하는가에 대한 문제는 필수사항은 아님
보통 가장 중요한 엔터티를 왼쪽 상단에 배치하고, 이것을 중심으로 다른 엔터티를 나열하면서 전개하면 사람의 눈이 따라가기 편한 데이터모델을 작성할 수 있다.
가장 중요한 엔터티는 왼쪽 상단에서 조금 아래쪽 중앙에 배치하고 전체 엔터티와 어울릴 수 있도록 하면 향후 관련 엔터티와 관계선을 연결할 때 선이 꼬이지 않고 효과적으로 배치할 수 있다.
📚 레퍼런스
정미나. (유튜브 선생님에게 배우는) 유선배 SQL개발자(SQLD) 과외노트 / [정미나 저] (2023). Print.
한국데이터산업진흥원. SQL 자격검정 실전문제 : 국가공인 SQL전문가·국가공인 SQL개발자 / 한국데이터산업진흥원 [편] (2020). Print.