📌 데이터 모델링이란?
현실세계의 복잡한 대상을 단순하게 표현하기 위해 추상화, 단순화, 명확화하여 일정 표기법으로 표시하는 것으로 계획/분석/설계 시 업무분석 및 설계, 설명에 사용, 구축/운영 시에는 변경, 관리 목적으로 사용
📍 개념적 모델링 순서
- 엔터티를 그린다. (보통 중요한 엔터티를 왼쪽 상단에 둔다)
- 엔터티를 적절하게 배치한다.
- 관계를 설정한다. (서로 관계가 있는 엔터티끼리 선으로 이어준다)
- 관계명을 기술한다. (ex. 소속되다, 보유되다 등)
- 관계의 참여도(Cardinality)를 기술한다. (참여도란 엔터티 안의 인스턴스들이 얼마나 참여하는지를 의미)
- 관계의 필수여부(Optionality)를 기술한다. (엔터티 안의 인스턴스들이 반드시 참여하는지를 의미, 최초 참여는 (ㅣ), 선택 참여는 (0으로 표시)
📍 논리적 모델링 순서
- 속성을 아래로 모두 입력한다.
- 각 엔터티에서 식별자를 선택한다.
- 정규화를 수행해 중복되는 데이터 입력이 없도록 한다.
- 관계설정(Foreign key)을 한다. (정규화로 쪼개진 대상들을 연결하기 위해 식별자를 빌려온다)
📌 ERD란?
엔터티와 엔터티 간의 관계를 발견하고 이를 그림(Diagram)으로 표현하는 행위로 개념적 데이터 모델링의 결과물이다.
📌 데이터 모델링의 중요성
파급효과 : 초반에 엉망으로 설계하고 개발하다가 나중에 엎게되면 수정이 힘들어짐
간결한 표현 : 서로 의사소통을 위해 모델링된 설계도(ERD 등)으로 쉽게 이해 가능
데이터 품질 : 애초에 데이터 모델링을 제대로 해야 이상한 데이터(데이터중복, 비유연성, 비일관성)가 안들어감
📌 논리적 모델링 표기법 2가지
📍 IE 표기법
- 구분된 선 위에는 PK(식별자)이다
- FK라고 붙은 속성은 빌려온 외래키(FK)이다
- 그 외 아무것도 안적힌 속성은 '일반속성'
- 관계차수나 관계선택사양은 그대로 작성
- 관계선이 점선이라면 '비식별자관계'
📍 Barker 표기법
- #은 PK(식별자)이다.
- O는 선택사항, * 은 필수사항임을 의미
- 관계차수나 관계선택사양은 그대로 작성
- 여기는 FK가 O이므로 '비식별자관계'임 (#이었으면 식별자관계)
📌 데이터베이스 3단계 구조
외부(External)스키마 : 여러 사용자 각각의 관점
개념(Conceptual)스키마 : 통합적, 조직 전체의 DB관점
내부(Internal)스키마 : 데이터 물리 저장 구조 표현
📌 식별자(Identifiers)란?
엔터티 내 유일하게 인스턴스를 식별할 수 있는 속성의 집합
📍 식별자 분류
대표성 여부 : 주식별자 VS 보조식별자
스스로 생성여부(자생여부) : 내부식별자 VS 외부식별자
단일속성여부 : 단일식별자 VS 복합식별자
대체여부 : 본질식별자 VS 인조식별자
📌 주식별자 도출기준
- 업무에서 자주 사용하는 속성일 것
- 명칭, 이름 등은 피할 것
- 속성의 수가 많지 않을 것
📌 주식별자 특징
- 유일성 : 인스턴스를 유일하게 식별하기
- 최소성 : 속성의 수가 많지 않기
- 불변성 : 가급적 변하지 않기
- 존재성 : 값이 꼭 입력되기