SQLD 정리
🙉

SQLD 정리

Created
May 22, 2024 01:59 PM
Last edited time
Last updated May 22, 2024
Tags
CS
Language
URL

Intro::

SQLD 시험 정리본입니다.
 

데이터 모델링의 이해

데이터 모델링

데이터 모델링이란?

  • 정보 시스템을 구축하기 위한 데이터관점의 업무분석기법
  • 데이터에 대해 약속된 표기법으로 표현하는 과정
  • 데이터베이스를 구축하기 위한 분석/설계의 과정
  • 시스템 구현을 포함한 업무분석 및 업무형상화의 목적도 가짐
목적
  1. 일정한 표기법에 의해 표현함으로써 정보시스템 구축의 대상이 되는 업무 내용을 정확하게 분석
  1. 분석된 모델로 실제 데이터베이스를 생성해 개발 및 데이터 관리에 사용

데이터 모델링 유의사항

  1. 중복 Duplication: 여러장소에 같은 정보 저장 X
  1. 비유연성 Inflexibility: 데이터 ←( 분리 )→ 프로세스 작은 프로세스의 변화가 DB에 큰변화를 일으킬 가능성 방지
  1. 비일관성 Inconsistency: 테이블 ← 연관성 → 프로그램 데이터간의 상호연관 관계를 명확하게 정의하는 것이 필요

데이터 모델링 특징

  1. 추상화(Abstraction): 공통적인 특징을 찾아 간략히 표현
  1. 단순화(Simple): 복잡한 문제를 피하고 누구나 이해가능
  1. 명확화(Clarify): 해석이 모호하지 않고 한가지 의미를 지님
 

데이터 모델링 관점

  • 데이터 : 구조/정적 분석
  • 프로세스: 시나리오/도메인/동적 분석
  • 데이터와 프로세스: CRUD 분석

데이터베이스 모델링 시 고려사항

파급효과 / 복잡한 요구사항을 간결하게 표현 / 데이터 품질

데이터모델링의 3가지 요소

Things / Attributes / Relationship

데이터모델링의 단계

  • 개념적 모델링 (Conceptual Data Modeling)
    • 업무중심적이고 포괄적으로 모델링하는 단계
    • 전사적관점에서 모델링
    • 추상화 수준이 높음
  • 논리적 모델링 (Logical Data Modeling)
    • 정규화를 수행해 모델의 독립성 확보
    • 식별자를 정의해 key, 속성, 관계등을 표현
    • 재사용성이 높음
    • 데이터모델링이 최종적으로 완료된 상태
  • 물리적 모델링 (Physical Data Modeling)
    • 성능, 보안, 가용성 등 물리적 성격을 고려해 데이터베이스를 실제로 구축
 

ERD

ERD 작성 절차

  1. 엔티티를 그린다
  1. 엔티티를 배치한다.
  1. 엔티티간 관계를 설정
  1. 관계명을 기술
  1. 관계의 참여도를 기술
  1. 관계의 필수여부를 기술

ERD 작성시 고려사항

독립성 / 요구사항 표현 / 데이터품질확보

3 Level Schema

스키마구조 3단계

  • 외부스키마(external): 사용자관점, 응용프로그램 접근
  • 개념스키마(conceptual): 설계자관점, 통합데이터베이스
  • 내부스키마(Internal): 개발자관점, 물리적 저장구조
 

Entity

엔티티의 특징

  1. 해당 업무에 필요하고 관리하고자 하는 정보
  1. 유일한 식별자에 의해 식별 가능
  1. 염속적으로 존재하는 ‘두개 이상’의 인스턴스 집합
  1. 업무 프로세스에 의해 이용됨
  1. 반드시 속성이 존재
  1. 다른 엔티티와 최소 한개 이상의 관계를 가짐

엔티티 종류

  • 유/무형 : 유형 / 개념 / 사건
  • 발생시점: 기본 / 중심 / 행위
 

Attribute

속성이란?

  • 엄무에서 필요로 하는 인스턴스에서 관리하고자 하는 의미상 더이상 분리되지 않는 최소의 데이터 단위 → 하나의 값만 가짐
  • 주식별자에게 함수적으로 종속됨

속성의 종류

  • 분해 여부 : 단일 / 복합 / 다중값
  • 특성 : 기본 / 설계 / 파생
 

Relation

관계의 종류

존재관계 / 행위관계

데이터모델링의 관계

  • 존재관계와 행위관계가 존재하지만 ERD에서는 구분하지 않고 단일화된 표기법을 사용한다.
  • UML에는 클래스다이어그램의 관계 중 연관관계와 의존관계를 실선과 점선의 표기법을 사용하다.

관계의 표기법

관계명 / 관계차수(1:1, 1:M, ..) / 선택성

관계읽기

  1. 기준엔티티를 각 읽는다.
  1. 대상 엔티티의 관계 참여도를 읽는다.
  1. 관계 선택사양과 관계이름을 읽는다.

엔티티 사이에 정의한 관계 체크사항

  1. 관심있는 연관 규칙이 존재하는가?
  1. 정보의 조합이 발생되는가?
  1. 업무기술서, 장표에 관계 연결을 가능하게하는 동사가 있는가?
  1. 업무 기술서, 장표에 관계연결 규칙이 서술되어있는가?

