[SQLD] #1-1. 데이터 모델링의 이해

wonnie1224·2022년 9월 1일
0

DB

목록 보기
2/3

1. 데이터 모델의 이해

1) 모델링이란?

  • 모델 : 현실 세계에서 일어날 수 있는 다양한 현상에 대해 일정한 표기법에 의해 표현해 놓은 모형
  • 모델링 : 현실 세계에서 필요한 데이터를 저장하는 DB를 구축하기 위한 분석 / 설계의 과정

< 모델링이 갖춰야 할 조건 >

  • 현실세계 반영
  • 단순화하여 표현
  • 관리하고자 하는 데이터를 모델로 설계

2) 모델링의 특징

(1) 추상화(Abstraction) : 현실 세계를 일정한 형식으로 표현하는 것, 아이디어 / 개념을 간략하게 표현하는 과정
(2) 단순화(Simplification) : 복잡한 현실 세계를 정해진 표기법으로 단순 & 쉽게 표현하는 것
(3)
명확화(Clarity)** : 불분명함을 제거, 명확하게 해석할 수 있게 기술하는 것
=> 모델링 : 현실세계를 추상화, 단순화, 명확화하기 위해 일정한 표기법에 의해 표현하는 기법

3) 모델링의 3가지 관점

(1) 데이터 관점(What, Data) : 데이터 & 업무 / 데이터 간에 어떤 관계가 있는지에 대해 모델링
(2) 프로세스 관점(How, Process) : 업무가 실제로 처리하고 있는 일은 무엇인지 / 앞으로 처리해야 하는 일은 무엇인지 모델링
(3) 데이터 & 프로세스의 상관 관점(Data vs. Process, Interaction) : 프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지 모델링

4) 모델링의 3가지 단계

(1) 개념적 데이터 모델링(Conceptual Data Modeling)

  • 전사적 데이터 모델링 수행 시 사용
  • 추상화 레벨이 가장 높은 모델링
  • 업무 중심적, 포괄적인 수준의 모델링

(2) 논리적 데이터 모델링(Logical Data Modeling)

  • 재사용성이 가장 높은 모델링
  • 데이터 모델에 대한 key, 속성, 관계 등 모두 표현함

(3) 물리적 데이터 모델링(Physical Data Modeling)

  • 실제 DB로 구현 가능하게 성능 / 가용성 등 물리적인 성격 고려하여 모델 표현함

5) 데이터의 독립성 (ANSI-SPARC 아키텍처)

(1) 3단계 스키마 구조

💡 분리한 이유?
DB에 대한 사용자들의 관점 & DB가 실제로 표현되는 물리적 방식 분리 => 독립성 보장하기 위해

  • 외부 스키마
    - 사용자의 관점 단계
    • 각 사용자가 보는 DB의 스키마를 정의
  • 개념 스키마
    - 통합된 관점 단계
    • 모든 사용자가 보는 DB의 스키마를 통합하여 전체 DB를 나타내는 것
    • DB에 저장되는 데이터들 표현 & 데이터들 간의 관계 표현
  • 내부 스키마
    - 물리적인 관점 단계
    • 물리적인 저장 구조 표현
    • ex) 실질적인 데이터의 저장 구조 / 컬럼 정의 / 인덱스 등

(2) 3단계 스키마 구조가 보장하는 독립성

  • 논리적 독립성 (외부 - 개념) : 개념 스키마 변경 -> 외부 스키마 영향 X
    - 사용자 특성에 맞는 변경 가능, 통합 구조 변경 가능
  • 물리적 독립성 (개념 - 내부) : 내부 스키마 변경 -> 외부 / 개념 스키마 영향 X
    - 물리적 구조, 개념 구조 상호간 영향 없이 서로 변경 가능

6) ERD(Entity Relationship Diagram)

  • 시스템에 존재하는 엔터티들 & 그 엔터디들 간 관계 나타내는 다이어그램

(1) ERD 표기 방식

IE/Crow's Foot 표기법

테이블의 첫번째 행 : PK(기본키), 두번째 행 : FK, 일반 컬럼

(2) ERD 작성 순서

엔터티 도출하고 그림
엔터티 적절하게 배치
엔터티 간의 관계 설정
관계명 기입
관계의 참여도 기입
관계의 필수 / 선택 여부 기입


2. 엔터티 (Entity)

1) 엔터티란?

  • 식별할 수 있는 사물
  • DB 내에서 식별이 가능한 객체
  • 정보 저장할 수 있는 어떤 것
  • 정보 저장할 수 있는 사람, 장소, 물건, 사건, 개념 등
  • 엔터티 : 테이블
  • 인스턴스 : 로우
  • 속성 : 컬럼

2) 엔터티의 특징

  • 업무에서 쓰이는 정보여야 함
  • 유일한 식별자로 식별 가능해야 함
  • 2개 이상의 인스턴스 가져야 함
  • 반드시 속성을 가져야 함
  • 다른 엔터티와 1개 이상의 관계 가지고 있어야 함

3) 엔터티의 분류

< 유형 vs. 무형 >

  • 유형 엔터티 : 물리적 형태 O, 안정적, 지속적
    - ex) 상품, 회원
  • 개념 엔터티 : 물리적 형태 X, 개념적
    - ex) 부서, 학과
  • 사건 엔터티 : 행위함으로써 발생, 빈번함, 통계 자료로 이용 가능
    - ex) 주문, 이벤트 응모

< 발생시점 >

  • 기본 엔터티 : 독립적으로 생성됨, 자식 엔터티 가질 수 있음
    - ex) 상품, 회원
  • 중심 엔터티 : 기본 엔터티로부터 파생, 행위 엔터티 생성
    - ex) 주문
  • 행위 엔터티 : 2개 이상의 엔터티로부터 파생
    - ex) 주문 내역, 이벤트 응모 이력

