관리 메뉴

SW

[2020 정보처리기사 필기] 논리 데이터베이스 설계 (3) 본문

대학교/자격증

[2020 정보처리기사 필기] 논리 데이터베이스 설계 (3)

SWKo 2020. 8. 7. 00:59

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

1. 무결성(Integrity)의 개념 및 종류

- 무결성이란 데이터베이스에 저장된 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성을 의미한다.

- 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건

- 개체 무결성, 도메인 무결성, 참조 무결성, 사용자 정의 무결성 등이 있다.

 

2. 개체 무결성(Entity Integrity, 실체 무결성)

- 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다.

 

3. 도메인 무결성(Domain Integrity, 영역 무결성)

- 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정

 

4. 참조 무결성(Referential Integrity)

- 외래키 값은 Null 이거나 참조 릴레이션의 기본키 값과 동일해야한다. 즉 릴레이션은 참조할 수 없는 외래키를 가질 수 없다는 말이다.

 

5. 사용자 정의 무결성

- 속성 값들이 사용자가 정의한 제약 조건에 만족해야 한다는 규정

 

6. 데이터 무결성 강화

- 애플리케이션, 데이터베이스 트리거, 제약 조건

 

핵심

- 무결성 종류

- 데이터 무결성 강화 방법


81. 관계대수 및 관계해석

1. 관계대수의 개요

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

- 피연산자가 릴레이션이고, 결과도 릴레이션이다.

- 질의에 대한 해를 구하기 위해 연산의 순서를 명시한다.

- 순수 관계 연산자(Select, Project, Join, Division)와 일반 집합 연산자(UNION(합집합), INTERSECTION(교집합), DIFFERENCE(차집합), CARTESIAN PRODUCT(교차곱))가 있다.

 

2. SELECT

- 릴레이션에 존재하는 튜플 중 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산

- 튜플을 구하는 것이므로 수평 연산이라고도 함.

- 시그마 기호 사용

 

3. PROJECT

- 주어진 릴레이션에서 속성 리스트(Attribute List)에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산, 단 연산 결과에 중복이 발생하면 중복이 제거됨.

- 수직 연산자라고도 함.

- 파이 기호 사용

 

4. JOIN

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

- JOIN의 결과로 만들어진 릴레이션의 차수는 조인된 두 릴레이션의 차수를 합한 것과 같다.

- JOIN의 결과는 Cartesian Product(교차곱)을 수행한 다음 Select를 수행한 것과 같다.

- 연산자는 리본 모양을 사용

- 동일한 속성이 2번 나타날 수 있다.

- 동일한 속성이 두 번 나타날 때 이중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법을 자연(Natural) 조인이라고 함.

 

5. DIVISION

- 두 개의 릴레이션이 있을 때 A의 속성이 B의 속성값을 모두 가진 튜플에서 B가 가진 속성을 제외한 속성만을 구하는 연산

- 나누기 기호 사용

 

6. 일반 집합 연산자

- 일반 집합 연산자는 집합 이론에서 사용하는 연산자로서 릴레이션 연산에도 그대로 적용할 수 있다.

- 합집합, 교집합, 차집합을 처리하기 위해서는 합병조건(두 릴레이션 간의 속성의 수가 같고 대응되는 속성별로 도메인이 같아야 함)을 만족해야 한다.

 

7. 관계 해석(Relational Calculus)

- 코드(Codd)가 수학의 Predicate Calculus(술어 해석)에 기반을 두고 관계 데이터베이스를 위해 제안

- 데이터의 연산을 표현하는 방법으로 원하는 정보를 정의할 때는 계산 수식 사용

- 관계 해석은 원하는 정보가 무엇이라는 것만 정의하는 비절차 특성을 지님.

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

- 관계해석과 관계대수는 관계데이터베이스를 처리하는 기능과 능력면에서 동등하며, 관계대수로 표현한 식은 관계해석으로 표현할 수 있음.

- 질의어로 표현

 

핵심

- 순수관계 연산자, 집합 연산자의 기능

- 자연조인

- 관계대수와 관계해석


82. 정규화(Normalization) ★★★

1. 정규화의 개요

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

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

- 정규형에는 제1정규형, 제2정규형, 제3정규형, BCNF형, 제4정규형, 제5정규형이 있으며, 차수가 높아질수록 만족시켜야 할 제약 조건이 늘어난다.

