SQL 개발자(SQLD) 학습노트 - 데이터 모델링의 이해 (1)

@JHSHIN·2023년 3월 11일
0
post-thumbnail

Part 1 데이터 모델링의 이해


1. 모델링이란?

데이터베이스의 모델링이란, ‘현실 세계단순화하여 모델로 표현한 것’이다.
모델은 현실 세계를 표현해 놓은 모형이라고 보면 된다.

모델링의 특징

  • 추상화 : 현실 세계를 어떤 형식으로 표현하는 것
  • 단순화 : 정해진 표기법으로 단순하게 표현
  • 명확화 : 명확하게 해석할 수 있도록 표현

모델링시 지양해야 할 점

  • 중복 : 같은 데이터가 여러 엔터티에 중복으로 저장되는 현상
  • 비유연성 : 애플리케이션 변경에 데이터 모델이 수시로 변경되는 현상
  • 비일관성 : 다른 엔터티와의 연관성을 고려하지 않고 일부 엔터티만 변경

모델링을 할 때 세 가지 관점

  • 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지
  • 프로세스 관점 : 업무가 실제로 하는 일이 무엇인지, 무엇을 해야 하는지
  • 데이터와 프로세스의 상관 관점 : 업무에서 처리하는 일에 따라 데이터가 어떻게 영향을 받는지

모델링의 세 가지 단계

  • 개념적 데이터 모델링 : 추상화 레벨이 가장 높은, 업무 중심적이고 포괄적인 수준의 모델링
  • 논리적 데이터 모델링 : 데이터베이스 모델에 대한 Key, 속성, 관계 등을 모두 표현하는 재사용성이 가장 높은 모델링
  • 물리적 데이터 모델링 : 실제 데이터베이스의 성능, 가용성 등의 물리적인 성격을 고려하는 모델링

데이터의 독립성

데이터베이스에 대한 사용자 관점과 실제 표현되는 물리적 방식을 분리하기 위해, 스키마를 3단계 구조로 분리한다.

  1. 외부 스키마 : 각 사용자가 보는 데이터베이스의 스키마
  2. 개념 스키마 : 모든 사용자가 보는 전체 데이터베이스
  3. 내부 스키마 : 물리적인 저장 구조

→ 이를 통해, 데이터베이스의 독립성을 보장할 수 있다.

논리적 독립성 : 개념 스키마의 변경이 외부 스키마에 영향을 주지 않는다.
물리적 독립성 : 내부 스키마의 변경이 다른 스키마에 영향을 주지 않는다.

2. 엔터티(Entity)란?

💡 데이터베이스에서 엔터티는 식별이 가능한 객체를 의미한다.

엔터티의 특징

  • 실질적으로 업무에서 사용되는 정보여야 한다.
  • 유일성을 보장하는 식별자가 있어야 한다.
  • 2개 이상의 인스턴스를 가져야 한다.
  • 속성을 반드시 가지고 있어야 한다.
  • 다른 엔터티와 1개 이상의 관계를 가져야 한다.

엔터티의 분류

  1. 유형 vs 무형
    • 유형 엔터티 : 물리적 형태 존재 (e.g. 회원)
    • 개념 엔터티 : 물리적 형태 없음 (e.g. 학과)
    • 사건 엔터티 : 행위를 통해 발생 (e.g. 주문)
  2. 발생시점
    • 기본 엔터티 : 독립적으로 생성, 자식 엔터티를 가질 수 있음 (e.g. 회원)
    • 중심 엔터티 : 기본 엔터티로부터 파생, 업무의 중심적 역할을 함, 데이터가 많이 발생 (e.g. 주문)
    • 행위 엔터티 : 2개 이상의 엔터티로부터 파생, 자주 변경되거나 증가 (e.g. 주문 내역)

3. 속성이란?

