정처기/데이터베이스 구축

4. 설계 정규화 - 42. DB설계, 정규화

hyehh 2023. 5. 26. 02:35
728x90
반응형
SMALL
728x90
반응형
SMALL

42. DB설계, 정규화

1. 데이터베이스 설계 단계 - 개념적 설계, 물리적 설계 

2. 정규화개념

3. 정규화 목적

4. 이상 현상

5. 함수적 종속


1. 데이터베이스 설계 단계

1. 요구조건 분석

제일 먼저, 데이터베이스 사용자로부터 요구조건 수집과 요구조건 명세서를 작성한다.

 

2. 개념적 설계

현실세계에 있는 데이터모델을 개념적으로 ERD로 설계한다. 

1. 목표 DBMS에 독립적인 개념 스키마를 설계한다.

2. 개념 스키마 모델링(E-R다이어그램 작성)과 트랜잭션 모델링을 병행 수행한다. (전체적인 행위를 모델링)

 

3. 논리적 설계

개념적 설계를 한 ERD를 논리적 설계 RDB(관계형 데이터베이스)로 바꾼다. 

1. 목표 DBMS에 종속적인 논리적 스키마를 설계한다. 스키마의 평가 및 정제를 한다. (정규화 단계)

2. 논리적 데이터 모델로 변환 및 트랜잭션 인터페이스를 설계한다. (각각의 릴레이션들이 어떻게 자료를 주고받는지 설계)

 

4. 물리적 설계

RDB로 설계가 된 애내를 실제 저장소에 저장하는 방식으로 저장한다. 

1. 목표 DBMS에 종속적인 물리적 구조를 설계한다.

2. 저장 레코드 양식 설계와 레코드 집중의 분석/설계, 액세스 경로 인덱싱, 클러스터링(Cluster: 묶다.), 해싱등의 설계가 포함된다.

3. 접근 경로 설계 및 트랜잭션 세부 설계를 한다.

 

5. 데이터베이스 구현

실제로 프로그램이나, DBMS 맞게 스키마(구조)를 작성하는  형태로 구성된다. 

1. 목표 DBMS의 DDL로 스키마를 작성한다. *데이터베이스에 등록 후 트랜잭션을 작성한다. 

 

# 트랜잭션

trans 교환하는 

action 행위 

예 ) ATM을 이용하여 은행계좌에 10만 원을 입금하려고 한다.

1. 카드를 넣는다.

2. 비번을 입력한다. 

3. 돈을 넣는다.

4. 돈을 센다.

5. 금액 확인한다.

6. 돈이 통에 들어간다.

7. 입금이 완료되었다.

8. 카드를 뽑는다.

이게 하나의  트랜잭션이다.

어떤 행위 하나의 절차 전체를 트랜잭션이라고 한다. 


요구조건: 학교에 대한 DB를 구축해라

학교에서 학생, 교수, 강의실, 과목 엔티티를 도출함 

 

순서

1. 애내를 개체로 만들어준다. 이 개체의 각각의 속성들 (학번, 주소, 담당교수)을 ERD로 만든다.

2. ERD를 가지고 어떤 기준으로 RDB 테이블 형태로 만든다. 필드를 구성한다. 데이터 정의를 하는 것이다.  <학생> 테이블에는 학번, 이름, 전공, 학년으로 속성을 넣고 레코드에 데이터를 넣는다. ERD를 가지고 테이블을 만드는 과정, 규칙을 매핑 룰이라고 한다. (Mapping Rule : 그림 그리는 방식 ) 

3. 실제 레코드에 관련된 물리적 설계를 한다.

4. 데이터베이스 구현


2. 정규화(Normalization)의 개념

논리 설계 부분에서 정규화가 들어간다.

 

# 정규화

현실세계에 있는 데이터를 뽑아왔는데 컴퓨터에 저장할 수 있는 방식 또는 다른 어떤 문제가 발생할 수 있거나 각각 속성들 마다 종속성이 발생할 수 있게 되는데, 그러면 데이터에 위험이 생기게 된다. 이 위험을 해결하기 위해서 테이블을 쪼갠다. 

 