4) 엔터티의 명명

  • 업무에서 실제로 쓰이는 용어 사용
  • 한글은 약어 사용 X, 영문은 대문자로 표기
  • 단수 명사 사용, 띄어쓰기 X
  • 다른 엔터디와 의미상으로 중복 불가능
  • 해당 엔터티가 갖고 있는 데이터가 무엇인지 명확하게 표현

3. 속성 (Attribute)

1) 속성이란?

  • 사물 / 개념의 특징을 설명해줄 수 있는 항목들
  • 엔터티의 특징을 나타내는 최소의 데이터 단위 (의미상 더 이상 쪼개지지 않는 레벨)

2) 속성값

: 엔터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터

  • 1개의 속성 - 1개의 속성값만 가짐
  • #개의 속성값 가지면 별도의 엔터티로 분리해야함

3) 엔터티, 인스턴스, 속성, 속성값의 관계

: 엔테티 > 인스턴스 > 속성의 관계가 성립 !

  • 1개의 엔터티는 2개 이상의 인스턴스를 가짐
  • 1개의 인스턴스는 2개 이상의 속성을 가짐
  • 1개의 속성은 1개의 속성값을 가짐

4) 분류

(1) 특성에 따른 분류

속성 종류특징
기본속성 (Basic)업무 프로세스 분석을 통해 바로 정의가 가능한 속성
ex) 주민등록번호
설계속성 (Designed)업무에 존재하지 않지만 설계하다 보니 필요하다고 판단되어 도출해낸 속성
ex) 학번 (학생들을 학과로만 판별 불가능해서 설계함
파생속성 (Derived)다른 속성의 속성값을 계산 / 특정 규칙으로 변형하여 생성한 속성

(2) 구성방식에 따른 분류

속성 종류특징
PK(Primary Key)속성엔터티의 인스턴스들을 식별할 수 있는 속성 (= 각 인스턴스에 유니크함을 부여해줌)
ex) 상품 엔터티의 상품코드, 학생 엔터티의 학번
FK(Foreign Key)속성다른 엔터티의 속성에서 가져온 속성 (= 다른 엔터티와 관계를 맺게 해주는 매개체 역할)
ex) 직원 엔터티의 부서코드, 학생 엔터티의 학과코드
일반속성PK, FK를 제외한 나머지
ex) 상품 엔터티의 상품명 & 가격, 학생 엔터티의 이름 & 생년월일

5) 도메인 (Domain)

: 속성이 가질 수 있는 속성값의 범위
ex) 우편번호 - 5자리의 숫자
엔터티 정의할 때 데이터 타입, 크기로 나타낼 수 있음

+) 용어사전 : 엔터티의 속성명 정의할 때 명확한 의미 이름 부여, 다른 엔터티와의 혼란 예방, 각 엔터티에 공통된 룰 적용


4. 관계

1) 관계란?

엔터티 - 엔터티의 관계, 어떤 연관성이 있는지 분류함

2) 존재 관계

: 존재 자체로 연관성 있는 관계
ex) 엄마 - 아기, 직원 - 부서, 학생 - 학과

3) 행위 관계

: 특정한 행위를 함으로써 연관성이 생기는 관계
ex) 회원 - 주문, 학생 - 출석부

4) 표기법

관계명엔터가 어떠한 관계를 맺고 있는지 나타내주는 현재형의 문장, 각 관계는 2개의 관계명 및 관점 가짐(각 엔터티의 관점들)
관계차수관계에 참여하는 수
1:1, 1:M, N:M
관계선택사양필수 / 선택인지의 여부
ex) 필수 : 주문 - 주문 상품
선택 : 학생 - 출석부

5) 식별자

(1) 식별자란?

: 각각의 인스턴스를 구분 가능하게 만들어주는 대표적인 속성

(2) 주식별자

: 기본키, FK에 해당하는 속성

  • 1개 / #개의 속성이 주식별자가 될 수 있음

유일성 : 주식별자에 의해 엔터티 내의 모든 인스턴스들에 유니크함을 부여하여 식별 가능하게 함
최소성 : 주식별자를 구성하는 속성은 유일성을 보장하는 최소 개수의 속성이어야 함
불변성 : 주식별자의 속성값이 되도록 변하지 않아야 함
존재성 : 주식별자의 속성값이 NULL X

(3) 분류

  • 대표성 여부
    주식별자 : 다른 엔터티와 참조 관계로 연결
    보조식별자 : 인스턴스를 식별 가능, BUT 대표 식별자 아님
    다른 엔터티와 참조 관계로 연결 X

  • 스스로 생성됐는지 여부
    내부 식별자 : 엔터티 내부에서 스스로 생성된 식별자
    외부 식별자 : 다른 엔터티에서 온 식별자, 다른 엔터티와의 연결고리 역할

  • 단일 속성의 여부
    단일식별자 : 속성 1개
    복합식별자 : 속성 2개 이상

  • 대체 여부
    원조식별자(본질) : 업무 프로세스에 존재하는 식별자, 가공되지 X 원래의 식별자
    대리식별자(인조) : 주식별자의 속성이 2개 이상 -> 그걸 하나로 묶어서 사용하는 식별자

(4) 식별자 vs. 비식별자 관계

식별자 관계비식별자 관계
강한 관계약한 관계
부모 엔터티의 식별자가 자식 엔터티의 주식별자부모 엔터티의 식별자가 자식 엔터티의 일반 속성
부모 엔터티가 있어야 생성 가능부모 엔터티 없는 자식 엔터티 생성 가능
실선으로 표현점선으로 표현
profile
안녕하세요😊 컴퓨터비전을 공부하고 있습니다 🙌

0개의 댓글