속성은 사물이나 개념의 특징을 설명해줄 수 있는 항목들을 말한다.
예를 들어 ‘사람’이라는 엔터티는 이름, 생년월일, 키, 몸무게 등이 있다.

속성은 의미상 더 이상 나누어지지 않아야 하며, 작업에 필요한 항목이어야 한다.
속성은 한 개의 속성값을 가지며, 여러 속성값을 갖는 경우 별도의 엔터티로 분리해야 한다.

엔터티 > 인스턴스 > 속성

  • 한 개의 엔터티두 개 이상의 인스턴스를 갖는다.
  • 한 개의 인스턴스두 개 이상의 속성을 갖는다.
  • 한 개의 속성하나의 속성값을 갖는다.

속성의 분류

  1. 특성에 따른 분류
    • 기본속성 : 업무 프로세스 분석으로 바로 정의할 수 있는 속성 (e.g. 이름)
    • 설계속성 : 설계 중 필요에 따라 도출한 속성 (e.g. 학번)
    • 파생속성 : 다른 속성을 변형하여 생성한 속성 (e.g. 주문 횟수)
  2. 구성방식에 따른 분류
    • PK 속성 : 엔터티의 인스턴스를 식별할 수 있는 속성
    • FK 속성 : 다른 엔터티의 속성에서 가져온 속성
    • 일반 속성 : 나머지 속성

도메인이란, 속성이 가질 수 있는 속성값의 범위를 의미한다.

4. 관계란?

관계는 엔터티와 엔터티와의 관계를 의미한다.

존재 관계 vs 행위 관계

존재 관계는 존재 자체로 연관성이 있는 관계 (e.g. 학생과 학과)

행위 관계는 특정한 행위로 연관성이 생기는 관계 (e.g. 학생과 출석부)

표기법

  • 관계명 : 관계의 이름
  • 관계차수 : 관계에 참여하는 수
  • 관계선택사양 : 필수 or 선택 여부

5. 식별자란?

식별자는 속성 중 각각의 인스턴스를 구분 가능하게 만들어주는 속성을 의미한다.

주식별자 (Primary Key)

주식별자는 기본키에 해당하는 속성이다. 하나의 속성이 주식별자가 될 수 있고, 여러 개의 속성이 주식별자가 될 수 있다.

특징

  • 유일성 : 각 인스턴스가 식별이 가능하도록 한다.
  • 최소성 : 유일성을 보장하는 최소 개수의 속성이어야 한다.
  • 불변성 : 속성값이 변하지 않아야 한다.
  • 존재성 : 속성값이 NULL일 수 없다.

식별자 분류 방식

  1. 대표성 여부
    • 주식별자(Primary Key) : 대표 식별자, 다른 엔터티와 참조 관계로 연결
    • 보조식별자 : 대표 식별자가 아님, 다른 엔터티와 참조 관계로 연결되지 않음
  2. 스스로 생성되었는지 여부
    • 내부식별자 : 엔터티 내부에서 스스로 생성된 식별자
    • 외부식별자 : 다른 엔터티에서 온 식별자
  3. 단일 속성의 여부
    • 단일식별자 : 하나의 속성으로 구성된 식별자
    • 복합식별자 : 두 개 이상의 속성으로 구성된 식별자
  4. 대체 여부
    • 원조식별자 : 업무 프로세스에 존재하는, 가공되지 않은 식별자
    • 대리(인조)식별자 : 주식별자의 속성이 여러 개일 때, 하나로 묶어서 사용하는 식별자

식별자 관계 vs 비식별자 관계

  1. 식별자 관계
    • 부모 식별자 = 자식 주식별자인 관계, 주식별자는 반드시 존재해야 하므로 부모 엔터티가 있어야 자식 엔터티가 생성 가능
  2. 비식별자 관계
    • 부모 식별자 ≠ 자식 주식별자인 관계, 부모 엔터티가 없는 자식 엔터티 생성이 가능
profile
We Need Better UX

0개의 댓글