backend/sql (postgres)

Sqld 자격증: 1장 데이터 모델링의 이해 이론 정리

seul chan 2018. 10. 19. 22:33

다음 내용은 데이터 전문가 지식포털 DBGuide.net에 나오는 이론을 정리해 둔 내용. Sqld / sqlp를 준비하는 사람이 유용하게 사용한다면 좋겠다.

데이터 모델의 이해

1. 모델링의 이해

모델링의 특징: 추상화, 단순화, 명확화

모델링의 세가지 관점: 데이터관점, 프로세스관점, 상관관점

2. 데이터 모델의 기본 개념 이해

3. 데이터 모델링의 중요성 및 유의점

  1. 파급효과 (leverage)
  2. 복잡한 정보 요구사항의 간결한 표현 (Concsieness)
  3. 데이터 품질 (Data Quality)
    • 중복(Duplication), 비유연성 (Inflexibility), 비일관성 (Inconsistency) 주의해야함

4. 데이터 모델링의 3단계 진행

개념적 데이터 모델링 ⇒ 논리적 데이터 모델링 ⇒ 물리적 데이터 모델링

5. 프로젝트 생명주기에서 데이터 모델링

6. 데이터 모델링에서 데이터독립성의 이해

  • 데이터독립의 필요성
  • 데이터베이스 3단계 구조: 외부, 개념, 내부적 단계로 구성된 서로 간섭하지 않는 모델 제시
  • 데이터독립성 요소: 외부스키마, 개념스키마, 내부스키마
  • 두 영역의 데이터독립성: 논리적 독립성, 물리적 독립성
  • 사상 (Mapping): 외부적/개념적 사상(논리적 사상), 개념적/내부적 사상(물리적 사상)

7. 데이터모델링의 중요한 세가지 개념

  • 데이터모델링의 세가지 요소
    1. 업무가 관여하는 어떤 것 (Things)
    2. 어떤 것이 가지는 성격 (Attribute)
    3. 업무가 관여하는 어떤 것 간의 관계 (Relationships)
  • 단수와 집합(복수)의 명명

8. 데이터 모델링의 이해관계자

DBA, 프로젝트 개발자, 전문 모델러, 현업업무전문가 등…

9. 데이터 모델의 표기법인 ERD의 이해

Entity-relationship model (E-R model)

  • ERD (Entity Relationship Diagram) 표기법을 이용하여 모델링하는 방법
  • ERD를 작성하는 작업순서

1) 엔터티를 그린다 ⇒ 2) 엔터티를 적절하게 배치 ⇒ 3) 엔터티간 관계를 설정 ⇒ 4) 관계명을 기술 ⇒ 5) 관계의 참여도를 기술 ⇒ 6) 관계의 필수여부를 기술

  • 엔터티 배치: 중요한 엔터티를 왼쪽상단, 이를 중심으로 다른 엔터티 나열
  • 관련있는 엔터티간의 관계를 설정: 초기에는 PK로 속성이 상속되는 식별자 관계.
  • 관계설정이 완료되면 관계에 관계 이름 부여.
  • 관계차수(Cardinality)를 부여: (IE표기법, Barker 표기법 등이 있음)

10. 좋은 데이터 모델의 요소

  • 완전성 (Completeness): 업무에서 필요한 모든 데이터가 정의되어 있어야 함
  • 중복배제 (Non-Redundancy): 하나의 데이터베이스 내에 동일한 사실은 반드시 한번
  • 업무규칙 (Business Rules): 수많은 업무 규칙을 데이터 모델에 표현하고 이를 모든 사용자가 공유 가능하게
  • 데이터 재사용 (Data Resusability): 재사용성을 향상시키려면 통합성/독립성에 대해서 충분이 고려해야함
  • 의사소통 (Communication): 데이터 모델이 의사소통 도구로서 역할을 할수 있도록
  • 통합성 (Integration):

엔터티 (Entity)

1. 엔터티의 개념

엔터티란 “업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것(Thing)”

2. 엔터티와 인스턴스에 대한 내용과 표기법

