📖
Mini's Today I Learned
  • Today I Learned
  • 💻Computer Science
    • 🧱Computer Science
      • Computer Architecture
    • 🦕OperatingSystem
      • System Structure
      • 01. 운영체제 역할
      • 02. History로 이해하는 운영체제
      • 03. 운영체제 구조
      • 04. 프로세스 스케쥴링
      • 05. 스케쥴링 알고리즘
      • 06. 프로세스 상태와 스케쥴러
      • 07. 인터럽트
      • 08. 프로세스와 컨텍스트 스위칭
      • 09. 프로세스간 커뮤니케이션(IPC 기법)
      • 10. Thread(스레드)
      • 11. 가상메모리 (Virtual Memory System)
      • 12. 파일시스템 이해
      • 13. 부팅의 이해
      • 14. 가상머신(Virtual Machine)
  • 📈Database
    • MySQL CLI (Frequently used)
    • 1-Tier, 2Tier, 3Tier
    • Basic SQL
    • Built in function
    • Sub Query
    • View
    • Stored Program
    • index
    • Normalization(정규화)
    • Transaction
    • Transaction
  • 🌐 Network
    • 🔌 TCP&IP Basic
      • 01 TCP/IP 맛보기
      • 02 TCP/IP 개요
      • 03 통신 서비스와 프로토콜
      • 04 애플리케이션 계층
      • 05 트렌스포트 계층
      • 06 네트워크계층
      • 07 데이터 계층과 물리계층
      • 08 라우팅
      • 09 보안
      • 10 HTTP 프로토콜
    • 🐿️HTTP 완벽 가이드 요약
      • 1. HTTP: 웹의 기초
      • 2. URL 과 리소스
      • 3. HTTP Message
      • 4. Connection Management
      • 5. Overview of web server architectures
      • 6. Proxies
      • 7.Caching
      • 8. Integration Points: Gateways, Tunnels, and Relays
      • 9. Web Robots
      • 10. HTTP/2.0
      • 11. Client Identification and Cookies
      • 12. Basic Authentication
      • 13. Digest Authentication
      • 14. Secure HTTP
      • 15. Entities and Encodings
      • 16. Internationalization
      • 17. Content Negotiation and Transcoding
      • 18. Web Hosting
  • 🏴Language
    • ☕JAVA
      • Comparable vs Comparator
  • 🛠️ Framework
  • 🧩Design Pattern
    • 객체 지향 설계 원칙 (SOLID)
    • Design Pattern 개요
    • Template method
    • Singleton
  • 🐥FrontEnd
    • HTML&CSS
      • 01 Intro
      • 02 HTML Basic
      • 03 Content Section
      • 04 Block and Inline Elements
      • 05 Text Contents
      • 06 Inline Elements
      • 07 Multi Media
      • 08 Table&Form&etc
      • 09 Global Attribute & etc
      • 10 css basic
      • 11 css config
      • 12 css unit
      • 13 Box Model
      • 14 Font & Text
      • 15 Float(띄움) & Position
      • 16 Background
      • 17 Transitions & Transforms
      • 18 Animation & Multi Columns(다단)
      • 19 Flex
      • 20 Grid
    • Sass(SCSS)
    • TypeScript
    • Webpack Introduction
      • 웹팩의 기본 구조
      • CommonJS
      • ESM
      • WebpackConfig
        • 1. Handlebars
        • 2. Caching
        • 3. Minification & Mangling
        • 4. Mode(Development mode & Production Mode)
        • 5. 이미지 파일 모듈로 다루어보기(file-loader)
        • 6. 이미지 파일 모듈로 다루어보기(url-loader)
        • 7. SASS Loader
        • 8. Post CSS
        • 9. BLOWSERS LIST
        • 10. Stylelint
        • 11. Babel
      • Webpack-Practice
    • ETC
      • GIT
      • MarkDown
Powered by GitBook
On this page
  • 01. 이상현상
  • 02. 함수 종속성
  • 01) 개념
  • 02) 함수 종속성 다이어그램
  • 03) 함수 종속성 규칙
  • 04) 함수 종속성과 기본키
  • 05) 이상현상 및 결정자
  • 03. 정규화
  • 01) 정규화 과정
  • 02) 무손실 분해

Was this helpful?

  1. Database

Normalization(정규화)

개요

  • 데이터 베이스 설계가 잘못되면, 테이블에 삽입, 삭제, 수정시 이상현상(anomaly)이 발생한다.

  • 이상현상은 데이터의 무결성을 깨뜨리기에, 함수 종속성을 파악하여 규칙에 따라 테이블을 분해해야 함.

  • 이처럼, 잘못 설계된 테이블을 수정하여 정상으로 만드는 과정을 정규화라고 한다.

01. 이상현상

  • 데이터 베이스 설계가 잘못되면, SQL문의 결과가 틀리거나 원치 않는 결과가 발생하는 등의 문제 발생.

  • 삭제이상: 튜플(행) 삭제 시, 저장된 다른 정보까지 연쇄적으로 삭제되는 현상

  • 삽입이상: 튜플(행) 삽입 시, 특정 속성에 해당하는 값이 없어 NULL 값을 입력해야하는 현상

  • 수정이상: 튜플(행) 수정 시, 중복된 데이터의 일부만 수정되어 데이터의 불일치문제 일어남.

02. 함수 종속성

