SQL

[이론] 데이터베이스 모델링, ERD

김디니 2022. 8. 23. 20:10

데이터베이스 모델링

 

개념적 데이터 모델링

  • 데이터의 요구사항 분석 과정
  • 핵심 개체 (Entity) 사이의 관계를 찾아내고 표현한다.

논리적 데이터 모델링

  • 데이터베이스 설계 프로세스의 과정
  • 정보의 논리적인 구조와 규칙, 관계를 설정한다.

물리적 데이터 모델링

  • 논리적 데이터 모델을 바탕으로 실제 구상

 

ERD; Entity Relation Diagram

 

엔터티 Entity

  • 업무가 관여하는 정보

엔터티의 특징

  • 엔터티는 반드시 속성을 가져야 한다.
  • 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.
  • 유일한 식별자에 의해 식별이 가능해야 한다.
  • 영속적으로 존재하는 (두 개 이상의) 인스턴스의 집합이어야 한다.

 

속성 Attribute

  • 엔티티가 가지는 성격, 데이터 타입과 크기 및 제약사항을 지정한다.

속성의 특성

  • 하나의 엔터티는 두 개 이상의 속성을 갖는다.
  • 속성도 집합이다.
  • 하나의 인스턴스에서 각각의 속성은 한 개의 속성값을 가져야 한다.

 

관계 Relationship

  • 엔터티 간의 관계와 연관성을 나타낸다.

관계의 특성

  • 관계는 존재적 관계행위에 의한 관계로 나눌 수 있다.
  • 부서와 사원 엔터티 간의 '소속' 관계는 존재적 관계의 사례이다.
  • 주문과 배송 엔터티 간의 '배송근거' 관계는 행위에 의한 관계의 사례이다.

관계의 종류

카디널리티 Cardinalit: 수적관계

  • 1:1 관계
    • A는 B를 하나 가진다. B는 A를 하나 가진다.
  • 1:N 관계
    • A는 B를 여러 개 가진다. B는 A의 하나에 해당한다.
  • M:N 관계
    • A는 B를 여러 개 가진다. B는 A를 여러 개 가진다.

옵셔널리티 Optionality

  • (1) : 필수
  • (0) : 선택

데이터베이스 모델링 예시

  • 카카오 멀티프로필 기능은 1: M의 데이터 구조를 갖는다.
  • 회원가입 시 아이디, 비밀번호, 이메일, 생년월일 등은 속성이다.
    • 즉, 속성은 컬럼이며 회원들의 회원가입 시 속성을 기준으로 회원들의 정보를 받게 되는 것이다.
  • 인스타 팔로우 팔로잉은 M:N의 사용자 id를 연결하는 것이기 때문에 사용자(users) 테이블, 즉 한 테이블 내에서 자기 자신(id)을 연결하는 것과 같다.

 

정규화

  • 중복을 최소화 한다.
  • 좋은 관계를 만들어 나가는 것에 의의가 있다.
  • 계속해서 테이블을 나누는 것이다.

제1정규화

  • 한 속성에 같은 유형의 속성이 여러 개로 나눠져 있는 경우 제거한다.

제2정규화

  • PK가 아닌 모든 칼럼은 PK에 종속되도록 구성한다.

제3정규화

  • 이행적 함수 종속성(X->Y, Y->Z)을 제거한다.
    • 연속적으로 종속되는 테이블 혹은 컬럼
  • 일반 속성 간의 함수 종속 관계가 존재하지 않아야 함
  • 조인이 많이 발생한다.
    • 배달의 민족 사용자의 주문정보를 찾을 때 일단 년 단위로 쪼개고, 월 단위로 쪼갠다.
    •  

반정규화

  • 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행한다.
  • 데이터를 중복하여 성능을 향상시키는 기법이다.
  • 데이터 무결성이 깨질 수 있지만, 반정규화를 하는 이유는
    • 데이터 조회 시 디스크 I/O량이 많아서 성능이 저하
    • 경로가 너무 멀어 조인으로 인한 성능저하 예상
    • 칼럼을 계산하여 읽을 때 성능저하 예상

'SQL' 카테고리의 다른 글

[이론] QuerySet API  (0) 2022.08.25
[이론] ORM, Object-Relational-Mapping  (0) 2022.08.24
[이론] JOIN  (0) 2022.08.22
[이론] CASE, SubQuery  (0) 2022.08.19
[이론] Aggregate Function 집계 함수, GROUP BY  (0) 2022.08.18