[정처기 필기] 「3」 | 논리 데이터베이스 설계 - (1.4) 정규화, 반정규화, 시스템 카탈로그
[정처기 필기] 「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 기본서 (길벗알앤디)