💠기타/자격증

[정처기 필기] 「3」 | 논리 데이터베이스 설계 - (1.4) 정규화, 반정규화, 시스템 카탈로그

2024. 2. 8. 22:32
728x90

[정처기 필기] 3」 | 논리 데이터베이스 설계 - (1.4) 정규화, 반정규화, 시스템 카탈로그

「1」 소프트웨어 설계

「2」 소프트웨어 개발

> 「3」 데이터베이스 구축

> 논리 데이터베이스 설계, 물리 데이터베이스 설계, SQL 응용, SQL 활용, 데이터 전환

「4」  프로그래밍 언어 활용

「5」  정보시스템 구축 관리

 

1 데이터베이스 설계

2 데이터 모델의 개념

3 E-R 모델

4 관계형 데이터베이스의 구조

5 관계형 데이터베이스의 제약 조건 - 키(Key)

6 관계형 데이터베이스의 제약 조건 - 무결성

7 관계대수 및 관계해석

> 8 정규화(Normalization)

> 9 반정규화(Denormalization)

> 10 시스템 카탈로그

8. 정규화(Normalization)

정규화의 개요

 

- 하나의 종속성하나의 릴레이션에 표현될 수 있도록 분해해 가는 과정

- 제1정규형, 제2정규형, 제2정규형, BCNF형, 제4정규형, 제5정규형, 차수가 높아질수록 제약조건 늘어남

- 데이터베이스 논리적 설계 단계에서 수행

- 논리적 처리 / 품질에 큰 영향

- 정규화된 데이터 모델은 일관성, 정확성, 단순성, 비중복성, 안정성 등 보장

- 정규화 수준이 높을수록 유연한 데이터 구축 가능, 물리적 접근이 복잡하고 많은 조인으로 조회 성능 저하

 

정규화의 목적

 

- 데이터 구조의 안정성 / 무결성 유지

- 어떤 릴레이션이라도 표현 가능

- 효과적인 검색 알고리즘 생성

- 데이터 중복을 배제, 이상(Anomaly)의 발생 방지 / 자료 저장 공간의 최소화 가능

- 데이터 삽입 시 릴레이션 재구성 필요성이 줄어듦

- 데이터 모형의 단순화 가능

- 속성의 배열 상태 검증 가능

- 개체와 속성의 누락 여부 확인 가능

- 자료 검색, 추출의 효율성을 추구

 

이상(Anomaly)의 개념 / 종류

 

불필요하게 중복되어 릴레이션 조작 시 발생하는 현상, 삽입 이상, 삭제 이상, 갱신 이상이 있음

 

삽입 이상(Insertion Anomaly)

: 원치 않는 값들도 함께 삽입되는 현상

삭제 이상(Deletion Anomaly)

: 원치않는 값들도 함께 삭제되는 현상

갱신 이상(Update Anomaly)

: 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상

 

정규화의 원칙

 

정보의 무손실 표현 : 다른 스키마로 변환할 때 정보의 손실이 있으면 안 됨

분리의 원칙 : 하나의 독립된 관계성은 하나의 독립된 릴레이션으로 분리시켜 표현

데이터 중복성 감소

 

>함수적 종속 / 완전/부분 함수적 종속 및 이해<

 

함수적 종속 : 데이터들이 어떤 기준값에 의해 종속되는 것

ex) '학번'이 결정되면 '과목명'에 상관없이 '학번'에 항상 같은 '이름'이 대응, '이름'을 '학번'에 함수 종속적, '학번 →이름', 이때 '학번'을 결정자, '이름'을 종속자

 

완전 함수적 종속 : 어떤 속성이 기본키에 대해 완전히 종속적일 때

ex) '학번', '과목명'이 기본키일 때, '성적'은 '학번'과 '과목명'이 같은 경우 항상 같은 '성적'이 옴, '성적'은 '학번', '과목명'에 의해서만 결정되므로 '성적'은 기본키('학번', '과목명')에 완전 함수적 종속

 

부분 함수적 종속 : 어떤 속성이 기본키의 일부에만 종속적일 때

