Post

SQLD 1과목 정리하기(1)

회사생활하면서 빅데이터를 다루는 일이 생겼는데 엑셀 파일을 여러 개를 수동으로 관리하게 만들어서 이왕 편하게 만들거면 최적화하기 위해 SQLD를 준비한다. 시키지도 않은 일이긴 한데 안 하면 엑셀관리만 서너시간 이상 걸린다…

시험정보

  • 각 과목별 40% 미만 맞췄을 시 과락된다.
  • 1과목 : 10문제
    • 이론, 암기 성향이 강함
  • 2과목 : 40문제

이론 내용

  • 데이터 모델링 할 때, ERD 로 단순화/추상화/명확화해야 한다.

데이터 베이스 만드는 과정

  1. 요구 사항 접수
  2. 개념적 데이터 모델링 : 단순하게 밑그림을 그려보자.ERD
  3. 논리적 데이터 모델링 : 좀 더 상세하게 그림을 그려보자. Entity 등 디테일하게 설정
  4. 물리적 데이터 모델링 : 실제로 데이터베이스를 만들어보자.
  5. 데이터 베이스에 저장할 수 있게 세팅

1. Entity(개체) 이해하기

Entity : 업무에 필요한 정보를 저장/관리하기 위한 집합적인 명사 개념

Instance(인스턴스) : Entity 집합 내에 존재하는 개별적인 대상

정확하지는 않겠지만 Entity-Instance 관계를 Class-Instance 관계로 뭉끄뜨려서 봐도 될 거 같다. 개념을 담은 개체와 그 개체에 속하는 개별적인 대상이라고 생각하자. (학생 - [학생1, 학생2, 학생3], 학교 - [OO학교, □□학교])

Entity의 특징

  1. 반드시 업무에서 필요한 대상이고 업무에 사용되어야만 한다.
  2. 유일한 식별자로 식별이 가능해야 한다.
  3. 인스턴스가 2개 이상일 것
  4. 속성이 반드시 2개 이상 존재할 것
  5. 관계가 하나 이상 존재할 것(단, 코드성, 통계성은 생략 가능)

Entity의 특징

유무형에 따라 분류

  1. 유형 : 물리적 형태가 있는 개체 직원, 주류, 강사, 고객 등등
  2. 개념 : 물리적 형태가 없는 개체 부서, 과목, 계급 등
  3. 사건 : 업무 수행 중에 발생하는 개체(제일 많이 발생함) 강의, 매출, 주문, 상담 등등

엔터티의 분류

발생시점에 따라 분류(설계를 하다보면 필요한 내용들이 생길 수 있음.)

  1. 기본/키 : 본래 업무에 존재하는 정보. 독립 생성 가능. 주식별자 보유 : 직원, 고객, 상품
  2. 중심 : 기본 개체로부터 발생. 업무에 있어 중심 역할 : 주문, 매출, 계약
  3. 행위 : 2개 이상 개체로부터 발생 : 주문이력

2. Attribute(속성) 이해하기

속성 : 업무상 관리하기 위해 의미적으로 더는 분리되지 않는 최소의 데이터 단위, 개체가 가지는 공통적인 특징이기도 한다. ex) ID, salary, department, Birth, name…

식별자 : 개체 내 unique한 인스턴스를 식별할 수 있는 속성의 집합

Domain : 각 속성이 입력 받을 수 있는 값의 정의 및 범위 ex) 나이는 0~999까지의 숫자만 입력 받을 수 있다, 이름은 최대 X자리의 문자열만 받는다.

이것도 Class Attribute처럼 개체의 속성으로 이해하면 편하다. pandas를 해봤다면 table의 column으로 보면 된다.

특성에 따른 Attribute의 분류

특성에 따른 분류

  • 기본 : 업무로부터 추출한 속성으로 제일 많이 발생한다.
  • 설계 : 설계시 규칙화 등이 필요해 만든 속성. 코드성이나 일련번호 등. 부서나 소속을 편하게 D001, D002 이런 식으로 명명함.
  • 파생 : 다른 속성들로부터 계산/변형되어 만들어진 속성(실무에 안 쓰는 걸 권장) aggregation 등 집계함수로 계산된 결과등이 여기에 속한다.

구성에 따른 Attribute 분류

구성에 따른 분류. 이에 대한 내용은 데이터모델링에서 자세히 다룸.

  • PK(Primary Key)
  • FK(Foreign Key)
  • 일반속성
  • 복합속성 : 여러 개의 정보를 담는 경우(주소같은 거)

3. Relationship(관계) 이해하기

관계 : 엔터티 내의 인스턴스들 간에 서로 논리적인 연관성이 있는 상태

  • ERD(Entity-Relationship Diagram)존재/행위 등 관계를 위 그림처럼 표시한다.
  • UML class diagram의 경우
    • 연관관계(존재)는 실선으로 표기
    • 의존관계(행위)는 점선으로 표기

관계를 표시하는 방법

  • ERD 표기하는 방식은 2가지가 있다.
    • ==IE 타입==은 웬만하면 시험에 나온다.
    • Barker 타입은 가끔 실무에 나오는 정도