현실세계에 있는 데이터를 테이블로 RDB로 만들었는데, 문제점이 발생한 것이다  

문제점 (함수적 종속성이나 종속성 이론) 에 의해서 설계가 잘못된 것이다. 테이블을 여러 개로 쪼개 나가는 과정을 정규화라고 한다. 

 

함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정이다.

좋은 데이터베이스 스키마를 생성하고 불필요한 데이터의 중복을 방지하여 정보 검색을 용이하게 할 수 있도록 허용한다.

 

핵심이 뭐냐?

쪼개어 테이블을 나눈다.


3. 정규화의 목적

1. 데이터 구조의 안정성 최대화

 

2. 중복 데이터의 최소화

현실 세계의 데이터를 가져오다보면 학번 995007이 테이블에 2개, 3개 들어가는 상황이 생길 수 있다. 다양한 데이터를 모으다 보니깐 똑같은 학번이 학생 테이블에 하나만 있어야 되는데 더 들어갈 수 있다.

 

3. 수정 및 삭제시 이상 현상 최소화

 

4. 테이블 불일치 위험 간소화


정규화 과정

도-부-이-결-다-줘

두(도) 부 이걸(결) 다 줘(조)

이상현상과 함수적 종속을 해결하기 위해 사용하는 것이 정규화이다.

 

비정규 릴레이션 

ERD에서 테이블형태로 가져온 이때, 도메인이 원자값이 아닌 애들을 해결해야 한다.

# 도메인이 원자값

모든 도메인 하나의 속성값은 더 이상 분해할 수 없을 때까지 쪼갠 값

 

 

1NF(normal form)  = 1차 정규형, 1 정규형

학생 테이블을 가져왔는데 한 칸에  이름, 학과 두 개가 들어가져 있다. 

도메인은 한 필드에 들어갈 수 있는 값의 범위인데, 이름과 학과를 쪼갤 수 있음에도 한 칸에 들어가 있으면 

다중값 속성이라고 한다. 이것을 쪼개는 것을 1차 정규형이라고 한다.

# 다중값 속성 (Multi Value Attribute)

속성이 분리될 수 있는 여러 속성으로 구성된 것

 

 

2NF 

부분적 함수 종속을 제거하면 2차 정규형이다.

 

3NF

2차 정규형 중에 혹여 이행적 함수 종속이 있다. 이때 이행적 함수 종속을 해결하면 3차 정규형이다.

 

BCNF (Boyce-codd normal form 보이스-코드 정규형.)

3차 다음에는 4차 정규형이 아닌 BCNF라고 한다.

결정자이면서 후보키가 아닌 함수 종속 제거한다. 

 

4NF

4차 정규형은 다치 종속 제거를 한다.

 

5NF

조인 종속성을 제거  

 


1차 정규형

어떤 릴레이션에 속한 모든 도메인이 원자값(Atomic Value)만으로 되어 있는 릴레이션이다.

 

# 원자값 (Atomic Value)

하나의 항목에는 중복된 값이 입력될 수 없음

 

하나의 속성만 있어야 하고 반복되는 속성은 별도 테이블로 분리한다.


2차 정규형

1정규형을 만족하고, 릴레이션에 내재된 부분 함수적 종속을 제거한다.

기본키가 아닌 애트리뷰트 모두가 기본키에 완전 함수 종속이 되도록 부분 함수적 종속에 해당하는 속성을 별도의 테이블로 분리한다. 

고객아이디, 이벤트번호에서 당첨번호

당첨번호는 완전 함수적 종속이라 문제 될 것이 없다.

따로 테이블을 뽑으면 된다. [ ID | EN | D.N ] 

ID와 EN은 기본키가 된다. 

 

고객아이디와 등급과 할인율은 이행 함수적 종속을 가지고 있다. 

고객아이디에 의해서만 등급과 할인율이 결정이 되니깐 따로 테이블을 뽑는다. [ ID | LV | Dis ]  

ID가 기본키가 된다.

 

 

등급, 할인율 필드는 혼합 속성의 기본키(고객아이디, 이벤트번호)에 부분 함수적 종속성을 갖는다.