01) 개념

  • 함수 종속성은 릴레이션 구조에 관한 이론적인 내용이 포함되어 있으므로 아래 용어로 설명

    • 테이블 => 릴레이션

    • 행 => 튜플, 열 => 속성

  • 함수적 종속성: 속성 A라는 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존관계

    • 속성 B는 A 속성에 종속한다. (dependent)

    • 속성 A는 속성 B를 결정한다.(determine)

    • A -> B

    • A는 B의 결정자

  • 함수 종속성을 판단할 때에는, 릴레이션의 현재 인스턴스(데이터)만 가지고 판단하는게 아니라, 속성이 가진 의미를 가지고 판단해야한다.

02) 함수 종속성 다이어그램

  • 함수 종속성을 나타내는 표기법

    • 릴레이션의 속성(열) : 직사각형

    • 속성간 함수 종속성: 화살표

    • 복합 속성의 경우: 직사각형으로 묶어서 표현. (학생번호, 강좌이름)

03) 함수 종속성 규칙

X, Y, Z 가 릴레이션 R에 포함된 속성의 집합이라고 할 때, 함수 종속성에 관한 다음 규칙 성립

  • 부분집합(subset) 규칙: If Y ⊆ X, then X -> Y

  • 증가(augmentation) 규칙: If X -> Y then XZ -> YZ

  • 이행(transitivity) 규칙: If X -> Y and Y -> Z then, X -> Z

위 3 가지 규칙으로 부가적으로 규칙 더 얻을 수 있음(아래 3가지)

  • 결합(union) 규칙: If X -> Y and X -> Z then, X -> YZ

  • 분해(decomposition) 규칙: If X -> YZ, then X -> Y and X -> Z

  • 유사이행(pseudotransitivity) 규칙: If X -> Y and WY -> Z, then WX -> Z

04) 함수 종속성과 기본키

  • 릴레이션에서 함수 종속성을 알기 위해서는 기본키를 우선 찾아야한다.

  • 릴레이션R(K, A1, A2, A3, ..., An)에서 K가 기본키일때 K->R 성립.

  • 기본키는 릴레이션의 모든 속성에 대한 결정자(determinant)

05) 이상현상 및 결정자

  • 이상현상: 한 개의 릴레이션에 2개 이상의 정보가 포함되어있을 때.

  • 기본키가 아니면서, 결정자인 속성(비후보키 결정자 속성)이 있을 때 발생

03. 정규화

이상현상의 원인은 여러가지가 있는데, 대부분 2가지 이상의 정보가 한 릴레이션에 저장되어 있기 때문에 발생한다. 따라서, 이상현상은 릴레이션을 분해하여 제거한다. 분해된 릴레이션에 이상현상이 남아있다면 이상현상이 없어질 때까지 분해한다. 이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정을 정규화라 한다.

01) 정규화 과정

  • 제 1 정규형

    • 한 릴레이션을 구성하는 모든 도메인이 원자값(Atomic Value)만으로 구성되도록 한다.

    • 원자값: 더이상 쪼개지지 않는 단위

  • 제 2 정규형

    • 제 1 정규형을 만족하면서, 기본키가 아닌 속성이 기본키에 완전 함수 종속일때 제2정규형이라 한다.

        • 종속자가 기본키에만 종속이 되며, 기본키가 여러 속성으로 구성되어있을 경우, 기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 종속된 경우.

      • 부분 함수 종속 관계(Partial Functional Dependency)

        • 종속자가 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 구성되어 있는 경우 기본키를 구성하는 속성중 일부만 종속되는 경우.

  • 제 3 정규형

    • 제 2 정규형을 만족하고, 이행적 함수 종속관계를 갖지 않는 것.

    • 이행적 종속: A->B, B->A일때 A->C 성립되는 함수 종속성

  • BCNF

    • (결정자이면서 후보키를 만족하지 않는 속성이 있을 때 이상현상 발생.)

  • 제 4 정규형

    • 다치 종속성을 가진 릴레이션과 관련

  • 제 5 정규형

    • 프로젝트- 조인 정규형, 조인 종속성을 가진 릴레이션과 관련

02) 무손실 분해

  • 분해된 릴레이션 간의 관계를 유지하기 위해, 분해된 릴레이션에 공통속성을 1개 이상 두어야한다.

  • 공통 속성은 분해된 릴레이션을 다시 원래 릴레이션으로 합성(조인) 할 때, 사용.

  • 무손실 분해: 릴레이션 R을 분해하여 두개의 릴레이션 R1, R2를 만들었을 때, 다시 조인하면 R이 만들어진다는 의미.

  • 조건

    • 분해할 때 공통된 속성이 R1의 키 (R1∩R2 -> R1) 이거나 R2의 키( R1∩R2 -> R2)여야 한다.

[참조 링크]

책: MySQL로 배우는 데이터 베이스 개론과 실습 chapter 07

PreviousindexNextTransaction

Last updated 4 years ago

Was this helpful?

모든 결정자가 에 속한 정규형

함수적 종속:

그림:

키 종류(후보키) :

📈
완전 함수 종속 관계(FFD, Full Functional Dependency)
후보키 집합
https://dodo000.tistory.com/20
https://mangkyu.tistory.com/28
https://jerryjerryjerry.tistory.com/49
함수 종속성 다이어그램 예시
정규화 포함 관계