데이터 모델링의 설계 단계의 논리적 모델링에 대해 다루겠다.
논리적 모델링의 핵심 키워드 및 암기 사항
- 논리적 모델링 특징 : 업무적 상세함
- 엔티티 정의 : 엔티티 종류 5개, 행위 엔티티 유형 4가지, 이력 엔티티의 관리 분류 기준,
- 관계 정의 : 관계 종류 -2, 관계 중요 구성 -3
- 속성 정의 : PK 특성 4가지, PK, FK 정의 및 기능, 인조 식별자 사용 상황 -4
논리적 모델링
- 엔티티 도출 및 정의 ⇔ Class
- 관계 도출 및 정의 ⇔ Relationship
- 속성 도출 및 정의 ⇔ iv ( iv의 타입, 이름, 제약조건)
특징
- 명확, 구체적
- 시스템 측면에서 명확하다
- 개념 모델링과 논리 모델링 사이를 계속 왔다갔다 함.
엔티티 도출 및 정의
핵심 엔티티 key entity 판단 기준 -4 ⭕ 암기
- 유형 및 분류 Type & Category
- Type : 코드 데이터
- 단일 레벨로 구분. 열거형 속성
- ex. 고객 유형 코드 : 개인(01), 법인(02), VIP(03)
- 코드 사용이유: 저장공간 줄어듦, 통계, 정렬 용이
- Category : 분류. ex. 대, 중, 소
- 다단계(계층적) 카테고리 정보를 관리하기 위한 속성
- ex. 대 001, 중 01, 02 .. (동일 계층 안 내용들을 열거형 이라 부르지 않음. )
- Type : 코드 데이터
- 업무 규칙 및 지식 Rule & Knowledge
- ex. 회원등급
- 업무 행위, 사건, 이벤트 → 5W1H 로 정의가능이벤트 : 봄맞이, 졸업맞이
- 사건 : 오배송
- ex. 고객은 7일 이내 환불해야한다. - 법
- 업무 주체 및 대상 Subject & Object
- 업무 주체 : who
- 대상 : what
- 장소 where
중요 엔티티 main entity
정의
- 핵심 엔티티의 종류인 업무 주체(subject )와 업무 대상(obejct)의 업무 행위로 생긴 엔티티
특징
- 주요 업무에서 자주 발생되는 데이터 관리
- ex. 주문, 배송, 발주
행위 엔티티 action entity 유형 -4 ⭕ 암기
- 중요 엔티티를 중심으로 x4 엔티티 생성
- 상세, 상태, 이력은 기본으로 있어야함.
- 이미 정해진 엔티티를 역할에 따라 그룹화
- 핵심 엔티티는 최종 상태만 저장됨.
- 대부분 테이블에 상태 엔티티(테이블) 필요함
ex. 배송완료
- 상세
- 핵심, 중요 엔티티를 특정 기준으로 그룹화 한 엔티티
- 상태 ⭕ 필수
- 계속 바뀜. 값은 사전에 업무적으로 정해진 값 사용
- 대부분 테이블이 상태 테이블 필요
- 이력
- 시간의 흐름 내포
- 값의 변경이 없을 수 있음. 상태의 값이 바뀌는 걸 계속 기록하기 때문
- 어디가 변경되면 이력 엔티티가 변경이 되는가? 상태 엔티티
- ex. 주문 완료 → 배송 완료
- 특정 시점의 데이터로 되돌릴 수 있음
- 속성 전체 or 일부 대상 관리
- 변경 시점 관리
- 점이력 . 시점
- 선분 이력. from ~ to 관리 ex. 가격
- 교차
이력 관리 -5 ⭕ 중요.
- 일부 속성
- 전체 속성
- 점 이력
- 선분 이력
- 현재 상태(최종 상태) 포함
관계 도출 및 정의
관계 종류 -2 ⭕ 암기
- 상속 관계 PK, FK (종속)
- 참조 관계 (포함)
- 식별
- 비식별
관계 표현 방식 -3 ⭕ 암기
- 관계수 1: N
- 필수 선택 (O,X)
- 식별/비식별 FK&PK
- 식별 : 상속을 통해 FK가 PK가 되는 것
관계 정의
- 관계수, 필수 선택, 식별자 상속를 정의
M:N 관계
- 데이터 중복 발생하여 새로운 테이블을 추가해 관계 개션 필요
- 관계 테이블 (= 교차 테이블)
- 두 테이블 간 의 관계 엔티티. 중복 제거함.
- 급하진 않으니 M:N 다대다로 관계를 지정했다가 향후 바꿔도 됨.
속성 도출 및 정의
- PK를 맨위에 적고, 아래에는 비슷한 걸 그룹화함
🔵 [설계] 엑셀에 최대한 자세히 적고, 안써도 되는 속성까지 모두 넣고, 필요없으면 안쓰면 됨.
- 속성명은 자세히 작성
속성 정의
- 속성에 대한 설명
- 데이터 발생 규칙 작성
- 언제 테이블에 데이터가 들어가는가.
- 언제 객체를 생성하는가
식별자(PK) 지정
종류
- 본질 식별자
- data 의미가 있음. O
-
- sequence로 만듦
- data 자체가 의미 없음 X인조 식별자
인조 식별자 사용 상황 ⭕ 중요.암기
1. 엔티티 통합
- 여러 엔티티를 통합할 때 통합 엔티티에서 각 엔티티 PK 중 뭘 PK로 선택할지 모를때
2. 식별자 상속으로 Key 개수 줄일 때
- 엔티티 상속을 하면 Key 개수가 증가하여 인조키로 대체함
- 기존 PK(기존 엔티티 속성 및 FK)를 NOT NULL로 내리고, 인조키 추가
3. 암호화된 식별자 대신
- ex. 카드번호
4. 업무상 편의
- 실무상 PK를
- NULL로 저장했다가 향후에 값을 넣어야하는 경우 있음
- ex. 사업자등록번호가 PK일 때, 돈은 받았는데 사업자 등록 번호 등록전에 물건을 보내야하는 경우
키 특징 ⭕ 암기
- 불변성
- 최소성 min
- 유일성 unique
- 존재성 not null
데이터 표준화
표준 도메인
- 자주 쓰는 타입을 일관되게 사용하는 것.
ex. 금액, 수량, 설명
- 금액 10자리, 수량 5자리
- 설명 VARCHAR
- 긴 설명 VARCHAR(500), 중간 VARCHAR(100), 짧은 VARCHAR(50)
도메인 표준화
- 표에 있는 걸로 사용하고 필요 시 추가 정의
코드 테이블을 하나로 합친 것 ⭕ 중요
- 코드 유형 ID가 PK, Type이 됨.
- 사용 여부 (Y,N), 정렬 순서 필요
코드 체계 ⭕중요
- 분류형 : 코드를 만들 때 부모 코드를 포함해 자식 코드를 만듦
- 파일 경로 형식 “/aaa/bbb/test.*” 부모코드
- 트리로 표현이 쉬움
참고
- <핵심 데이터 모델링, 유동오, DBian>
'Database' 카테고리의 다른 글
[SQL튜닝] Ch01. SQL 처리 과정과 I/O (1) | 2025.05.18 |
---|---|
[Modeling] Ch02.개념 모델링 (0) | 2025.05.12 |
[Modeling] Ch01. 데이터 모델링 이론 (0) | 2025.05.12 |
[Database] Ch10.Dictionary (0) | 2025.05.11 |
[Database] Ch11.DDL 데이터 정의어 (0) | 2025.05.11 |