ex) '학년'은 '과목명'에 관계없이 '학번'이 같으면 항상 같은 '학년'이 옴, 기본키의 일부인 '학번'에 의해 '학년'이 결정되므로 '학년'은 부분 함수적 종속

 

정규화 과정

 

비정규 릴레이션

도메인이 원자값

1NF(제1정규형)

: 릴레이션에 속한 모든 도메인이 원자값만으로 되어있는 정규형

: 모든 속성이 단순 영역에서 정의

부분 함수적 종속 제거

2NF(제2정규형)

: 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족시키는 정규형

이행적 함수 종속 제거

3NF(제3정규형)

: 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속(A → B이고 B → C일 때 A → C 만족)을 만족하지 않는 정규형

: 무손실 조인 / 종속성 보존을 저해하지 않고 항상 3NF 설계 얻을 수 있음

↓ 결정자이면서 후보키가 아닌 것 제거

BCNF(Boyce-Codd 정규형)

: 결정자가 모두 후보키인 정규형

: 후보키가 여러 개 존재하고 서로 중첩되는 경우, 강한 제3정규형

: 모든 BCNF가 종속성을 보존하는 것은 아님

↓ 다치 종속 제거

4NF(제4정규형)

: 다치 종속 A →→ B가 성립하는 경우, 모든 속성이 A에 함수적 종속관계를 만족하는 정규형

↓ 조인 종속성 이용

5NF(제5정규형, PJ/NF)

: 모든 조인 상속이 R의 후보키를 통해서만 성립되는 정규형

9. 반정규화(Denormalization)

반정규화의 개요

 

정규화된 데이터 모델을 통합, 중복, 분리, 의도적으로 정규화 원칙 위배하는 행위

 

- 시스템의 성능이 향상, 관리 효율성 증가, 데이터의 일관성 / 정합성 저하

- 과도한 반정규화는 오히려 성능 저하 유발

- 데이터의 일관성 / 무결성, 데이터베이스의 성능 / 단순화 중 선택

- 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가

 

테이블 통합

 

두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움 될 경우

 

- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리, 두 개의 테이블을 이용하여 항상 조회를 수행하는 경우

- 1 : 1 관계 테이블 통합, 1 : N 관계 테이블 통합, 슈퍼타입/서브타입 테이블 통합

- 고려사항

: 데이터 검색은 간편하지만 레코드 증가처리량 증가

: 입력, 수정, 삭제 규칙복잡

: Not Null, Default, Check 등 제약조건 설계 어려움

 

테이블 분할

 

테이블을 수직 / 수평으로 분할

 

수평 분할(Horizontal Partitioning)

: 레코드를 기준으로 테이블 분할

: 레코들 별 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블 분할

수직 분할(Vertical Partitioning)

: 하나의 테이블에 속성이 너무 많을 경우 속성을 기준으로 테이블 분할

: 갱신 위주의 속성 분할 - 데이터 갱신 시 레코드 잠금으로 인해 다른 작업을 수행할 수 없기 때문에

: 자주 조회되는 속성 분할 - 자주 조회되는 속성이 극히 일부인 경우

: 크기가 큰 속성 분할

: 보안을 적용해야 하는 속성 분할 - 특정 속성에 대해 보안을 적용할 수 없으므로

 

고려사항

- 기본키의 유일성 관리 어려움

- 데이터 양이 적거나 사용 빈도 낮은 경우 굳이 필요한지 고려

- 수행 속도가 느려짐

- 데이터 검색에 중점을 두어 분할 여부 결정

 

중복 테이블 추가

 

여러 테이블에서 데이터 추출해서 사용하거나 다른 서버에 저장된 테이블을 이용하는 경우

 

- 추가하는 경우

: 정규화로 수행 속도가 느려지는 경우

: 많은 범위의 데이터를 자주 처리하는 경우

: 특정 범위의 데이터만 자주 처리하는 경우

: 처리 범위를 줄이지 않고 수행속도를 개선할 수 없는 경우

 

- 추가하는 방법

: 집계 테이블의 추가 - 집계 데이터를 위한 테이블 생성, 원본 테이블에 트리거 설정하여 사용, 트리거의 오버헤드 유의