다음과 같이 완전 함수적 종속을 만족하도록 두 개의 테이블로 분할하여 부분 함수적 종속성을 해소한다.

 

 

ID끼리 조인 하면 된다.

그러면 부분 함수적 종속이 해결된다. 즉, 완전 함수적 종속을 만들면 된다.

고객 테이블과 이벤트 테이블을 별도로 만들어 쪼개내면 된다. 


3차 정규형

1,2 정규형을 만족하고, 속성 간 이행적 함수 종속을 제거한다.

이행(다른 상태로 옮아감)적 함수 종속 :  A → B,  B → C , A C

위 그림과 같이 고객아이디는 등급을 결정하고, 등급은 할인율을 결정하는 이행 함수적 종속성이 남아 있다.

아래 그림과 같이 테이블을 2개로 분할하여 이행 종속성을 해소한다.

등급끼리 조인하면 된다.


BCNF(보이스/코드) 정규형  

Boyce-codd Normal Form

 

1, 2, 3 정규형을 만족하고, 결정자가 후보키가 아닌 함수 종속이 제거되면 보이스/코드 정규형에 속한다.

상위 정규형 (숫자가 큰) 하위 정규형을 모두 만족한 상태이다.

 

후보키를 여러 개 가지고 있는 릴레이션에서 발생할 수 있는 이상 현상을 해결하기 위해 3정규형 보다 좀 더 강력한 제약조건을 적용한다.

일반적으로 다른 말로 3정규형보다 강한 제약조건을 가지고 있다라고 해서 간혹 강한 3 정규형이라고도 한다. 

 

이상현상 예 ) 어떤 속성을 결정할 수 있는 애들이 보통 후보키가 된다. 

학번이 학년을 결정하는 것처럼 결정할 수 있어야 되는데 그렇지 않은 애가 있는 것이다. 

 

보이스/코드 정규형에 속하는 모든 릴레이션은 3정규형에 속하지만, 3정규형에 속하는 모든 릴레이션이 보이스/코드 정규형에 속하지는 않는다. 

쉽게 말하자면 3정규형에 만족한다고 해서 보이스/코드에 속하는 것은 아니다. 즉, 보이스/코드까지 완성을 해야지만 된다.


함수 종속관계에서(고객아이디, 인터넷강의)는 기본키이다. 이어서 (고객아이디, 담당강사번호) 후보키로는 튜플을 식별하지 못하므로 모두 후보키가 될 수 없다.

우리가 인터넷강의를 하나 구입하면 그 강의에 대한 담당강사가 있다. 

즉, 담당강사는 인터넷강의를 결정하고, 고객아이디와 인터넷강의는 담당강사를 결정한다. 

 

근데 고객아이디와 인터넷강의를 기본키로 묶었는데  이것은 뭐가 좀 애매하다.

- 담당강사마다 자기가 담당하는 과목이 따로 있으니깐 보통은 담당강사번호에 따라서 인터넷강의를  묶는 게 맞다. 

- 고객아이디는 그 담당강사번호로 묶는 게 맞다.

 

즉, 밑에 나와있는 고객아이디와 담당강사번호로는 각각의 레코드를 식별할 수 없다.

그래서 아예 고객아이디와 담당감사번호를 쪼개내고 사실 애내가 후보키이다. 

 

고객아이디와 담당강사번호가 있다고 해서 인터넷강의가 결정되는 것은 아니다. 

왜? 어떤 강의 같은 경우에는 한 과목을 여러 사람이 하는 경우도 있다.  이때 이것을 어떻게 하냐 이것이다.

 


 

아래와 같이 후보키가 아닌 결정자를 제거하고 분할한다.

담당강사번호끼리 링크한다.


4정규형

1,2,3, BCNF 정규형을 만족하고, 다가(다치) 종속을 제거한다.


5정규형

1,2,3, BCNF,4 정규형을 만족하고, 후보키가 통하지 않은 조인 종속을 제거한다.


4. 이상현상 (Anomaly)

릴레이션 조작 시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 곤란한 현상을 의미한다.

노멀 하지 않는 어노멀리 현상

 

종류

1. 삽입 이상

2. 삭제 이상

3. 갱신 이상

