본문으로 바로가기

post by WHITEHATS

정보처리기사 (필기) - 관계 데이터베이스 모델과 언어 2




3. 관계대수 및 관계해석


▶ 관계대수 : 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적 언어

- 순수 관계 연산자 : Select, Project, Join, Division

- 일반 집합 연산자 : UNION(합집합), INTERSECTION(교집합), DIFFERENCE(차집합), CARTESIAN PRODUCT(교차곱)


▶ 순수관계 연산자 (Select)

- 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만든다. 수평연산 이라고도 함.

- 연산자의 기호는 그리스 문자 시그마(σ)를 사용

- 표시 형식 : σ<조건> 릴레이션 이름 

- 예제) σ평균>=90 성적



▶ 순수관계 연산자 (Project)

- 릴레이션에서 속성에 제시된 Attribute만을 추출하는 연산, 수직연산

- 연산자의 기호는 그리스 문자 파이(π)를 사용

- 표시형식 : π<속성> (릴레이션 이름)

- 예제) π이름.평균 (성적)



▶ 순수관계 연산자 (Join ) -> 두개의 테이블을 합치는 것

- 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만듬.

- 연산자의 기호는 ▷◁를 사용

- 표시 형식 : R▷◁속성r = 속성s S (R, S : 릴레이션 이름, r, s :각 릴레이션의 속성)

- 예제) 성적▷◁이름 = 이름 주소




▶ 순수관계 연산자 (Division)

- R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산

- 연산자의 기호는 ÷ 를 사용

- 표시 형식 : R [ 속성r ÷ 속성s ] S

- 예제) 수강 [ 과목 ÷ 과목 ] 강의



 일반 집합 연산자

- UNION( 합집합 ∪ ) : 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거

- INTERSECTION( 교집합 ∩ ) : 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산

- DIFFERENCE( 차집합 - ) : 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산

- CARTESIAN PRODUCT( 교차곱 × ) : 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산


 관계해석

- 관계 데이터의 연산을 표현하는 방법

- 원하는 정보가 무엇이라는 것만 정의하는 비 절차적 언어.

- 튜플 관계해석과 도메인 관계해석이 있다.




4. 정규화(Normalization)


 정규화 : 잘못 설계된 관계형 스키마더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어가는 과정


 제1정규형, 제2정규형, 제3정규형, BCNF형, 제4정규형, 제5정규형


 정규형의 차수가 높아질수록 만족시켜야 할 제약 조건이 늘어난다.


 정규화는 논리적 설계 단계에서 수행


 정규화의 목적

- 데이터 구조의 안정성을 최대화

- 어떠한 릴레이션표현 가능하게 만듬

- 중복 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지

- 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄임


 이상(Anomaly) 현상

- 정규화를 거치지 않으면 데이터베이스 내에 데이터들이 불필요하게 중복되어 예기치 못한 곤란한 현상이 발생하는데 이를 이상현상이라 한다.

-- 삽입이상(InsertionAnomaly) : 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들도 함께 삽입되는 현상

-- 삭제이상(DeletionAnomaly) : 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 연쇄삭제 현상

-- 갱신이상(Update Anomaly) : 튜플에 있는 속성값을 갱신 할 때 일부 튜플의 정보만 갱신되어 모순이 생기는 현상


▶ 정규화 과정

- 1NF(제1정규형) : 모든 도메인이 원자값만으로 되어있는 릴레이션

- 2NF(제2정규형) : 1NF 이면서, 키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속 관계를 만족하는 릴레이션

- 3NF(제3정규형) : 2NF이고, 키가 아닌 모든 애트리뷰트가 기본키에 대해 이행적 종속 관계를 이루지 않도록 제한한 릴레이션

- BCNF(Boyce-Code 정규형) : 결정자가 모두 후보키인 관계형

-- 키가 아닌 모든 속성은 각 키에 대하여 완전 종속해야 한다.

-- 키가 아닌 모든 속성은 그 자신이 부분적으로 들어가 있지 않은 모든 키에 대하여 완전 종속해야 한다.

-- 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속할 수 없다.

- 4NF(제4정규형) : 다치 종속 속성을 제거한 관계형

- 5NF(제5정규형) : 조인 종속성의 만족이 후보키를 통해서만 만족되는 릴레이션


▶ 정규화 절차



모든 값은 단일 값을 가지고, 테이블의 모든 행은 달라야 함


1정규형이고, 부분 함수적 종속을 제거완전 함수적 종속을 만족


2정규형이고, 주 식별자가 아닌 모든 속성들이주 식별자에 이행적 함수 종속 제거


3정규형이고, 모든 결정자들이 후보 식별자여야 함.


주 식별자에 대해 다중 값 종속을 갖지 않는 릴레에션


모든 조인 종속은 후보 식별자를 통해 성립



4-1. 정규화 : 제 1정규형  = 1NF


▶ 복수의 속성값을 갖는 속성의 분리



4-2. 정규화 : 제 2정규형  = 2NF


▶ 주 식별자에 종속적이지 않는 속성 분리


▶ 1정규형이고, 부분 함수적 종속을 제거해 완전 함수적 종속을 만족




4-3. 정규화 : 제 3정규형  = 3NF


 2정규형이고, 주 식별자가 아닌 모든 속성들이 주 식별자에 이행적 함수 종속제거


 신청번호 -> 회원번호, 회원번호 -> 회원주소

- 신청번호 -> 회원 주소는 이행적 함수 종속

- 이행적 함수 종속의 속성, 신청번호와 회원주소를 분리하여 비이행적 함수 종속을 만들면 3정규형 만족



4-4. 정규화 : BCNF


 3정규형이고, 모든 결정자들이 후보 식별자여야 함.

- 후보키 : (학번, 과목), (학번, 강사)

- 함수적 종속 : (학번, 과목) -> 강사, 강사 -> 과목

- 결정자 : (학번, 과목), 강사

- 강사의 속성이 결정자이기는 하나 후보키가 아니므로 강사 속성을 분리하면 모든 결정자가 후보키 이므로 BCNF를 만족



4-5. 제 4정규형 : 4NF


 주 식별자에 대해 다중 값 종속을 갖지 않는 릴레에션

- 다치 종속 : 1:다 대응값

- 다치 종속 값 제거 : 1:다 대응을 1:1 대응으로 만든다.

- A --> B


 5NF(제5정규형)

- 조인 종속성의 만족이 후보키를 통해서만 만족되는 릴레이션


4정규형하고 5정규형은 이름만 알아도 됨!!


하얀모자의 whitehat



}