12. 관계형 데이터베이스의 제약 조건 - 무결성(Integrity)
무결성 (Integrity)
•
데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성
•
무결성 제약 조건
◦
데이터베이스에 들어있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건
•
개체 무결성
◦
기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정
•
참조 무결성
◦
외래키 값은 Null 이거나 참조 릴레이션의 기본키 값과 동일해야 한다.
◦
즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
13. 관계대수 및 관계해석
관계대수
•
관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
•
릴레이션을 처리하기 위해 연산자와 연산 규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션이다.
•
관계 데이터베이스에 적용하기 위해 특별히 개발한 순수관계연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있다.
순수 관계 연산자
Select
•
릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산
•
릴레이션의 행에 해당하는 튜플을 구하는 것이므로 수평 연산 이라고 함.
Project
•
주어진 릴레이션에서 속성리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
•
연산 결과에 중복이 발생하면 중복이 제거됨
•
릴레이션의 열에 해당하는 속성을 추출하는 것이므로 수직 연산자라고 함.
Join
•
공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
•
Join의 결과는 Cartesian Product(교차곱)을 수행한 다음 Select를 수행하는 것과 같음.
Division
•
X ⊃ Y 인 2개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산
일반 집합 연산자
관계해석 (Relational Calculus)
•
관계 데이터의 연산을 표현하는 방법
•
코드(Codd)가 수학의 Predicate Calculus(술어 해석)에 기반을 두고 관계 데이터베이스를 위해 제안했다.
•
원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지닌다.
•
원하는 정보를 정의할 때는 계산 수식을 사용
14. 이상 / 함수적 종속
이상 (Anomaly)
•
테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복(Redundancy)으로 인해 테이블 조작 시 문제가 발생하는 현상
•
종류
◦
삽입 이상
◦
삭제 이상
◦
갱신 이상
삽입 이상 (Insertion Anomaly)
•
테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
삭제 이상 (Deletion Anomaly)
•
테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발생하는 현상
갱신 이상 (Update Anomaly)
•
테이블에서 튜플에 있는 속성 값을 갱신할 때, 일부 튜플의 정보만 갱신되어 정보에 불일치성(Inconsistency)이 생기는 현상
함수적 종속 (Functional Dependency)
•
어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분집합이라 하자.
◦
속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때, Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다 라고 하고, X → Y 로 표기한다.
◦
X : 결정자(Determinant), Y : 종속자(Dependent)
•
함수적 종속은 데이터의 의미를 표현하는 것으로, 현실 세계를 표현하는 제약 조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건이다.
완전 함수적 종속
•
어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 속성 집합 X의 어떠한 진부분 집합 Z(즉, Z ⊂ X)에도 함수적 종속이 아닐 때, 속성 Y는 속성 집합 X에 완전 함수 종속 이라고 한다.
부분 함수적 종속
•
어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수정 종속이면서 속성 집합 X의 임의의 진부분 집합에 대해 함수적 종속일 때, 속성 Y는 속성 집합 X에 부분 함수적 종속 이라고 한다.
15. 정규화 (Normalization)
정규화
•
테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정
◦
무손실 분해
▪
테이블 R의 프로젝션(특정 테이블에서 일부 속성들만 추출하여 만든 테이블)인 R1, R2가 NATURAL JOIN을 통해 원래의 테이블 R로 정보 손실 없이 복귀되는 경우, R은 R1과 R2로 무손실 분해되었다고 한다.
•
정규화의 목적
◦
가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것
제 1정규형
•
테이블 R에 속한 모든 속성의 도메인(Domain)이 원자값(Atomic Value) 만으로 되어 있는 정규형
◦
테이블의 모든 속성 값이 원자값 으로만 되어 있는 정규형
제 2정규형
•
테이블 R이 제 1정규형이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
제 3정규형
•
테이블 R이 제 2정규형이고 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속(Transitive Functional Dependency)을 만족하지 않는 정규형
•
이행적 함수적 종속
◦
A→B 이고, B→C 일 때, A→C 를 만족하는 관계
BCNF
•
테이블 R에서 모든 결정자가 후보키(Candidate Key)이 정규형
•
일반적으로 제 3정규형에 후보키가 여러 개 존재하고, 이러한 후보키들이 서로 중첩되어 나타나는 경우에 적용 가능하다.
제 4정규형
•
테이블 R에 다중 값 종속(MVC) A→→B가 존재할 경우, R의 모든 속성이 A에 함수적 종속 관계를 만족시키는 정규형
◦
다중 값 종속 (다치 종속)
▪
A, B, C 3개의 속성을 가진 테이블 R에서 어떤 복합 속성(A, C)에 대응하는 B값의 집합이 A값에만 종속되고 C값에는 무관하면, B는 A에 다중 값 종속이라 하고, A→→B로 표기한다.
제 5정규형
•
테이블 R의 모든 조인 종속(Join Dependency)이 R의 후보키를 통해서만 성립되는 정규형
•
조인 종속
◦
어떤 테이블 R의 속성에 대한 부분 집합 X, Y, … Z가 있다고 할 때, 만약 테이블 R이 자신의 프로젝션 X, Y, … Z를 모두 조인 결과가 동일한 경우, 테이블 R은 조인 종속을 만족한다고 한다.
정규화 과정 정리
16. 반정규화 (Denormalization)
반정규화
•
시스템의 성능을 향상하고, 개발 및 운영의 편의성 등을 높이기 위해 정규화된 데이터 모델을 의도적으로 통합, 중복 ,분리하여 정규화 원칙을 위배하는 행위
•
반정규화를 수행하면 시스템의 성능이 향상되고, 관리 효율성은 증가하지만 데이터의 일관성 및 정합성이 저하될 수 있다.
•
과도한 반정규화는 오히려 성능을 저하시킬 수 있다.
•
반정규화의 방법
◦
테이블 통합
◦
테이블 분할
◦
중복 테이블 추가
◦
중복 속성 추가
테이블 통합
•
2개의 테이블이 조인되어 사용되는 경우가 많을 경우, 성능 향상을 위해 아예 하나의 테이블로 만들어 사용하는 것
테이블 분할
•
테이블을 수직 또는 수평으로 분할 하는 것
수평 분할
•
레코드(Record)를 기준으로 테이블을 분할하는 것
•
레코드별로 사용 빈도의 차이가 큰 경우, 사용 빈도에 따라 테이블을 분할함.
수직 분할
•
하나의 테이블에 속성이 너무 많을 경우, 속성을 기준으로 테이블을 분할 하는 것
중복 테이블 추가
•
작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
•
중복 테이블을 추가하는 경우
◦
여러 테이블에서 데이터를 추출해서 사용해야 할 경우
◦
다른 서버에 저장된 테이블을 이용해야 하는 경우
•
중복 테이블 추가 방법
◦
집계 테이블 추가
▪
집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
◦
진행 테이블의 추가
◦
특정 부분만을 포함하는 테이블의 추가
중복 속성 추가
•
조인이 자주 발생하는 속성인 경우
•
접근 경로가 복잡한 속성인 경우
•
액세스의 조건으로 자주 사용되는 속성의 경우
•
기본키의 형태가 적절하지 않거나 여러 개의 속성으로 구성된 경우
17. 시스템 카탈로그
시스템 카탈로그 (System Catalog)
•
시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
•
시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리 하는 시스템 테이블이다.
•
카탈로그들이 생성되면 데이터 사전(DD)에 저장되기 때문에 좁은 의미로는 카탈로그를 데이터 사전이라고도 한다.
메타 데이터 (Meta-Data)
•
시스템 카탈로그에 저장된 정보
•
메타 데이터의 유형
◦
데이터베이스 객체 정보: 테이블, 인덱스, 뷰 등의 구조 및 통계 정보
◦
사용자 정보 : 아이디, 패스워드, 접근 권한 등
◦
테이블의 무결성 제약 조건 정보 : 기본키, 외래키, NULL 값 허용 여부 등
◦
함수, 프로시저, 트리거 등에 대한 정보
데이터 디렉토리 (Data Directory)
•
데이터 사전에 수록된 데이터에 접근하는 데 필요한 정보를 관리 유지하는 시스템
•
시스템 카탈로그는 사용자와 시스템 모두 접근할 수 있지만, 데이터 디렉토리는 시스템만 접근할 수 있다.
18. 데이터베이스 저장 공간 설계
데이터베이스 저장 공간 설계
•
데이터베이스에 데이터를 저장하려면 테이블이나 컬럼 등 실제 데이터가 저장되는 공간을 확보해야 한다.
테이블 (Table)
•
데이터베이스의 가장 기본적인 객체
•
로우(Row, 행)와 컬럼(Column, 열)으로 구성되어 있음
•
데이터베이스의 모든 데이터는 테이블에 저장됨
정렬 (Column)
•
테이블의 열을 구성하는 요소
•
데이터 타입(Data Type), 길이(Length) 등으로 정의됨
테이블스페이스 (Tablespace)
•
테이블이 저장되는 논리적인 영역
•
한 개의 테이블 스페이스에 한 개 이상의 테이블을 저장할 수 있음