SQLD — 과목I 데이터 모델링의 이해

EunJin
5 min readFeb 2, 2021

--

제1장 데이터 모델링의 이해

제1절 데이터 모델의 이해

[데이터 모델링이란]

  • 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
  • 현실 세계의 데이터(what)에 대해 약속된 표기법으로 표현하는 과정
  • 데이터베이스를 구축하기 위한 분석/설계의 과정
  • 일정한 형식에 맞추어 표현하는 추상화의 의미를 가진다.
  • 누구나 이해 가능하도록 단순하고 정확하게 현상을 기술해야 한다.

[데이터 모델링 유의점]

  • 같은 정보를 저장하지 않도록 중복성 최소화
  • 데이터 정의를 사용 프로세스와 분리하여 유연성 최대화
  • 매핑을 통한 연계성 지양
  • 데이터 간 상호 연관관계를 명확하게 정의하여 일관성 유지 지향

[데이터 모델링 개념]

  • 개념적 데이터 모델링 — 추상화 수준이 높고 업무 중심적, 전사적 데이터 모델링
  • 논리적 데이터 모델링 — 시스템 구축에 대해 Key, 속성, 관계 등을 정확하게 표현(재사용성 높음)
  • 물리적 데이터 모델링 — 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 고려하여 설계

[데이터베이스 스키마]

  • 외부 스키마
  • 개념 스키마 — 전체 관점의 통합적 표현, 필요로 하는 데이터를 통합하고 표현한 스키마
  • 내부 스키마

제2절 엔터티

[ERD란]

  • 1976년 피터첸에 의해 Entity-Relationship Model 이란 표기법이 만들어짐
  • 작성 방법은 엔터티 도출 엔터티 배치 관계 설정 관계명 기술
  • 관계의 명칭은 관계 표현에 있어 매우 중요
  • 가장 중요한 엔터티를 왼쪽 상단에 배치, 추가로 발생되는 엔터티들을 왼편과 하단에 배치

[엔터티의 특징]

  • 반드시 해당 업무에서 이용하고 관리하고자 하는 정보
  • 유일한 식별자에 의해 식별 가능
  • 영속적 인스턴트의 집합(두 개 이상)
  • 반드시 속성이 있어야 한다.
  • 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.
  • 약어 사용 X, 단수 명사, 유일한 이름, 생성 의미대로 이름 부여
  • ERD에서는 존재적 관계와 행위에 의한 관계를 구분하지 않고 단일화
  • 하지만 클래스 다이어그램에서는 이것을 구분하여 연관관계와 의존 관계로(실선과 점선의 표기) 표현

[엔터티의 종류]

  • 기본 엔터티(키엔터티) — 원래 존재하는 정보, 독립적 생성 가능, 다른 엔터티 부모 역할, 고유한 주식별자
  • 중심 엔터티(메인엔터티)
  • 행위 엔터티
  • 개념 엔터티

제3절 속성

[속성이란]

업무에서 필요로 하는 인스턴스를 관리하고 더 이상 분리되지 않는 최소 데이터 단위

각 엔터티(테이블)의 속성에 대해 데이터 타입, 크기, 제약사항을 정의하는 개념은 도메인(Domain)

[속성의 특징]

  • 엔터티에 대해 자세하고 구체적인 정보를 나타낸다.
  • 하나의 엔터티는 두 개 이상의 속성을 갖는다.
  • 하나의 인스턴스에서 각각의 속성은 한 개의 속성값을 가진다.
  • 속성도 집합

[속성의 종류]

  • 기본 속성 — 원래 가지고 있어야 하는 속성
  • 설계 속성 — 데이터를 조회할 때 빠른 성능을 낼 수 있도록 원래 속성의 값을 계산하여 저장할 수 있는 속성
  • 파생 속성

[속성의 명칭 부여]

  • 해당 업무에서 사용하는 이름 부여
  • 서술식 속성명 지양
  • 약어 사용 제한
  • 젠체 데이터모델에서 유일성 확보

제4절 관계

[관계란]

  • 존재적 관계와 행위에 의한 관계로 나뉨
  • 관계의 표기법은 관계명, 차수명, 선택성(선택사양)의 3가지 개념을 사용

[관계의 표기법]

  • 관계명(Membership) — 관계의 이름
  • 관계 차수(Cardinality) — 1:1, 1:M, M:N
  • 관계 선택사양(Optionality) — 필수 관계, 선 택관계

[관계 체크 사항]

  • 두 개의 엔터티 사이에 관심 있는 연관 규칙이 존재하는지
  • 두 개의 엔터티 사이에 정보의 조합이 발생되는지
  • 업무 기술서, 장표에 관계 연결 규칙이 서술되어 있는지
  • 업무 기술서, 장표에 관계 연결을 가능하게 하는 동사(Verb)가 있는지

제5절 식별자

[식별자의 종류]

  • 엔터티 내에서 대표성을 가지는가에 따라 주 식별자, 보조 식별자로 구분
  • 엔터티 내에서 스스로 생성되었는지 여부에 따라 내부 식별자, 외부 식별자로 구분
  • 단일 속성으로 식별이 되는가에 따라 단일 식별자, 복합 식별자로 구분
  • 원래 업무적으로 의미가 있던 식별자 속성을 대체하여 일련번호와 같이 새롭게 만든 식별자를 구분하기 위해 본질 식별자, 인조 식별자로 구분

[주 식별자 특징]

  • 유일성 — 주 식별자에 의해 엔터티내에 모든 인스턴스들을 유일하게 구분
  • 최소성 — 주 식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
  • 불변성 — 주 식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
  • 존재성 — 주 식별자가 지정되면 반드시 데이터 값이 존재(Null 안 됨)

[주 식별자 도출 기준]

  • 해당 업무에서 자주 이용되는 속성을 주 식별자로 지정
  • 명칭, 내역 등과 같이 이름으로 기술되는 것들은 지정하기에 적절치 않음 (특히 이름 같은 경우 동명이인이 있을 수 있어 더욱더 적절치 않다.)
  • 복합으로 주 식별자를 구성할 경우 너무 많은 속성을 포함하지 않도록 한다.

[식별자와 비 식별자 관계]

  • 관계의 강약을 분석하여 상호 간에 연관성이 약할 경우 비 식별자 관계를 고려
  • 자식 테이블에서 독립적인 Primary Key의 구조를 가지기 원할 때 식별자 관계를 고려
  • 부모 엔터티의 주 식별자를 자식 엔터티에서 받아 손자 엔터티까지 계속 흘려보내기 위해 식별자 관계를 고려
  • 모든 관계가 식별자 관계로 연결되면 SQL 문장이 길어져 복잡성이 증가되는 것을 방지하기 위해 비 식별자 관계를 고려 (가장 마지막에 고려해야 하는 비중, 단순히 SQL 문장의 복잡도를 낮추는 목적에서 고려되는 건 바람직하지 않다.)
  • 부모 엔터티에 참조 값이 없어도 자식 엔터티의 인스턴스가 생성될 수 있는 경우 비 식별자 관계로 고려
  • 부모 엔터티의 인스턴스가 자식 엔터티와 같이 소멸되는 경우 식별자 관계를 고려
  • 여러 개의 엔터티를 하나로 통합하면서 각각의 엔터티가 갖고 있던 여러 개의 개별 관계가 통합되는 경우 비 식별자 관계로 고려
  • 자식 쪽 엔터티의 주 식별자를 부모 엔터티와는 별도로 생성하는 것이 더 유리하다고 판단하는 경우 비 식별자 관계로 고려

--

--

EunJin
EunJin

No responses yet