기본키는 중복되면 안되는데 수강 테이블에서는 학번이 중복된다. 그래서 과목코드와 학번을 묶어 기본키로 지정한것이다.


1. 삽입 이상 (Insertion Anomaly)

데이터를 삽입할 때 불필요한 데이터가 함께 삽입되는 현상이다.

 

개체무결성 위반 

<수강> 릴레이션에 학번이 600이고, 학년이 2인 학생 값을 새롭게 삽입하려 할 때, 이 학생이 어떤 과목을 등록해서 과목번호를 확보하지 않는 한 이 삽입은 성공할 수 없다.

과목코드와 학번 두 개가 Set로 기본키이다. 즉, 과목코드를 모른다면 과목코드는 Null값 = 기본키도 Nuill값이 된다. 

 

개체무결성

기본키에 대한 제약조건, 기본키는 중복되거나 Null값을 가질 수 없다.

 

삽입 이상 문제 해결 방법

학번과 과목코드 이 둘을 쪼갠다. 즉, 테이블 쪼개는 정규화를 한다.

 

 

2. 삭제 이상 (Deletion Anomaly)

릴레이션의 한 튜플을 삭제함으로써 연쇄 삭제로 인해 정보의 손실을 발생시키는 현상이다.

 

<수강> 릴레이션에서 학번이 200인 학생이 과목 'C123'의 등록을 취소한다고 하자

해당 학생의 등록을 취소하면서 이 학생의 성적과 학년 정보도 함께 삭제된다. 

과목코드를 삭제하면 과목코드가 Null값이 되고 기본키도 Null값이 된다 그러면 성적, 학년도 같이 지워야 한다. 

 

 

3. 갱신 이상 (Update Anomaly)

튜플 중에서 일부 속성을 갱신함으로써 정보의 모순성이 발생하는 현상이다.

 

<수강> 릴레이션에 학번이 400인 학생의 학년을 2에서 3으로 변경시킨다고 하자,

이 변경을 위해서는 이 릴레이션에 학번 400이 나타나 있는 튜플 3개 모두에 대해 학년의 값을 경신시켜야 한다.

그렇게 하지 않고 일부 튜플만 변경시키게 되면 학번 400인 학생의 학년이 2와 3, 즉 두 가지 값을 갖게 되어 일관성이 없게 된다. 


5. 함수적 종속 = 함수 종속성

개체 내에 존재하는 속성 간의 관계를 종속적인 관계로 정리하는 방법이다.

데이터 속성들의 의미와 속성 간의 상호 관계로부터 도출되는 제약조건이다.

 

기준값을 결정자(Determinant), 종속되는 값을 종속자 (Dependent)

속성 Y는 속성 X에 함수적 종속이라 하고 표현은 X → Y로 표현한다. 이때 X를 결정자, Y를 종속자라고 부른다.

학번이 과목코드를 결정하나?

학번은 과목코드가 달라질 수 있다. 

400학번은 C312, C324, E412 다른 과목코드를 갖고 있다.

 

학번은 학년을 결정한다.

100학번은 4학년이다.

400학번은 2학년이다.

 

과목코드는 성적이 나올 수 있다.

보통은 성적은 과목코드로만 나오는 게 아니라 학번, 과목코드 2개의 기본키에 대해서 종속된다.

 

수학적으로 표현하면

1. 학번 → 학년 :  학번은 학년을 결정한다.

2. 학번, 과목코드 → 성적 : 학번과 과목코드는 성적을 결정한다.


완전 함수적 종속

[학번, 과목코드 ] → 성적

- 성적은 학번과 과목코드에 완전 함수적 종속된다.

- 학번과 과목코드 2개 기본키에 의해서 성적이 결정된다. 기본키 2개에 의해서 결정된 성적이기 때문에 (완전 함수적 종속)이라고 이야기한다.

 


부분 함수적 종속

 [학번] → 학년   

- 복합 속성(A, B)에 대하여 A → C가 성립할 때

- 학년은 기본키에 부분 함수적 종속된다.

