데이터 모델링의 구성요소에는 개체(Entitiy) 속성(Attribute) 관계(Relationship) 가 있다.
1️⃣ 개체 (Entity)
- Table
- DB에서 Entity는 식별이 가능한 객체라는 의미를 가진다.
Entity 특징
-
의미있는 정보이어야한다
ex) 쇼핑몰이니 당연히 쿠폰을 발급할 것이라고 예상하고 '쿠폰' Entity를 도출해 놓았지만 실제로는 쿠폰을 발급하지 않는다면, 이는 불필요한 Entity로 제거 대상이다.
-
유니크한 식별자가 존재한다
ex) 상품코드, 학번
-
2개 이상 인스턴스를 가진다
ex) 현재 Entity에는 데이터가 1개만 존재하고 앞으로도 1개만 존재한다면 이는 불필요한 Entity로 제거 대상이다. (Entity는 2개이상의 인스턴스 집합체)
-
반드시 2개 이상 속성(Attribute)를 가진다
Entity는 반드시 자신을 상세하게 나타낼 속성을 가지고 있어야 한다.
-
다른 Entity와 1개 이상의 관계를 맺는다
각각의 Entity는 다른 Entity와 연관성을 가지고 있어야 한다.
여기서 인스턴스란 Table의 Row와 같은 개념이다.
⭐️ Entity의 분류
유형 vs 무형에 따른 분류
- 유형 엔티티 : 물리적인 형태
- 개념 엔티티 : 물리적인 형태 없음, 개념적
- 사건 엔티티 : 행위를 함으로써 발생
발생시점에 따른 분류
- 기본 엔티티 : 주식별자, 독립적, 자식 엔티티 가질 수 있음 (ex. 상품)
- 중심 엔티티 : 기본 엔티티로부터 파생, 행위 엔티티를 생성, 핵심역할 (ex. 주문)
- 행위 엔티티 : 2개 이상 엔티티로부터 파생 (ex. 주문내역)
Entity 명명규칙
- 가능하면 현업업무에서 사용하는 용어를 사용
- 가능하면 약어를 사용하지 않는다
- 단수명사를 사용한다
- Entity명은 중복되면 안된다
- Entity 생성의미대로 이름을 부여한다
2️⃣ 속성 (Attribute)
- Column
- 의미상 더이상 쪼개지지 않는 레벨
- 프로세스에 필요한 항목이어야 한다.
- 더 이상 분리되지 않는 최소의 데이터 단위
Attribute 특징
- 1개 속성은 1개 값만 가질 수 있다.
⭐️ Attribute의 분류
특성에 따른 분류
- 기본 속성 (Basic Attribute) : 업무 분석을 통해 정의
- 설계 속성 (Designed Attribute) : 설계 단계에서 필요하다고 판단되어 정의
- 파생 속성 (Derived Attribute) : 계산 또는 규칙으로 인해 생성한 속성 - ex. 합계, 평균치
구성방식에 따른 분류
이건 흔히 아는 분류이다.
1. PK 속성
1. FK 속성
1. 일반 속성
3️⃣ 관계 (Relationship)
- Entity와 Entity와의 관계를 의미 (매핑)
Relationship 분류
- 존재 관계 : ex. 직원/부서, 학급/학생
- 행위 관계 : ex. 학생/출석, 회원/주문
- 데이터 모델링에서는 존재와 행위 관계를 구분할 수 없다.
- UML에서는 연관과 의존관계에 대한 표기법이 존재한다.
Relationship 표기법
- 관계명 (Membership) : 관계의 이름, 명확한 문장, 현재형
- 관계차수 (Cardinality) : 관계에 참여하는 수, 관계의 기수성 , 1:1, 1:M, M:N
- 선택사양 (Optionality) : 필수 여부
⭐️ 관계 체크 사항
- 두 개 Entity 사이 연관규칙 존재 여부
- 두 개 Entity 사이 정보의 조합 발생 여부
- 업무기술서, 장표에 관계연결을 가능하게하는 동사 여부
- 업무기술서, 장표에 관게연결에 대한 규식 서술 여부
4️⃣ 기타
도메인 (Domain)
속성이 가질 수 있는 값의 범위
속성에 대해 구체적으로 정의함 -> 각 속성에 대해서 어떤 유형의 값이 들어가는지 명확하게 정의하는 개념
용어사전
Entity, Attribute 이름 정의시 공통된 룰 적용을 위한 사전
식별자 (Identifiers)
각각의 인스턴스를 구분 가능하게 만들어주는 대표 속성
우리가 아는 PK.
식별자 특징
- 유일성 : Entity전체에서 유니크해야함
- 최소성 : 유일성을 보장하는 최소 개부의 속성이어야 함
- 불변성 : 변하지 않는 값
- 존재성 : Not Null
⭐️ 식별자 분류
- 주 식별자 : 식별자 특징을 모두 가진 대표 식별자, 다른 Entity와 참조관계
- 보조 식별자 : 인스턴스를 식별할 수 있지만 대표 식별자가 아님, 다른 Entity에서 참조하지 않음
- 내부 식별자 : Entity 내부에서 스스로 생성된 식별자
- 외부 식별자 : 다른 Entity에서 온 식별자 (참조)
- 단일 식별자 : 하나의 속성으로 구분된 식별자
- 복합 식별자 : 2개 이상 속성으로 구분된 식별자
- 원조 식별자 : 가공되지 않은 원래의 식별자
- 대리 식별자 : 주 식별자의 속성이 두개이상인 경우 그것들을 하나로 묶어서 사용하는 식별자 (인조 식별자)
Reference