: 진행 테이블의 추가 - 이력 관리 등의 목적, 적절한 데이터의 양의 유지 / 활용도 높이기 위해 기본키 적절히 설정

: 특정 부분만 포함하는 테이블의 추가 - 데이터가 많은 테이블의 특정 부분만 사용하는 경우

 

중복 속성 추가

 

조인해서 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 추가

 

- 데이터 무결성 확보가 어렵고, 디스크 공간이 추가로 필요

- 추가하는 경우

: 조인이 자주 발생하는 속성

: 접근 경로가 복잡한 속성

: 액세스 조건으로 자주 사용되는 속성

: 기본키의 형태가 적절하지 않거나 여러 개의 속성으로 구성된 경우

 

- 고려사항 

: 테이블, 속성의 중복 고려

: 데이터 일관성 / 무결성에 유의

: SQL 그룹 함수를 이용하여 처리할 수 있어야 함

: 저장 공간의 지나친 낭비 고려

10. 시스템 카탈로그

시스템 카탈로그의 의미

 

시스템 그 자체에 관련 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스

 

- DBMS에서 지원하는 모든 데이터 객체에 대한 정의, 명세정보를 유지 관리하는 시스템 테이블

- 카탈로그들이 생성되면 데이터 사전(Data Dictionary)에 저장되기 때문에 카탈로그 == 데이터 사전

 

시스템 카탈로그 저장 정보

 

시스템 카탈로그에 저장된 정보를 메타 데이터라 함

 

- 메타 데이터의 유형

: 데이터베이스 객체 정보 - 테이블, 인덱스, 뷰 등 구조 / 통계 정보

: 사용자 정보 - 아이디, 패스워드, 접근 권한 등

: 테이블의 무결성 제약 조건 정보 - 기본키, 외래키, NULL 값 허용 여부 등

: 함수, 프로시저, 트리거

 

카탈로그의 특징

 

- 카탈로그도 시스템 테이블로 구성, 일반 이용자도 SQL이용하여 검색 가능

- INSERT, DELETE, UPDATE문으로 갱신 금지

- 데이터베이스 시스템에 따라 상이한 구조

- DBMS가 스스로 생성, 유지

- 카탈로그의 갱신 : 사용자가 SQL문 실행시켜 기본 테이블, 뷰, 인덱스 등 변화 주면 시스템이 자동으로 갱신

- 분산 시스템에서의 카탈로그 : 보통의 릴레이션, 인덱스, 사용자 등 정보와 모든 제어 정보도 포함(위치 투명성 / 중복 투명성을 위해)

 

카탈로그/데이터 사전을 참조하기 위한 DBMS 내의 모듈 시스템

 

- 데이터 정의어 번역기(DDL Compiler) : DDL을 카탈로그로 변환하여 데이터 사전에 저장, DBMS의 종류에 다른 DDL 생성

- 데이터 조작어 번역기(DML Compiler) :  응용 프로그램에 삽입된 DML문을 주 언어로 표현한 프로시저 호출로 변환하여 질의 처리기와 상호 통신

- 데이터 사전(Data Dictionary) : 수록된 데이터를 접근하는 데 필요한 정보를 관리 유지, 시스템만 접근

- 질의 최적화기 : 요구를 효율적인 형태로 변환, 질의 처리하는 좋은 전략 모색

- 트랜잭션 처리기 : 복수 사용자 환경에서 평행으로 동시에 일어나는 트랜잭션 문제 해결, 각각 사용자가 데이터베이스 자원을 배타적으로 이용하도록 함

 

사용자
초보자
응용 프로그래머
일반 사용자
데이터베이스 관리자
응용 프로그램
시스템 호출
질의
데이터베이스 스키마
         응용 프로그램    
목적 코드
     DML 번역기     

     질의 처리기         
DDL 번역기
  데이터베이스 관리 프로그램
 
파일 관리 프로그램



                   디스크     
데이터 파일
      시스템 카탈로그 
데이터 사전
↔             ↕               

 

 

 

 

 

 

 

 

 

출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)

728x90