3과목 데이터베이스 구축 논리 데이터베이스 설계 083~090

2024. 1. 29. 22:10
728x90

083. 관계형 데이터 모델

: 테이블을 이용해 데이터 간의 상호 관계를 정의하는 DB 구조.

- 기본키와 이를 참조하는 외래키로 데이터 간의 관계 표현.

 

084. 관계형 데이터베이스의 구조

- 릴레이션 : 데이터들을 표의 형태로 표현한 것. 

(릴레이션 스키마 : 구조 / 릴레이션 인스턴스 : 데이터 개체를 구성하고 있는 구체적인 데이터 실제 값)

  • 튜플 : 릴레이션을 구성하는 각각의 행. (속성의 모임) 
  • 카디널리티 : 튜플의 수 (=기수, 대응수)
  • 속성 : 데이터베이스 구성하는 가장 작은 논리적 단위. (개체의 특성)
  • 디그리/차수 : 속성의 수
  • 도메인 : 하나의 속성이 취할 수 있는 같은 타입의 원자 값들의 집합. (실제 속성값이 나타날 때 그 값의 합법 여부를 시스템이 검사할 때에도 이용)

 

- 릴레이션의 특징

  • 릴레이션에 포함된 튜플들은 모두 상이
  • 한 릴레이션에 포함된 튜플 사이에는 순서가 없음. 
  • 튜플 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
  • 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음.
  • 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있음
  • 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키로 설정.
  • 속성의 값은 논리적으로 더이상 쪼갤 수 없는 원자값만을 저장. 

 

085. 관계형 데이터베이스의 제약 조건 - 키

- 키 : 데이터베이스에서 조건을 만족하는 튜플을 찾거나, 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 속성.

 

1) 후보키 : 속성들 중 튜플을 식별하기 위해 사용하는 속성들의 부분집합 (즉 기본키로 사용할 수 있는 속성들)

- 유일성 / 최소성 

2) 기본키 : 후보키 중 특별히 선정된 주(main)키. 중복값 X. 

- 유일성/ 최소성

- NULL X

3) 대체키 : 후보키가 둘 이상일 때 기본키를 제외한 후보키 의미. (보조키)

4) 슈퍼키 : 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키. 

- 유일성 만족, 최소성 불만족

5) 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합.

- 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력 불가.

 

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

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

- 무결성 제약조건 : 부정확한 자료가 DB 내에 저장되는 것을 방지하기 위한 제약조건!

 

1) 개체 무결성 (Entity Integrity) : 기본키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다.

2) 도메인 무결성 (Domain Integrity) : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다. 

3) 참조 무결성 (Referential Integrity) : 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다. (즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.)

ex) <수강>의 '학번'속성에는 <학생>의 '학번'속성에 없는 값은 입력할 수 없다.

4) 사용자 정의 무결성 (User-Defined Integrity) : 속성 값들이 사용자가 정의한 제약조건에 만족해야 한다.

 

- 데이터 무결성 강화

1) 애플리케이션 : 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 데이터를 조작하는 프로그램 내에 추가. 

2) 데이터베이스 트리거 : 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가

3) 제약 조건 : 데이터베이스에 제약 조건을 설정하여 무결성 유지.

 

087. 관계대수 및 관계해석

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

- 수행 연산의 순서를 명시

 

- 순수 관계 연산자

1) Select : 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산. 

- 표기 형식 : 시그마(σ)<조건>(릴레이션 이름) 

ex)  σ Avg>=90 (성적) : 성적 릴레이션에서 평균이 90이상인 튜플들을 추출해라.

 

2) Project : 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산. (중복은 제거됨)

- 표기 형식 : 파이( π)<속성리스트>(릴레이션 이름) 

ex)  πName, Avg(성적) : 성적 릴레이션에서 'Name'과 'Avg' 속성을 추출해라.

 

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

- 차수는 조인된 두 릴레이션의 차수를 합한 것과 같다.

- 표기 형식 :  R▷◁키속성r = 키속성s S

ex) 성적  ▷◁ No=No 학적부 : 성적 릴레이션과 학적부 릴레이션을 'No' 속성을 기준으로 합쳐라.

- 자연 조인(natural join) : 중복된 속성을 제거하여 같은 속성을 한 번만 표기.

 

4) Division : Y가 X에 포함되는 두 개의 릴레이션 R(X), S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산.

- 표기 형식 : R[속성r / 속성s] S

ex) 구입자[구입품코드 / 생산품코드] 생산품1 : 구입자 릴레이션에서 '구입품코드' 속성을 제외하고 추출하여 생산품1 릴레이션의 모든 튜플과 연관되어 있는 튜플만 추출.

 

- 일반 집합 연산자

1) UNION (합집합) : 튜플의 합집합을 구하되 결과 릴레이션에서 중복되는 튜플은 제거되는 연산. 

2) INTERSECTION (교집합) : 튜플의 교집합 

3) DIFFERENCE (차집합) : 튜플의 차집합

4) CARTESIAN PRODUCT (교차곱) : 튜플들의 순서쌍 (교차곱의 디그리 = A디그리 + B디그리 / 교차곱의 카디널리티 = A카 X B카)

 

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

  • 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성
  • 튜플 관계해석
  • 도메인 관계해석

 

