데이터베이스 14주차 요약

2023. 1. 31. 18:47·학교수업/데이터베이스

◆릴레이션 정규화 (normalization)

▷주어진 릴레이션 스키마를 함수적 종속성과 기본 키를 기반으로 분석하여, 원래의 릴레이션을 분해함으로서 중복과 세 가지 갱신 이상을 최소화하는 것이다.

▷더 좋은 관계의 데이터베이스 스키마를 만들기 위해 릴레이션을 분할한다.

▷부주의한 데이터베이스는 데이터 중복을 야기하여 여러 가지 갱신 이상을 유발한다.

 

●정규화의 개요

▷ER 데이터 모델을 기반으로 고순준의 스키마를 생성하고(개념적 설계)

▷이 설계를 릴레이션들의 집합으로 사상한 후에(논리적 설계)

▷함수적 종속성을 기반으로 릴레이션들을 재구성한다. (정규화)

▷

 

◆검색 및 갱신 문제를 유발하는 릴레이션의 구조적 특징들

●정보의 중복

▷동일 정보를 두 곳 이상에 저장하는 것을 말한다.

●수정 이상 (modification anomaly)

▷반복된 데이터 중에 일부만 수정하면 데이터의 불일치가 발생한다.

●삽입 이상 (insertion anomaly)

▷불필요한 정보를 함께 저장하지 않고는 어떤 정보를 저장하는 것이 불가능 하다.

●삭제 이상 (deletion anomaly)

▷유용한 정보를 함께 삭제하지 않고는 어떤 정보를 삭제하는 것이 불가능 하다.

 

◆관계 데이터베이스 설계의 비공식적인 지침

●이해하기 쉽고 명확한 스키마를 만들라.

●널값을 피하라

●가짜 투플이 생기지 않도록 하라

●스키마를 정제해라

 

●결정자 (determinant)

▷주어진 릴레이션에서 다른 애트리뷰트를 고유하게 결정하는 하나 이상의 애트리뷰트를 의미한다.

 

●함수적 종속성 (FD : Functional Dependency)

▷애트리뷰트 A가 애트리뷰트 B의 결정자이면 B가 A에 함수적으로 종속한다고 말한다.

 

●완전 함수적 종속성 (FFD : Full Functional Dependency)

▷주어진 릴레이션 R에서 애트리뷰트 B가 애트리뷰트 A에 함수적으로 종속하면서 애트리뷰트 A의 어떤 진부분 집합에도 함수적으로 종속하지 않으면 애트리뷰트 B가 애트리뷰트 A에 완전하게 함수적으로 종속한다고 말한다.

 

●부분 함수적 종속성

▷완전하게 함수적으로 종속되지 않는다면 이다.

 

●이행적 함수적 종속성 (transitive FD)

▷삼단논법

 

◆릴레이션 분해 (decomposition)

●릴레이션 분해가 가져오는 잠재적인 문제들

▷1. 일부 질의들의 수행시간이 길어진다.

▷2. 분해된 릴레이션들을 사용하여 원래 릴레이션을 재구성하지 못할 수 있다.

▷3. 어떤 종속성을 검사하기 위해서는 분해된 릴레이션들의 조인이 필요할 수 있다.

 

●무손실 분해 (lossless decomposition)

▷분해한 두 릴레이션을 조인하면 원래의 릴레이션을 완전하게 얻을 수 있는 분해이다.

 

●손실

▷조인 하였을 때 원래의 릴레이션의 있던 정보보다 만거나 적으면 손실이다.

 

●가짜 투플

▷원래 릴레이션에 존재하지 않던 투플들이다.

 

●제1정규형

▷릴레이션 R의 모든 애트리뷰트가 원잣값만을 갖는다는 것이다.

▷기본 키에 대한 부분 함수적 종속성을 없애기 위해 분해한다.

▷1. 원래 릴레이션에서 기본 키에 부분적으로 종속되는 애트리뷰트들은 한 릴레이션 에 속하도록 한다.

▷2. 원래 릴레이션의 나머지 애트리뷰트들이 또 다른 릴레이션에 포함되며 학번 애트리뷰트를 외래 키로 이 릴레이션에 포함시킨다.

 

●제2정규형

▷릴레이션 R이 제1정규형을 만족하면서, 어떤 후보 키에도 속하지 않는 모든 애트리뷰트들이 R의 기본 키에 완전하게 함수적으로 종속하는 것이다.

▷기본 키가 두 개 이상일 때만 제1정규형이 제2정규형을 만족하는가를 고려할 필요가있다.

 

●제3정규형

▷릴레이션 R이 제2정규형을 만족하면서, 키가 아닌 모든 애트리뷰트가 릴레이션 R의 기본 키에 이행적으로 종속하지 않는 것이다.

