데이터 모델링은 업무와 영속 데이터를 구조화, 형상화하는 과정을 의미한다.

목적

  1. 영속 데이터를 이해한다.
  2. 업무 내용과 절차를 DB를 통해 관리하고 활용한다.

데이터 모델링 작업은 엔티티, 속성, 관계로 데이터들을 형상화하는 과정이다.

엔티티는 속성보다 포괄적이다. 속성은 단일 정보다.

ER 모델 : 업무를 개체와 관계로 표현한 모델.

ERD: ER 모델을 도형화 한 것. ⇒ 모델의 실체와 관계가 잘 보인다.


특성

  1. 완전성 : 모든 업무사항을 표현.

→ 상품 단가가 변경되면 상품 수량과 상품 금액을 같이 관리. 2.정확성 : ER 모델 개념을 그대로 정확하게 구현한다.

→ 3.최소성 : 오직 한번, 중복 없이 표현한다.

→부서에서는 직원 수 속성이 필요 없다. 4.자명성 : 설명, 증명 없이도 의미를 알 수 있도록

→주문자 ≠ 수령자를 대비해 배송정보를 별도로 관리한다. 5.확장성 : 유연한 확대, 변경 → 엔티티를 일반화하여 통합한다. 6. 표현성 : iv 이름짓듯이 구체적으로 작명한다. 7.가독성

ER 모델 구성 요소 엔티티(==클래스) 업무에 필요한 모든 집합적인 것 최소 둘 이상의 인스턴스, 속성이 필요함. 각 인스턴스를 식별할 수 있는 속성이나 관계 1개 이상 정의

일반화 : 여러 개의 엔티티를 하나의 공통된 엔티티로 만드는 것(개인과 기업 → 고객) 특수화 : 하나의 상위 엔티티를 두 개 이상의 하위 수준 엔티티로 분할.(통합 테이블 설계 형태) 집단화 : 하나의 엔티티로 취급되는 두 개의 엔티티의 관계를 상위 수준 엔티티로 대체함. (고객과 상품 → 주문 상품)

엔티티 형태 독립 엔티티 : 고객, 상품. 업무중심 엔티티 : 주문, 결제 종속 엔티티 : 주문상품, 주문배송 교차 엔티티 : m : n 관계 해소하는 중간 역할.

관계 관계수 : 까마귀발 1 : 1 → 직원과 인턴 과정 1 : m → 부서와 직원 m : n → 학생과 수강과목

선택성 : 필수(|)인지 선택(O)인지 필수 : 필수 → 주문과 주문상품 필수 : 선택 → 고객과 주문 선택 : 선택 → 사원과 계좌

식별자 상속 : FK를 식별자로 상속받으면 식별관계 , 일반 속성으로 받으면 비식별 관계(다른 주제영역 엔티티 간의 참조 관계) 식별 → 고객 주소와 고객 비식별 → 고객과 주문 비식별 → 고객 주소와 고객.

관계명 : 관계 의미, 이름 표시. 기본 관계 (1:1, 1: m): 부서와 사원

재귀적 관계 : 자기 자신과 관계맺기(Optional) → 상위부서는 여러 하위부서로 이루어짐.

병렬 관계 : 관계가 소수일때 사용. → 고객과 보험계약, 피보험자 보험자 둘 다 가능.

단항 관계 : 재귀적 관계, self-join 이항 관계 : 일반적 관계. 삼항 관계 : 교차 엔티티 추가하여 표현(매우 레어, 이항 아닌지 체크해야한다.)

속성 : 데이터를 표현하는 가장 작은 단위 (가급적 한 속성에 여러 값을 넣지 않는다) 엔티티 특성, 상태를 나타낸다(==iv). 1엔티티 ⇒ 2+속성 속성명 → 의미가 명확하며 함축성 있는 명사로. 식별자여부 → 엔티티 식별자에 해당하나 확인. 옵셔널리티 → 필수인지 선택인지 또는 조건인지. 도메인 : 속성이 허용하는 데이터 형식과 범위.

단순 속성(분해 불가능, 이메일)과 복합 속성(고객 주소) 저장 속성(원래 존재)과 파생 속성(다른 컬럼에 의해 만들어짐, 주문 금액) 단일 값 속성(1속성 1값)과 다중 값 속성(1+ 값, 정규화로 엔티티 분리)

식별자 : 주문 엔티티의 주문번호처럼 엔티티에서 인스턴스를 개별적으로 식별할 수 있는 속성들.

  1. 유일성 2.최소성(최소 속성으로 식별자를 구성해야 한다) 3.불변성(key는 바뀌면 안됨) 4.존재성 자연스럽게 가지는 특성은 본질 식별자, 시스템에서 필요에 의해 추가한 속성이면 인조 식별자다. 인조 식별자는 의미 없는 값일 가능성이 높음.

[여기는 그림을 붙여넣고 공부하는 게 나을 것 같다?] 슈퍼키 : 튜플 고유 식별 속성 집합 후보키 : 모든 후보 키는 슈퍼 키이지만, 모든 슈퍼 키는 후보 키가 아니다.(포함관계) 기본키(PK) : 유일성, 최소성 가지는 후보 키 하나. 대체키: 후보 기본키가 아닌 나머지 후보 키. 외래키(FK): 한 속성 값이 다른 속성의 기본 키를 참조. (Null, Dupli가능)

키 제약조건: 유일, 중복 값 없어야 한다. 실체무결성 : Not Null, Unique 영역무결성 : 정의된 도메인(범위)값일 것. 참조무결성(FK): 자식 외래키는 부모 기본키 값 외에는 안됨.

함수 종속성: 무결성 제약조건으로서 키의 개념을 일반화. (결정자X와 종속자Y) 부분 함수종속(중복이 가능) : 여러 개의 속성이 모여서 하나의 기본키를 이룰 경우, 기본키를 구성하는 일부 속성만으로도 종속관계가 결정 이행적 함수종속 : X → Y , Y→ Z ⇒ X → Z(X와 Z의 관계)

정규화: 중복을 줄이려고 더 작게 테이블을 쪼개는 것. 장점

  1. 중복 제거
  2. 데이터 구조 변경 시 유연함.
  3. 개념에 대한 재활용성 증가
  4. 중복 최소화, 데이터 품질 문제 줄임, 저장 공간 최소화
  5. 입력,수정,삭제 작업 최소화 → 작업 수행속도 향상.

데이터 모델링은 업무적 개념을 정의하는 과정, 정규화된 형태를 이미 거침. 제1 정규형 : 중복이 없고 원자값을 가져야 한다. 중복 열보다 다중 값이 나음🙂 중복과 다중 값을 가지면 컬럼 분리한다. 제2 정규형 : 후보 키에 미종속이거나 일부 속성만 종속인 어트리뷰트를 분리 제3 정규형 : 키가 아닌 어트리뷰트들끼리 종속이 아님.