- 기호

1)   : 존재 전량자 (하나라도 일치하는 튜플이 있다)

2) ∀ : 전칭 전량자 (가능한 모든 튜플에 대하여 for all)

 

088. 정규화(Normalization)

: 데이터의 중복성을 최소화하고 일관성 등을 보장하여 데이터베이스의 품질을 보장하고 성능의 향상을 위해 수행. 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정.

  • 차수가 높아질수록 만족시켜야 할 제약 조건이 늘어남
  • DB 논리적 설계 단계에서 수행
  • 일관성, 정확성, 단순성, 비중복성, 안정성 보장.
  • 정규화 수준 높을수록 물리적 접근 복잡, 조회 성능 저하. 

- 이상(Anomaly)

: 정규화를 거치지 않으면 DB 내에 데이터들이 불필요하게 중복되어 릴레이션 조작시 예기치 못한 곤란한 현상.

  • 삽입 이상 : 데이터 삽입시 의도와는 상관없이 원하지 않는 값들도 삽입
  • 삭제 이상 : 데이터 삭제시 의도와는 상관없이 원하지 않는 값들도 삭제되는 연쇄
  • 갱신 이상 : 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상

- 정규화 원칙

  • 정보의 무손실 표현
  • 분리의 원칙
  • 데이터 중복성 감소.

 

- 정규화 과정 (도.부.이.결.다.조)

1) 제1정규형 (1NF) : 모든 도메인이 원자값으로만 되어있다.

2) 제2정규형 (2NF) : 부분적 함수 종속 제거 (A가 B 전체에 대해 종속이면서 B의 어떠한 진부분집합에도 함수적 종속일 때 A는 B에 부분 함수적 종속)

3) 제3정규형 (3NF) : 이행적 함수 종속 제거 (A->B이고, B->C일때 A->C를 만족하는 관계)

4) BCNF  (Boyce-Codd 정규형) : 결정자이면서 후보키가 아닌 것 제거

5) 제4정규형 (4NF) : 다치 종속 제거 (A,B,C 3개의 속성을 가진 릴레이션에서 어떤 복합 속성(A,C)에 대응하는 B값의 집합이 A값에만 종속되고, C값에는 무관할때)

6) 제5정규형 (5NF, PJ/NF) : 조인 종속성 이용 (어떤 릴레이션의 속성에 대한 부분집합 A,B,...C가 있으면 자신의 프로젝션을 모두 조인한 결과가 자신과 동일한 경우 조인종속)

 

089. 반정규화 (Denormalization)

: 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정. 의도적으로 정규화 원칙을 위배하는 행위.

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

 

1) 테이블 통합 : 두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것. 

- 데이터 검색은 간편/ 레코드 증가로 인해 처리량 증가.

- 입력, 수정, 삭제 규칙이 복잡해질 수 잇음

- NOT NULL, DEFAULT, CHECK 등의 제약조건 설계 어렵

 

2) 테이블 분할 : 테이블을 수직 또는 수평으로 분할. 

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

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

  • 갱신 위주의 속성 분할
  • 자주 조회되는 속성 분할
  • 크기가 큰 속성 분할
  • 보안을 적용해야 하는 속성 분할

- 기본키의 유일성 관리 어렵/ 수행 속도 느려질 수 있음. 

 

3) 중복 테이블 추가 : 여러 테이블에서 데이터를 추출해서 사용해야 하거나 다른 서버에 저장된 테이블을 이용해야 하는 경우 중복 테이블 추가. 

- 정규화로 인해 속도 느림/ 많은 범위의 데이터 자주 처리/ 특정 범위 데이터만 자주 처리/ 처리범위 줄여서 수행속도 개선해야 하는 경우

- 집계 테이블의 추가

- 진행 테이블의 추가

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

 

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

- 조인 자주발생/ 접근 경로가 복잡한 속성인 경우/ 액세스 조건으로 자주 사용/ 기본키 형태가 적절하지 않거나 여러 개의 속성으로 구성된 경우.

 

090. 시스템 카탈로그

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

 

- 저장 정보 : 메타 데이터

  • 데이터베이스 객체 정보
  • 사용자 정보
  • 테이블의 무결성 제약 조건 정보
  • 함수, 프로시저, 트리거 등에 대한 정보

- 특징 :

  • 카탈로그 자체도 시스템 테이블 > 일반 이용자도 SQL로 검색 가능
  • INSERT, DELETE, UPDATE문으로는 카탈로그 갱신 X
  • 데이터베이스 시스템에 따라 상이한 구조
  • 갱신 : 사용자가 SQL문 실행시켜 기본테이블, 뷰, 인덱스 등에 변화 > 시스템이 자동으로 갱신
  • 분산 시스템에서의 카탈로그 : 모든 제어 정보를 가져야함 

- DBMS 내의 모듈 시스템

  • 데이터 정의어 번역기 (DDL Compiler)
  • 데이터 조작어 번역기 (DML Compiler)
  • Data Dictionary
  • 질의 최적화기
  • 트랜잭션 처리기

 

 

728x90

BELATED ARTICLES

more