◆릴레이션 정규화 (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 |