- 학번은 학년을 결정하는데, 학년은 과목코드하고는 전혀 관련이 없다. 즉, 기본키가 혼합 속성일 경우에 특정 필드 하나 학번이 (두 개가 아닌) 학년을 결정할 경우를 부분 함수적 종속이라고 이야기한다.


이행 함수적 종속

속성 X, Y, Z가 주어졌을 때 X → Y,  Y → Z 하면 X → Z가 성립된다는 것이다.

고객아이디는 등급을 결정하고, 등급은 할인율을 결정한다. 

즉, 고객아이디로 할인율을 결정할 수 있는 이행 종속 문제가 발생한다.

 

3차 정규형 진행 

(고객아이디, 등급), (등급, 할인율) 두 개의 테이블로 분리하도록 한다

 


문제 풀이

1. 릴레이션 조작 시 데이터들이 불필요하게 중복되어 예기치 않게 발생하는 곤란한 현상을 의미하는 것은?

이상 현상 

 

2. 이행적 함수 종속 관계를 의미하는 것은?

① A → B이고 B → C일 때, A →C를 만족하는 관계

 A → B이고 B → C일 때, C →A를 만족하는 관계

 A → B이고 B → C일 때, B →A를 만족하는 관계

 A → B이고 B → C일 때, C →B를 만족하는 관계

1번 

 

3. 데이터베이스의 논리적 설계(Logical Design) 단계에서 수행하는 작업이 아닌 것은?

① 레코드 집중의 분석 및 설계

② 논리적 데이터베이스 구조로 매핑(Mapping)

③ 트랜잭션 인터페이스 설계

④ 스키마의 평가 및 정제

1번 

 

4. 정규화의 목적으로 옳지 않은 것은?

① 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만든다.

② 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄인다.

③ 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 야기한다. 

④ 효과적인 검색 알고리즘을 생성할 수 있다.

3번 

 

5. 데이터베이스 설계 시 물리적 설계 단계에서 수행하는 사항이 아닌 것은?

① 저장 레코드 양식 설계

② 레코드 집중의 분석 및 설계

③ 접근 경로 설계

④ 목표 DBMS에 맞는 스키마 설계

4번 


반정규화 = 역정규화 

정규화를 통하여 정합성과 데이터 무결성이 보장되지만, 테이블의 개수가 증가함에 따라 테이블 간의 조인이 증가하여 조회 성능이 떨어질 수 있는데

이렇게 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능 향상과 개발(Development) 및 운영(Manintenance)의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미한다.

 

반정규화 기법

테이블 반정규화, 컬럼 반정규화, 관계 반정규화

 

테이블 반정규화 기법

테이블 병합, 테이블 분할, 테이블 추가

 

테이블 추가 반정규화 유형

중복 테이블 추가, 집계 테이블 추가, 진행 테이블 추가, 부분 테이블 추가


테이블 병합

1:1 관계 테이블 병합

1:1 관계를 통합하여 성능을 향상한다.

 

1:M 관계 테이블 병합

1:M 관계를 통합하여 성능을 향상한다.

 

슈퍼/서브 타입  테이블 병합

슈퍼/서브를 통합하여 성능을 향상한다. (상위/하위 테이블로 생각하면 된다.)


테이블 분할(파티셔닝)

테이블을 여러 부분으로 분할하는 것을 의미한다.

왜 나누느냐? 레코드가 많으면 조회하려면 엄청난 시간이 필요하므로 나눈다.

 

로우 분할(행 분할) 

테이블이 하나 있는데 레코드가 튜플의 개수가 30억 개다. 30억을 1억씩 쪼갠다.

 

컬럼 분할 (열분할)

열이 300개 된다. 애를 쪼갠다던지 분할한다. 

 

대표적인 분산 데이터베이스 분할로 각 파티션은 여러 노드로 분산 배치되어 사용자가 각 노드에서 로컬 트랜잭션을 수행할 수 있다.

파티션 각각이 작은 데이터베이스가 되도록 분할하는 방법과 하나의 테이블만 같이 선택된 요소로 분리하는 방법이 있다.


행/열 분할 기법

수직 분할

트랜잭션의 처리 유형을 파악하고 컬럼(열)단위의 테이블을 저장 장치의 I/O 분산 처리를  위하여 테이블을 1:1로 분리하여 성능을 향상한다.

 