▷기본 키가 아닌 애트리뷰트에 종속되는 애트리뷰트, 키가 아니면서 다른 애트리뷰트를 결정하는 애트리뷰트를 새로운 릴레이션에 속하도록 한다.

 

●BNCF

▷릴레이션 R이 제3정규형을 만족하고, 모든 결정자가 후보 키어야 한다는 것이다.

 

●역정규화 (denormalization)

▷주어진 응용에서 빈번하게 수행되는 검색 질의들의 수행 속도를 높이기 위해서 이미 분해된 두 개 이상의 릴레이션들을 합쳐서 하나의 릴레이션으로 만드는 작업이다.

▷성능만 보면 높은 정규형을 만족시키는 스키마가 최적인 것은 아니다.

 

◆뷰 (viewed table, SQL view)

▷1. 보안 메커니즘으로서

▷2. 복잡한 질의를 간단하게 표현하는 수단

▷3. 데이터 독립성을 높이기 위해서 사용된다.

 

●뷰

▷가상 릴레이션(virtual relation)을 의미하는 데 사용된다.

ㄴ실제로 투플을 가지고 있지 않은 릴레이션

▷기존의 기본 릴레이션(base relation)이나 또 다른 뷰에 대한 SELECT문의 형태로 기억 됨

▷뷰는 자체적으로 디스크에 저장된 투플들을 갖고 있지 않지만 사용자가 질의 할 수 있는 릴레이션의 하나이다.

▷뷰는 릴레이션으로부터 데이터를 검색하거나 갱신할 수 있는 동적인 창(dynamic window)의 역할 한다.

 

●뷰의 정의

○CREATE VIEW 뷰이름 [(애트리뷰트(들))]

○AS SELECT문

○[WITH CHECK OPTION] ;

▷뷰를 정의하려면 뷰를 만들 수 있는 권한을 데이터베이스 관리자로부터 받아야 한다.

 

●뷰를 사용해 DBMS 접근 과정

▷1. 시스템 카탈로그로부터 뷰의 정의, 즉 SELECT문을 검색한다.

▷2. 기본 릴레이션에 대한 뷰의 접근 권한을 검사한다.

▷3. 뷰에 대한 질의를 기본 릴레이션에 대한 동등한 질의로 변환한다.

 

●뷰의 장점

▷복잡한 질의를 간단하게 표현할 수 있다.

▷데이터 보안 기능을 제공한다.

▷동일한 데이터에 대한 여러 가지 뷰를 제공한다.

 

●뷰의 단점

▷모든 뷰가 갱신이 가능하지 않다.

▷성능이 약간 저하될 수 있다.

●뷰의 갱신

▷뷰는 원래 검색용도여서, 뷰의 갱신은 제한적이다.

 

 

'학교수업 > 데이터베이스' 카테고리의 다른 글

데이터베이스 15주차 요약  (0) 2023.01.31
데이터베이스 13주차 요약  (0) 2023.01.31
데이터베이스 12주차 요약  (0) 2023.01.31
데이터베이스 11주차 요약  (0) 2023.01.31
데이터베이스 10주차 요약  (4) 2023.01.31
'학교수업/데이터베이스' 카테고리의 다른 글
  • 데이터베이스 15주차 요약
  • 데이터베이스 13주차 요약
  • 데이터베이스 12주차 요약
  • 데이터베이스 11주차 요약
메카인
메카인
  • 메카인
    메카인의 지식창고
    메카인
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩 공부
        • TIL(Today I Learn)
        • TIL
        • 백준(C++)
        • Python
        • 알고리즘
        • 프로젝트 회고
      • C++
        • C++
        • C++ STL
        • C,C++ mCoding yotube
      • 게임개발
        • 언데드서바이벌_골드메탈_클론코딩
        • 3D_골드메탈_클론코딩
        • 유니티_문제해결
        • 게임 수학
      • Unreal 공부
        • UE5 GameDev
        • Unreal Engine 4 C++ The Ult..
      • 교재 문제 풀이
        • 운영체제
      • 정보처리기사
        • 정처기 요약
        • 정처기 오답노트
      • 학교수업
        • 데이터베이스
        • 프로그래밍 언어론
        • 리눅스 시스템
        • 네트워크
      • 일상
        • 주식
        • 독서
      • (비공개 전용)
        • memory
        • Build
        • OOP
        • Smart Pointer
        • lamda
        • 게임 수학
        • 모던 C++
        • 모던 C++ STL
        • 모던 C++ Concurrency, Paralle..
        • 책
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 블로그 관리
  • 링크

  • 공지사항

    • 공지사항 - 인생과 블로그의 목표
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
메카인
데이터베이스 14주차 요약
상단으로

티스토리툴바