- 논리적 설계 단계에서 수행

- 일관성, 정확성, 단순성, 비중복성, 안정성 등을 보장

- 정규화 수준이 높을수록 유연한 데이터 구축 가능, 정확성 향상. 그러나 물리적 접근이 복잡하고 너무 많은 조인으로 인해 조회 성능 저하

 

2. 정규화의 목적

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

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

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

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

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

- 데이터 모형 단순화 가능

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

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

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

 

3. 이상(Anomaly)의 개념 및 종류

- 정규화를 거치지 않으면 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 못한 곤란한 상황이 발생하는데, 이를 이상(Anomaly)이라 하며 삽입 이상, 삭제 이상, 갱신 이상이 있다.

- 삽입 이상(Insertion Anomaly) : 데이터 삽입 시 원하지 않는 값들도 함께 삽입되는 현상

- 삭제 이상(Deletion Anomaly) : 튜플 삭제 시 원하지 않는 값들도 함께 삭제되는 현상

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

 

4. 정규화의 원칙

- 정보의 무손실 표현, 즉 하나의 스키마를 다른 스키마로 변환할 때 정보의 손실이 있어서는 안된다.

- 분리의 원칙, 즉 하나의 독립된 관계성은 하나의 독립된 릴레이션으로 분리시켜 표현한다.

- 데이터의 중복성이 감소되어야 한다.

 

5. 정규화 과정

- 1NF(제1정규형) : 릴레이션에 속한 모든 도메인(Domain)이 원자값(Atomic Value)만으로 되어있는 정규형이다. 즉, 릴레이션의 모든 속성 값이 원자 값으로만 되어 있는 정규형이다.

- 2NF(제2정규형) : 릴레이션 R이 1NF이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형이다.

- 3NF(제 3정규형) : 릴레이션 R이 2NF이고, 기본키가 아닌 모든 속성이 기본키에 대해 이행적종속(A->B, B->C, A->C)을 만족하지 않는 정규형이다.

- BCNF(Boyce-Codd 정규형) : 릴레이션 R에서 결정자(속성 간의 종속성을 규명할 때 기준이 되는 값)가 모두 후보키인 정규형이다. 후보키가 여러 개 존재하고 서로 중첩되는 경우에 적용하는, 강한 제3정규형이라고 한다. 모든 BCNF가 종속성을 보존하는 것은 아니다. 제약 조건은 (1)키가 아닌 모든 속성각 키에 완전 종속해야한다. (2)키가 아닌 모든 속성은 그 자신이 부분적으로 들어가 있지 않은 모든 키에 대하여 완전 종속해야 한다. (3) 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속할 수 없다.

- 4NF(제 4정규형) : 릴레이션 R에 다치 종속(Multi Valued Dependency)(A =>>B)가 성립하는 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형이다.

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

 

핵심

- 이상(Anomaly) = 데이터의 불필요한 중복

- 정규화 과정(메인이 원자 값 -> 분적 함수 종속 제거 -> 행적 함수 종속 제거 -> 정자이면서 후보키가 아닌 것 제거 -> 치 종속 -> 인 종속성), (도부이결다조 = 두부이걸다줘?)

- Y가 X에 함수 종속이다 = X -> Y (X가 강해서 앞에 있음)


83. 반정규화(Denormalization) ★★

1. 반정규화의 개념

- 반정규화란 시스템의 성능 향상을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로 의도적으로 정규화 원칙을 위배하는 행위이다.

- 반정규화를 수행하면 시스템의 성능이 향상되고 관리 효율성은 증가하지만, 데이터의 일관성 및 정합성이 저하될 수 있다.

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

- 데이터의 일관성과 무결성을 우선으로 할지, 성능과 단순화를 우선으로 할지를 사전에 정해야한다.

- 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가 등이 있다.

 

2. 테이블 통합

- 테이블 통합은 두 개의 테이블이 조인(Join)되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 될 경우 수행

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

- 검색은 간편하지만 레코드 증가로 처리량 증가

- 테이블 통합으로 인해 입력, 수정, 삭제 규칙 복잡

- Not Null, Default, Check 등의 제약조건(Constraint) 설계가 어려움.

 

3. 테이블 분할