수평 분할

로우(행) 단위로 집중 발생되는 트랜잭션을 분석하여 저장 장치의 I/O 및 데이터 접근의 효율성과 성능 향상을 위해 로우 단위로 테이블을 분할한다.


분할 키 기준 분할 기법

범위 분할 

분할 키 값이 범위 내에 있는지 여부로 구분한다. 예를 들어, 우편번호를 분할 키로 수평 분할하는 경우이다.

(일, 월, 분기 등 순차 데이터를 관리하는 테이블에 많이 사용한다.)

 

목록 분할

값 목록에 파티션의 할당 분할 키 값을 그 목록에 비추어 파티션을 선택한다.

예를 들어, Country라는 칼럼의 값이 Iceland, Norway, Sweden, Finland, Denmark 중 하나에 있는 행을 빼낼 때 북유럽 국가 파티션을 구축할 수 있다.

 

해시 분할 

해시 함수의 값에 따라 파티션에 포함할지를 결정한다. 예를 들어, 4개의 파티션으로 분할하는 경우 해시 함수는 0~

3의 점수를 돌려준다.

 

 

합성 분할

범위, 목록, 해시 분할을 결합하여 사용한다. 예를 들면 먼저 범위 분할하고, 다음에 해시 분할 같은 것을 생각할 수 있다. 컨시스턴트 해시법은 해시 분할 및 목록 분할의 합성으로 간주될 수 있고 키 공간을 해시 축소함으로써 일람할 수 있게 한다. 

 

라운드로빈 분할 

- 라운드로빈 분할로 회전하면서 새로운 행이 파티션에 할당된다.

- 파티션에 행의 고른 분포를 원할 때 사용한다.

- 기본키가 필수가 아니며, 해시 분할과 다르게 분할 칼럼을 명시하지 않아도 된다.


데이터베이스 클러스터링

두 대 이상의 서버를 하나의 서버처럼 운영하는 기술로, 서버 이중화 및 공유 스토리지를 사용하여 서버의 가용성을 높이는 기술이다.

 

병렬 처리 클러스터링

처리율을 높이기 위한 목적으로 단위 작업을 여러 서버에서 분산 처리한다.

병렬 예 ) A, B, C가 있다면 

병렬은 동시에 여러 개로 작업을 한다.  A, B, C를 나눠서 처리하는 것을 의미한다.

 

고가용성 클러스터링

하나의 서버에 장애가 발생하면 다른 서버가 작업을 이어받아 처리하여 서비스 중단을 방지한다. 

고가용성 예 ) A, B, C가 있다면 

A에다가 계속 작업을 한다. 그러다가 A가 뻑가가면 B와 통신을 한다. B가 뻑하면 C와 통신을 한다. 

이렇게 이어받아서 처리하는 것을 고가용성이라고 한다.


테이블 추가

1. 중복 테이블 추가

업무가 다르거나 서버가 분리된 경우 같은 테이블을 중복으로 추가하여 원격조인을 제거하는 방법을 통하여 성능을 향상한다.

예 ) 

양쪽에 똑같은 테이블을 놓는 것이다.

 

2. 집계 테이블 추가

합계, 평균 등 통계 계산을 미리 수행하여 계산해 두어 조회 시 성능을 향상한다.

예 ) 성적 처리

각 점수마다 학생의 평균, 반의 평균, 전체 평균을 미리 만들어둔다. 그러면 굳이 서버에서 연산을 하는 작업이 필요 없어진다.

 

3. 이력 테이블 추가

이력 테이블에 레코드를 중복 저장하여 성능을 향상한다.

뭔가를 남겨두는 것이다. 

 

4. 부분 테이블 추가

하나의 테이블을 전체 컬럼 중 자주 이용하는 집중화된 컬럼이 있을 경우, 디스크 I/O를 줄이기 위해 해당 컬럼들을 모아놓은 별도의 반정규화된 테이블을 생성한다.

 

5. 진행 테이블 추가

검색 조건이 여러 테이블에 걸쳐 다양하게 사용되어 복잡하고 처리량이 많은 경우 사용한다.