식병자와 비식별자

notion image

Identifier

주식별자 특징

  • 유일성, 최소성 만족
  • 엔티티 대표 가능
  • 인스턴스 유일 식별 가능
  • 자주 변경 X

키의 종류

  • 기본키
  • 후보키
  • 대체키
  • 슈퍼키
  • 외래키

식별자의 종류

  • 대표성 여부: 주 식별자, 보조 식별자
  • 생성 여부: 내부 식별자, 외부 식별자
  • 속성의 수: 단일 식별자, 복합 식별자
  • 대체 여부: 본질 식별자, 인조 식별자

도메인

속성이 가질 수 있는 값의 범위
엔티티 내에서 속성에 대한 데이터타입과 크기 그리고 제약사항을 지정하는 것
릴레이션에서 모든 속성들의 도메인은 원자값을 가짐
실제 속성값의 합법여부를 시스템이 검사하는데 이용
속성명과 반드시 동일할 필요는 X

좋은 모델링의 요건

중복 배제 / Business Rule / 완전성

카디널리티

하나의 릴레이션에서 튜플의 수

선택도

특정조건에 의해 선택될 레코드의 비율 계산 → 조건이 요청한 값의 범위/전체값

Row Chaining

행의 길이가 너무 길어 데이터블록 하나에 데이터가 저장되지 않고 두개이상의 블록에 걸쳐 하나의 행이 저장되어 있는 상태

Row Migration

데이터블록에서 수정이 발생하면 수정된 데이터를 해당 블록에 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식
 

데이터 모델과 성능

성능데이터 모델링

성능향상을 목적으로 설계 단계인 데이터 모델링 부터 성능과 관련된 사항이 모델링에 반영될 수 있도록 한다.
→ 성능을 충분히 고려하기 위해 정규화/반정규화 수행

성능 데이터 모델링 시 고려사항 우선순위

  1. 정규화
  1. 트랜젝션 용량 산정
  1. 트랜젝션 유형 분석
  1. 반정규화
  1. 타입, 이력데이터, 키 등을 조정

Nomalization

정규화 절차

  • 제 1 정규화: 속성의 원자성 확보
  • 제 2 정규화: 부분함수 종속성 제거
  • 제 3 정규화: 이행함수 종속성 제거
  • BCNF: 후보키가 기본키를 종속시킬 경우 분해
  • 제 4 정규화: 다중값 종속성 제거
  • 제 5 정규화: 조인에 의해 종속성이 생기는 경우 분해

정규화 단점

join / nested Loop를 유발해 cpu와 메모리를 많이 사용
 

De-Nomalization

반정규화를 하는 이유

  1. 수행속도가 느릴 경우
  1. 다량의 범위나 특정 범위를 자주 처리하는 경우
  1. 요약/집계정보가 자주 요구되는 경우

반정규화 절차

  1. 반정규화 대상조사
    1. 범위처리 빈도수 / 대량의 범위 처리 / 통계성 프로세스 / 테이블 조인 개수
  1. 다른 방법 유도 검토
    1. 뷰테이블 / 클러스터링 / 인덱스 조정 / 애플리케이션 / 배열처리
  1. 반정규화 수행
    1. 테이블 / 속성 / 관계

반정규화 기법

notion image

Partitioning

파티셔닝이란?

논리적으로는 하나의 테이블이지만 물리적으로는 여러개의 테이블로 분리하여 데이터 액세스 성능을 향상시키고 관리방법도 개선하는 기법

종류

Range / List / Hash / Composite

분산데이터베이스

분산데이터베이스 투명성 종류

분할 / 위치 / 지역사상 / 중복 / 장애 / 병행

분산데이터베이스 장단점

  • 장점
    • 신뢰성과 가용성이 높음
    • 병렬처리수행으로 빠른 응답
    • 시스템 용량 확장 쉬움
  • 단점
    • 관리와 통제가 어려움
    • 보안관리가 어려움
    • 무결성 관리 어려움
    • 설계가 복잡
 

SQL 기본

절차적 / 비절차적 언어

절차적 데이터 조작어: 어떻게 데이터를 접근하는지 명세
  • PL / SQL, T-SQL
비절차적 데이터 조작어: 무슨 데이터를 원하는지 명세
  • DML

Relation Database

  • 계층형 : Tree
  • 네트워크형 : Owner, Member
  • 관계형 : Relation

DBMS

  • 집합연산: Union / Difference / Intersect / cartision Product
  • 관계연산: Selection / Projection / Join / Division
 

SQL (structured query language)

SQL이란?

  • 관계형 데이터베이스에서 데이터의 구조를 정의, 데이터 조작, 데이터제어가 가능한 절차형 언어
  • ANSI / ISO 표준을 준수하며 DBMS가 바뀌어도 그대로 사용 가능

SQL 종류

  • DDL (Definition): 구조정의 → craete, alter, drop, rename
  • DML (Manipulation): select, delete, insert, update
  • DCL (Control): grant, revoke
  • TCL (Transaction): commit, rollback

SQL 실행 순서

  1. Parsing
    1. 문법확인 + 구문 분석
    2. cache에 저장
  1. Execution
    1. 옵티마이저 실행계획에 따라 SQL 실행
  1. Fetch
    1. 데이터를 읽고 전송
 

References::

Loading Comments...