DB/data modeling

2. db 모델링 이론 _ ER 모델 구성 요소

wooweee 2023. 5. 26. 18:12
728x90

 

 

1. 엔티티

  • 현황:AS-IS
    • 개념 모델링 (분석)
    • 기존 ERD, DB
      • 업무 메뉴얼
      • 시스템 메뉴얼

 

  • ER 모델 구성 요소 : 엔티티, 관계, 속성
    • 엔티티 : 실제로 존재하는 실체이거나 ,  서비스, 조직, 직업처럼 개념적인 것

 

  • 엔티티와 엔티티 type
    • 엔티티 type: 사람 - table명 느낌이 강함
    • 엔티티 : 김철수  - instance 느낌이 강함

 

1.1. 엔티티 표기법

  • 기본 표기법

box 내부 가로선을 기준으로 pk(상) pk가 아닌 속성(하)

 

  • 엔티티 슈퍼타입 / 서브타입 표기법

일반화 - 중복부분 제거 반달모양으로 일반화를 표시

 

1.2. 일반화

  • 개념
    • 일반화: 엔티티 각각이 가지고 있는 고유한 특징을 일반화하여 공통의 속성으로 재정의 한 것
  • 종류
    1. 하위 수준 엔티티
    2. 상위 수준 엔티티

 

1.2.1. 하위 수준 엔티티 일반화

  • 설명
    • 방식1 : 개인, 법인에 찾아들어가서 고객 정보를 가져와야한다. 중복 존재가능성이 존재
    • 방식2 : 고객정보를 가지고 오기 쉽다. 고객 정보중 각 유형의 정보를 가지고 올 경우 join을 해야한다.
    • 반달에 x 표시는 배타적인 것을 의미

 

1.2.2. 상위 수준과 하위 수준 엔티티의 일반화

  • 대-중-소

  • 방식1 ( 추천 )
    • 정적=고정
    • 1단계 2단계 3단계로 추가 될 수 있다.
    • 해당 방식을 이용하는 것을 추천
  • 방식2
    • table이 자기자신과의 관계
    • self join

 

1.2.3. 고객 일반화

그런게 있다 정도

 

 

  • 배타 관계 주의점
    • system 구축시 배타 관계로 인해 UNION이나, Outer Join을 사용하는 경우가 종종 발생
    • 그렇게 하기 싫어서 통합 table 만드는 경우
      • 장점 : UNION 이나 Outer Join 할 필요 없이 개발 생산성이 증가 및 성능 향상 효과 기대
      • 단점 : FK 제약조건이나 Not Null 제약 조건을 반영할 수 없어서 데이터 무결성 문제가 발생

 

1.3. 특수화

  • 일반화의 반대 개념으로, 하나의 상위 수준 엔티티를 2개 이상의 하위 수준 엔티티로 분할하는 하향식 접근 방식

1.4. 집단화

 

1.5. 다양한 엔티티 분류

  • 엔티티 관계
    • 강한
    • 약한

  • 엔티티 형태
    • 독립 엔티티
    • 업무중심 엔티티
    • 종속 엔티티
    • 교차 엔티티
      • n : n 관계의 entity는 무조건 중복이 발생하는 문제가 생긴다. 따라서 교차 테이블을 이용해서 중복을 해소(반드시)해야한다.
      • 수강생(n) : 수강과목(n) - bad
        수강생(1) : [수강생, 수강 과목] (n) : 수강 과목 (1) 

교차 엔티티 중복 이상 현상

  • 엔티티 생성 관점
    • 핵심
    • 중요
    • 행위

  • 엔티티 유무형
    • 실체
    • 비실체
      • 개념
      • 사건

 

2. 관계 

  • 암기 3가지
    1. 관계수             1 : 1  or  1 : n 
    2. 관계 선택성    필수 값 혹은 선택 가능한 값
    3. 식별성            FK가 PK인 경우
  • 표기법

 

 

2.1. 관계수

  • 관계수 : 어떤 엔티티의 인스턴스 하나가 다른 엔티티 몇 개의 인스턴스와 대응될 수 있는지 표현 / 까마귀 발로 표현

  • 관계수 종류
  • 1:1 관계
    • 개인 정보 - 마이페이지
    • 관련 예제를 찾기가 힘듬 -> 거의 존재 안한다고 생각해도 될 듯

 

2.2. 관계 선택성

필수는 | 로만 표시

 

필수 선택 관계 : 자기존재 여부가 다른 table의 필수가 아닌 경우 자기 쪽에 O 표시

 

선택 선택 관계

 

2.3. 식별자

 

필수 선택 관계

  • 식별 관계 : pk=fk 인 경우 실선
  • 비식별 관계 : pk != fk인 경우, fk가 존재하지만 key로 사용 되지 않는 경우

 

 

2.4. 관계유형

  • 기본관계
  • 제귀적 관계
  • 병렬관계 : 엔티티와 엔티티 간에 2개 이상의 관계
  • 병렬관계와 엔티티 추가 설계: 병렬 관계가 너무 복잡할 경우 관계의 복잡도를 조금이나마 줄일려는 노력
  • 배타적 관계

 

2.5. 관계 차원

  • 단항, 이항, 삼항
  • 대부분 2항

 

 

3. 속성

  • 하나의 엔티티는 2개 이상의 속성을 가지며,
    1. 속성명
    2. 식별자 여부(pk or not)
    3. 옵셔널리티(not null)
    4. 도메인(속성이 가질 수 있는 범위 - check)

 

  • 도메인 : check로 범위 지정, 학년이면 1~6 학년, 시간이면 1~24h

 

  • 속성자의 값의 구성이나 성격에 따른 분류
    • 단순 속성 - 복합 속성(사실 복합 속성 같은 건 없다)
    • 저장 속성 - 파생속성 (중요)
    • 단일값 - 다중값

 

3.1. 파생 속성

  • 파생속성
    • 성능적인 목적 등 특수한 경우를 제외하고는 별도로 도출하지 않는 것 ;
    • 속성으로 저장하지 않는다.
    • 예 - 주문 금액 = 단가 * 수량
    • 위와 같은 계산 되어서 나오는 것은 저장할 필요가 없고 자주 바뀌기도 한다. - competed column이라고 한다.
    • 계산이 너무 복잡하여 성능이 나오지 않을 경우 저장하기도 한다.

 

3.2. 복합 속성

  • 다중 값
    • 원래는 안됨, 별도의 table로 분리가 원칙, 경우에 따라서 허용

 

4. 식별자

  • pk를 선택하는 것
  • 엔티티에서 인스턴스(row)를 개별적으로 식별할 수 있는 속성
  • 유일성(unique), 최소성(column 적게 만들기), 불변성(최대한 변경 불가), 존재성(not null)
  • 본질 식별자와 인조 식별자
    • 본질 식별자: 존재하는 column에서 선택
    • 인조 식별자: sequence