3. 엔터티의 특징

  • 반드시 해당 업무에서 필요하고 관리하고자 하는 정보
  • 유일한 식별자에 의해 식별 가능
  • 영속적으로 존재하는 인스턴트의 집합 (두개이상)
  • 업무 프로세스에 의해 이용
  • 반드시 속성을 포함
  • 다른 엔터티와 최소 한개이상의 관계

4. 엔터티의 분류

유무형에 따른 분류: 유형, 개념(조직, 보험상품), 사건엔터티(주문, 청구, 미납 등)

발생시점:

  • 기본/키엔터티 (업무에 원래 존재하는 정보, 독립적으로 생성 가능하고 부모 역할): 사원, 고객, 상품 등
  • 중심엔터티 (기본엔터티로부터 발생, 업무에 있어서 중심): 주문, 매출 등
  • 행위엔터티 (두개이상의 엔터티에서 발생, 데이터량이 자주 변경): 주문목록, 변경이력 등

5. 엔터티의 명명

가능한 현업언무에서 사용하는 용어

약어 사용하지 않기

단수명사 / 유일하게

속성 (Attribute)

1. 속성의 개념

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

  • 업무에서 필요
  • 의미상 더이상 분리되지 않음
  • 엔터티를 설명, 인스턴스의 구성요소

2. 엔터티, 인스턴스와 속성, 속성값에 대한 내용과 표기법

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

  • 엔터티에는 두개이상의 인스턴스 존재, 각각의 엔터티에는 고유 성격을 표현하는 속성정보 두개이상

3. 속성의 특징

  • 해당 업무에서 필요하고 관리하고자 하는 정보
  • 정규화 이론에 근간하여 정해진 주식별자에 함수적 종속성 (?)
  • 하나의 속성에는 한개의 값. 다중값의 경우 별도의 엔터티를 분리

4. 속성의 분류

  1. 속성의 특징에 따른 분류: 기본속성, 설계속성, 파생속성

기본속성

  • 업무로부터 추출한 모든 속성. 일반적이고 많음
  • 일련번호 등

설계속성

  • 데이터 모델링을 위해 엄무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의

파생속성

  • 다른 속성에 영향을 받아 발생하는 속성.
  • 보통 계산된 값들. 적게 정의하는것이 좋음
  1. 엔터티 구성방식에 따른 분류: PK속성, FK속성, 일반속성

5. 도메인

도메인? 가질 수 있는 값의 범위

  • 속성에 대한 데이터타입과 크기, 제약사항
  • ex) 학생 엔터티 - 학점 속성: 0.0 - 4.0 사이의 실수값 등..

6. 속성의 명명

  • 해당업무 사용하는 이름, 서술식 사용X, 약어 제한, 유일성 확보하는것이 좋음

관계 (Relationship)

1. 관계의 개념

관계? “엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태”

관계의 페어링? 각각의 엔터티의 인스턴스들은 자신이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태

2. 관계의 분류

어떤 목적으로 연결되었느냐에 따라 분류

3. 관계의 표기법

다음 3가지 개념과 표기법을 함께 이해

관계명(Membership):

  • 관계의 이름, 각각의 관계는 두개의 관계명을 가짐 (포함한다/소속된다)
  • 애매한 동사를 피하고, 현재형으로 표현

관계차수 (Cardinality): 1:1, 1:M, M:N

  • 한개 / 두개이상의 멤버쉽이 존재하는지를 파악
  • 1:1은 실선, 1:M은 까마귀발로

관계선택사양(Optionality): 필수, 선택관계

  • 선택참여된 항목: 물리속성에서 FK로 연결될경우 Null 허용가능한 항목.

4. 관계의 정의 및 읽는방법

관계 체크사항

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

관계 읽기

  • 기준(Source) 엔터티를 한 개(One) 또는 각(Each)으로 읽는다.
  • 대상(Target) 엔터티의 관계참여도 즉 개수(하나, 하나 이상)를 읽는다.
  • 관계선택사양과 관계명을 읽는다.