- 수평 분할: 레코드별로 사용 빈도 차이가 큰 경우 레코드를 기준으로 분할

- 수직 분할 : 하나의 테이블에 속성이 너무 많을 경우 속성을 기준으로 분할, 갱신 위주의 분할, 자주 조회되는 속성 분할, 크기가 큰 속성 분할, 보안을 적용해야 하는 속성 분할

- 테이블 분할 시 고려 사항 : 기본키 유일성 관리가 어려움, 데이터 양 적을경우 사용 고려, 수행 속도 느려질 가능성, 검색에 중점을 두어 분할 여부 결정

 

4. 중복 테이블 추가

- 여러 테이블에서 데이터를 추출해서 사용해야 하거나 다른 서버에 저장된 테이블을 이용해야 하는 경우 중복 테이블을 추가하여 작업의 효율성 향상

- 중복 테이블 추가하는 경우 : 정규화로 인해 수행속도 느려진 경우, 많은범위나 특정범위 자주 처리하는 경우

- 중복 테이블 추가 방법 : 집계 테이블의 추가(Trigger를 설정하여 사용), 진행 테이블의 추가(이력 관리 목적으로 추가), 특정 부분만을 포함하는 테이블의 추가(데이터가 많을 경우 특정 부분만 사용하여 테이블 생성)

 

5. 중복 속성 추가

- 중복 속성 추가는 조인해서 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 사용하는 속성을 하나 더 추가하는 것이다.

- 중복 속성 추가하는 경우 : 조인이 자주 발생, 접근 경로가 복잡한 속성, 기본키 형태가 적절하지 않은 경우

- 중복 속성 추가 시 고려 사항 : 중복 고려, 일관성, 무결성 고려, SQL 그룹 함수를 이용하여 처리할 수 있어야 함.

 

핵심

- 반정규화 개념

- 테이블 통합(규칙복잡), 테이블 분할(기본키 유일성 관리 어려움), 중복 테이블 추가(집계, 진행, 특정), 중복 속성 추가(SQL 그룹 함수)


84. 시스템 카탈로그 ★★

1. 시스템 카탈로그(System Catalog)의 의미

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

- 데이터의 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블

- 카탈로그들이 생성되면 데이터 사전(Data Dictionary)에 저장되기 때문에 좁은 의미로는 카탈로그를 데이터 사전이라고도 함.

 

2. 시스템 카탈로그 저장 정보

- 메타 데이터(Meta-Data)라고 함.

- 메타 데이터 유형 : 데이터베이스 객체 정보(테이블, 인덱스, 뷰), 사용자 정보(아이디, 패스워드), 무결성 제약 조건 정보(기본키, 외래키), 함수, 프로시저, 트리거 등에 대한 정보

 

3. 카탈로그의 특징

- 카탈로그 자체도 시스템 테이블로 구성되어 있어 일반 이용자도 SQL을 이용하여 내용을 검색해 볼 수 있다.

- INSERT, DELETE, UPDATE 문으로 카탈로그를 갱신하는 것은 허용되지 않는다.

- 데이터베이스 시스템에 따라 상이한 구조를 가진다.

- 카탈로그는 DBMS가 스스로 생성하고 유지한다.

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

- 분산 시스템에서의 카탈로그 : 릴레이션, 인덱스, 사용자 등의 정보를 포함할 뿐 아니라 위치 투명성 및 중복 투명성을 위한 모든 제어 정보를 가져야 한다.

 

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

- 데이터 정의어 번역기(DDL Compiler) : DDL을 메타 데이터를 갖는 테이블로 변환하여 데이터 사전에 저장시킨다.

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

- Data Directory : 사전에 수록된 데이터를 접근하는데 필요한 정보 관리 유지 시스템, 시스템 카탈로그는 사용자와 시스템 모두 접근 가능하지만 디렉터리는 시스템만 접근 가능하다.

- 질의 최적화기 : 사용자의 요구를 효율적인 형태로 변환

- 트랜잭션 처리기 : 트랜잭션 문제 해결하여 데이터베이스 자원을 각 사용자가 배타적으로 이용할 수 있도록 한다.

 

핵심

- 시스템 카탈로그 = 데이터 사전

- 시스템 카탈로그는 일반 사용자와 시스템이 접근 가능, 데이터 디렉터리는 시스템만 접근 가능

Comments