컬럼 반정규화

중복 컬럼 추가 

조인 시 성능 저하를 예방하기 위해, 중복된 컬럼을 추가하여 조인 횟수를 감소시킨다.

 

파생 컬럼 추가

트랜잭션이 처리되는 시점에 계산 때문에 발생하는  성능 저하를 예방하기 위해 미리 계산된 값을 저장하는 파생 컬럼을 추가한다.

 

이력 테이블 칼럼 추가

대량의 이력 데이터를 처리할 때 임의의 날짜 조회나 최근 값을 조회할 때 발생하는 성능 저하를 예방하기 위해 최근값 여부, 시작일, 종료일 등의 기능성 컬럼을 추가한다.

 

PK(Primary Key: 기본키)에 의한 컬럼 추가

복합 의미가 있는 PK를 단일 속성으로 구성했을 때 발생하며 PK안에 데이터가 존재하지만, 성능 향상을 위해 일반 컬럼으로 추가한다.

 

응용 시스템 오작동을 위한 컬럼 추가

업무적으로는 의미가 없으나, 데이터 처리할 때 오류로 인해 원래값으로 복구하길 원하는 경우 이전 데이터를 임시로 중복 보관하는 컬럼을 추가한다.

 


관계 반정규화

중복 관계 추가

데이터 처리 시 여러 경로를 거쳐 조인할 수 있지만, 이때 발생할 수 있는 성능 저하를 방지하기 위해 추가적인 관계 설정을 통하여 성능을 향상할 수 있다. 


문제 풀이

1. 릴레이션 R의 모든 결정자(Determinant)가 후보키이면 그 릴레이션 R은 어떤 정규형에 속하는가?

BCNF 보이스/코드 정규화

 

2. 정규화 과정 중 1NE에서 2NF가 되기 위한 조건은?

① 1NF를 만족하고 모든 도메인이 원자값이어야 된다.

② 1NF를 만족하고 키가 아닌 모든 애트리뷰트들이 기본키에 이행적으로 함수 종속되지 않아야 한다.

③ 1NF를 만족하고 다치 종속이 제거되어 아야 한다.

④ 1NF를 만족하고 키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속 관계를 만족해야 한다.

4번

 

3. 다음과 같이 위쪽 릴레이션을 아래쪽 릴레이션으로 정규화를 하였을 때 어떤 정규화 작업을 한 것인가?

① 제1정규형 

② 제2정규형

③ 제3정규형

④ 제4정규형

1번 

 

4. 어떤 릴레이션 R의 모든 조인 종속성의 만족이 R의 후보 키를 통해서만 만족될 때, 이 릴레이션 R이 해당하는 정규형은?

① 제5정규형

 제4정규형

 제3정규형

 제1정규형

1번

 

1. 정규화된 엔티티, 속성, 관계를 시스템의 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법은?

반정규화 

 

2. 반정규화(Denormalization) 유형 중 중복 테이블을 추가하는 방법에 해당하지 않는 것은?

① 빌드 테이블의 추가

② 집계 테이블의 추가

③ 진행 테이블의 추가

④ 특정 부분만을 포함하는 테이블 추가

1번 

 

3. 병렬 데이터베이스 환경 중 수평 분할에서 활용되는 분할 기법이 아닌 것은?

① 라운드-로빈

② 범위 분할

③ 예측 분할 

④ 해시 분할

3번

 

4. 다음 중 반정규화의 이유로 가장 부적절한 것은?

① 데이터를 조회할 때 디스크 입출력량이 많아서 성능이 저하될 때 반정규화를 수행한다.

② 데이터 무결성을 보장하지 못할 때 반정규화를 수행한다. 

③ 경로가 너무 멀어 조인으로 인한 성능 저하가 예상될

④ 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행한다.

2번 정규화에 대한 내용이다. 

 

5. 테이블 반정규화 기법 중 테이블 병합이 아닌 것은?

① 1:1 관계 테이블 병합

② 1:M 관계 테이블 병합

③ 슈퍼/서브 타입 테이블 병합

④ 통계 테이블 추가

4번 


 

 

 

728x90
반응형
LIST