표시방법은 총 3가지 키워드만 기억해두면 된다.

1. 관계명(Membership)

관계명을 표시한다. 이 때 애매한 동사나 과거형은 피한다. (IE, barker 방식 동일)

2. 관계차수(Cardinality/Degree)

관계차수는 엔터티 내 각 인스턴스들이 얼마나 참여하는지 의미한다.

N:M 관계를 쪼개는 방법은 식별자를 넘겨주면서 새 테이블 만드는 방식을 추천한다. 관계에 대해서는 아래 블로그 링크 참고해보자.

3. 관계선택사양(Optionality)

관계선택사양은 엔터티 내 각 인스턴스들이 필수/선택 참여하는지를 의미한다.

필수/선택에 대한 표기는 IE/barker 방식이 가장 차이난다.

코드성, 통계성이란?

보통 관계가 없는 엔터티는 쓸모 없는 것으로 취급된다.

  • 코드성 : 어떤 값들을 코드 형식으로 저장해서 쓰기 편하게 만드는 것
    • ex) 남/여 로 표현할 수도 있는데 그냥 1/2로 표기한다. (간결하게 하려고)
  • 통계성 : 해당 엔터티만으로도 유의미한 정보를 담고 있는 경우 통계성 있다고 하며 관계가 없어도 의미가 있는 것으로 취급한다.
    • ex) 월별 매출 등

데이터 모델링

현실세계의 복잡한 대상을 단순하게 표현하기 위해 추상화, 단순화, 명확하하여 일정표 기법으로 표시

  • 계획/분석/설계 시 업무분석 및 설계, 설명에 사용
  • 구축/운영시에는 변경, 관리 목적으로 사용한다.

데이터 모델링은 3단계로 나뉜다.

  1. 개념적 데이터 모델링
  2. 논리적 데이터 모델링
  3. 물리적 데이터 모델링

추상적, 업무중심적, DMBS 독립적

Key, 업무, 속성 관계 등 정의하며 재사용성이 높다. 그리고 특정 DBMS에 종속적이다. 식별자 선택 $\sim$ PK, FK

ERD(Entity-Relationship Diagram)

엔터티와 엔터티 간의 관계를 발견하고 이를 그림으로 표현하는 행위로 ==개념적== 데이터 모델링의 결과물이다.

개념적, 논리적, 물리적 데이터 베이스 모델링은 여기 강의에서 잘 설명해주니 어떻게 할지 감이 안 잡히면 여기서 보자.

데이터 모델링이 중요한 이유?

  1. 파급효과 : 설계부터 확실하게 하여 나중에 갈아 엎는 일이 없게 해야함.
  2. 간결한 표현 : 서로 의사소통을 위해 모델링된 설계도(ERD 등)으로 쉽게 이해
  3. 데이터 품질 : 데이터 모델링을 함으로써 중복된/유연하지 못한/일관적이지 못한 데이터를 거를 수 있다. (정규화를 해서 데이터 품질을 높임)
    • 복수 PK가 유연하지 못하면 데이터 정의를 바꿔야 하는 순간이 올 수 있다.

논리적 모델링 표기법 2가지

데이터 베이스 3단계 구조

시험에 객관식 보기로 나온다고 하니 참고

  1. 외부(External) 스키마 : 여러 사용자 각각의 관점 (독립적이다.)
  2. 개념(Conceptual) 스키마 : 통합적, 조직 전체의 DB 관점
  3. 내부(Internal) 스키마 : 데이터 물리적 저장 구조를 표현

외부 스키마는 개발자말고 일반 사용자 관점이라고 보면 된다. 어떤 속성이 추가되었고 편집되었는지 전체 구조를 알 수 없다.

식별자

식별자(identifiers) : 엔터티 내 유일하게 인스턴스를 식별할 수 있는 속성의 집합.

Primary Key로 생각해도 좋다.

식별자 분류

  1. 대표성 여부 : 주식별자 vs 보조식별자
  2. 스스로 생성여부(자생여부) : 내부식별자 vs 외부식별자(다른 엔터티에서 빌려온 식별자)
  3. 단일속성여부 : 단일식별자 vs 복합식별자(2개 이상의 식별자)
  4. 대체여부 : 본질식별자 vs 인조식별자(SAMPLE1, SAMPLE2… 와 같이 편의상 식별자 이름을 지어냄)

  • 주식별자 도출기준은? ex) 왜 주민등록번호 대신 직원ID 사용할까?
    • 업무에서 자주쓰는 속성일 것
      • 개인정보 유출 등을 피하고
      • 식별하는 데 지나치게 긴 키가 아닐 것
    • 명칭, 이름 등은 피할 것
    • 속성의 수가 많지 않을 것 최소한의 속성으로 식별자를 만드는 것을 추천(예를 들어 불필요하게 5개 속성 조합해서 식별자 만드는 거는 추천하지 않는다.)

      주식별자 특징

      1. 유일성 : 인스턴스를 유일하게 식별하기
      2. 최소성 : 속성의 수가 많지 않기
      3. 불변성 : 가급적 변하지 않기
      4. 존재성 : 값이 꼭 입력되기

Reference

This post is licensed under CC BY 4.0 by the author.