본문 바로가기

정보처리기사/필기

내가 기억해야 할 정처기 - 3과목 데이터베이스 구축

# 60-데이터베이스 설계

 

데이터베이스 설계 순서

1. 요구 조건 분석 - 요구 조건 명세서 작성

 

2. 개념적 설계 - 개념 스키마, 트랜잭션 모델링, E-R모델

 

3. 논리적 설계 - 종속적 논리 스키마 설계(독립 아님), 트랜잭션 인터페이스 설계

- 논리적 데베 구조로 매핑

- 스키마의 평가 및 정제

 

4. 물리적 설계 - 물리적 구조의 데이터로 변환

- 데베 파일의 저장 구조 및 액세스 결로 결정

- 저장 레코드의 양식, 순서, 접근 경로, 조회가 집중되는 레코드와 같은 정보 사용하여 데이터가 컴퓨터에 저장되는 방법 묘사

- 고려사항: 트랜잭션 처리량, 응답시간, 디스크 용량, 저장공간의 효율화

 

5. 구현 - 목표 DBMS의 DDL(데이터 정의어)로 데이터베이스 생성, 트랜잭션 작성


# 63-관계형 데이터베이스의 구조

릴레이션=표

릴레이션 스키마: 릴레이션의 논리적인 구조를 정의

릴레이션 인스턴스: 속성들의 값

 

튜플: 튜플의 수=카디널리티=기수=대응수, 각각의 행

속성(애트리뷰트): 속성의 수=디그리=차수

도메인: 하나의 애트리뷰트가 취할 수 있는 원자들의 집합


# 64-관계형 데이터베이스의 제약조건-키(key)

- 유일성: 키 값으로 하나의 튜플만 유일하게 식별할 수 있어야함

- 최소성: 모든 레코드들을 유일하게 식별하는 데 꼭 필요한 속성만으로 구성되야함

 

슈퍼키(Super Key)

- 속성들의 집합으로 구성된 키

- 유일성

 

후보키(Candidate Key)

- 튜플을 유일하게 구별해 주는 속성 또는 속성들의 조합

- 기본키로 사용할 수 있는는 속성

- 유일성/최소성

 

기본키(Primary Key)

- 특정 튜플을 유일하게 구별할 수 있는 속성

- 후보키의 성질을 가짐(유일성/최소성)

- NULL값을 가질 수 없다

 

대체키(Alternate Key)

- 후보키가 둘 이상일 때 기본키를 제외한 나머지

 

외래키(Foreign Key)

- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합

- 릴레이션 간의 참조 관계 표현

- 참조 릴레이션의 기본키에 없는 값은 입력 불가

- null 사용 가능

- 참조 무결성과 관계(외래키가 가리키는 대상이 반드시 존재 해야함)


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

## 무결성: 데이터 정확성

 

개체 무결성: 기본키는 null값이나 중복값을 가질 수 없음

도메인 무결성: 주어진 속성 값이 정의된 도메인에 속한 값이어야함

참조 무결성: 외래키는 null값이나 참조 릴레이션의 기본키 값과 동일해야함>>릴레이션은 참조할 수 없는 외래키 값을 가질 수 없음

사용자 정의 무결성: 속성 값들이 사용자가 정의한 제약조건에 만족해야함

데이터 무결성 강화: 데이터 특성에 맞는 적절한 무결성을 정의하고 강화해야함

- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화 가능

 

애플리케이션

- 장: 사용자 정의 같은 복잡한 무결성 조건의 구현 가능

- 단: 소스코드에 분산되어 있어 관리 힘듦, 개별적인 시행으로 적정성 검토 어렵

 

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

- 장: 통합 관리 가능, 복잡한 요구 조건의 구현 가능

- 단: 운영 중 변경 어렵, 사용상 주의 필요

 

제약 조건: 데이터 베이스에 제약 조건을 설정

- 장: 통합 관리 가능, 간단한 선언으로 구현 가능, 변경 용이, 오류 데이터 발생 방지

- 단: 복잡한 제약 조건의 구현과 예외적인 처리가 불가능


# 66-관계대수 및 관계해석

관계대수

- 절차적 언어

- 연산의 순서 명시

## 순수 관계 연산자

Select(σ): 조건에 맞는 부분 집합

Project(π):: 제시된 속성값만 출력

Join( ▷◁): 두 개의 릴레이션을 하나로 합쳐 새로운 릴레이션 생성

Division(÷): R 속성이 S의 속성 값을 모두 가진 튜플에서, S가진 속성을 제외한 속성만을 구하는 연산

 

## 일반 집합 연산자

Union(합집합, ): 합집합+중복제거

- 합집합의 카디널리티는 두 릴레이션 카디널리티보의 합 보다 크지 않다

INTERSECTION(교집합 ,⋂) : 둘다 동시에 존재하는 튜플

- 교집합의 카디널리티는, 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티보다, 크지 않다

DIFFERENCE(차집합, -) : R엔 존재하지만 S에 없는 튜플

- 차집합의 카디널리티는 릴레이션 R의 카디널리티보다 크지 않다

CARTESIAN PRODUCT(교차곱 ): 튜플의 순서쌍

- 교차곱의 디그리는 두 릴레이셔의 디그리를 더한 것과 같고, 카디널리티는 두 딜레이션의 카디널리티를 곱한 것과 같다

 

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

-Predicate Calculus(술어 해석)에 기반

- 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성

- 관계대수로 표현한 식은 관계해석으로 표현 가능

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

주요 논리 기호

- ∀: 모든 것에 대하여(for all)

- ∃: 존재한다(There exist)


# 67-정규화

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

 

정규화 목적: 

- 안정성, 무결성

 

이상 개념 및 종류

- 삽입 이상: 데이터 삽입할 때 원치 않는 값도 삽입

- 삭제 이상: 튜플 삭제할 때 원치 않는 값도 삭제

- 갱신 이상: 튜플에 있는 속성값을 갱신할 때 일부만 갱신

 

정규화 원칙

- 정보의 무손실 표현

- 분리의 원칙

- 데이터의 중복성 감소

 

## 정규화 과정 ㅗㅗ

1NF(제1정규형): 도메인과 원자값으로만 구성

2NF(제2정규형): 1NF+기본키가 아니 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족

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

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

- 부분 함수적 종속: 기본키의 일부만이 종속되는 경우

- 완전/부분 함수적 종속의 이해

 

3NF(제3정규형): 2NF+기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않음(부분 함수적 종속 제거

BCNF(Boyce-Codd 정규형): 결정자가 모두 후보키인 정규형

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

5NF(제5정규형): 모든 조인종속이 R의 후보키를 통해서만 성립

 

 

   비정규형
    ↓ 도메인 원자값
   1NF
    ↓ 부분 함수적 종속 제거
   2NF
    ↓ 이행 함수 종속 제거
   3NF
    ↓ 결정자이면서 후보키 아닌 것 제거
  BCNF
    ↓ 다치 종속 제거
   4NF
    ↓ 조인 종속 이용
   5NF

 

암기 두부이걸다줘?(도부이결다조)

 

이행적 종속:a->b, b->c일때 a->c

 


# 70-트랜잭션 분석/CRUD 분석

트랜잭션: 데베의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위, 한꺼번에 모두 수행되어야 할 일련의 연산

- 무결성 보장 목표

 

트랜잭션 상태

- 활동(Active)

- 실패(Failed)

- 철회(Aborted)

- 부분 완료(Partially Committed)

- 완료(Committed)

 

트랜잭션의 특성

- Atomicity(원자성): 완료 또는 복구, 완벽히 수행되어야함 아니면 전부 취소

- Consistency(일관성): 

- Isolation(독립성, 격리성, 순차성): 다른 트랜잭션이 끼어드는거 안됨, 완료할때까지 참조 안된

- Durability(영속성, 지속성): 영구적 반영

암기: ACID

 

CRUD 분석

- 생성(create), 읽기(read), 갱신(update), 삭제(delete)

- 데베 설계 시 구조 최적화 목적

- 트랜잭션 몰리는 곳을 찾아 분산>>연결 지연, 타이아웃 오류 방지

 

CRUD 매트릭스: 테이믈 변화 표시하는 업무 프로세스와 데이터 상관 분석표

- 복수 변화 줄때 C>D>U>R

 

트랜잭션 분석: CRUD 매트릭스를 기바능로 테이블에 발생하는 트랜잭션 분석>저장되는 데이터 양 유추>DB용량 산정, DB구조 최적화

 

트랜잭션 분석서: 단위 프로세스와 CRUD 매트릭스를 이용해 작성


# 72-뷰(View) 설계)

뷰: 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위한 가상 테이블

- 물리적 존재x

- 임시적인 작업 용도

- 조인문의 사용 최소화>>사용상의 편의성 최대화

 

뷰 특징

- 기본 테이블과 같은 형태의 구조 사용

-데이터의 논리적 독립성 제공

- 필요한 데이터반 뷰로 정의 >> 관리 용이, 명령문 간단

- 데이터 접근 제어를 통해 보안 제공

- 기본키가 있어야 삽입, 삭제, 갱신 가능

- 정의 create/제거 drop

 

장점

- 논리적 데이터 독립성

- 동일 데이터를 여러 사용자의 상이한 응용이나 요구 지원

- 데이터 관리를 간단하게

- 접근 제어를 통한 자동 보안

 

단점

- 독립적 인덱스를 가질 수 없다

- 뷰의 정의 변경 불가

- 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약


# 74-분산 데이터베이스 설계

분산 데이터 베이스: 여러 개로 분산되어있는 데베를 하나의 데베처럼 사용하는 시스템

 

분산 데이터베이스의 구성 요소

- 분산 처리기: 자제적 처리능력, 지리적으로 분산되어 있는 컴퓨터 시스템

- 분산 데이터베이스: 지리적으로 분산되있는 데이터베이스, 해당 지역 특성에 맞게 구성됨

- 통신 네트워크: 분산 처리기들을 통신망으로 연결

 

분산 데이터베이스의 목표

- 위치 투명성(Location Transparency): 실제 위치 필요x

- 중복 투명성(Replication Transparency): 데이터가 마치 하나만 있는 것처럼 사용, 시스템은 자동으로 여러 자료에 대한 작업 수행

- 병행 투명성(Concurrency Transparency): 다수의 트랜잭션 동시 실현되도 결과 영향x

- 장애 투명성(Failure Transparency): 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랙잭션 정확히 처리

 

장점

- 지역 자취성이 높다

- 자료의 공유성 향상

- 분산 제어 가능

- 시스템 성능 향상

- 중앙 컴퓨터의 장애가 전체 시스템에 영향x

- 효용성과 융통성 높음

- 신뢰성 및 가용성 높음

- 점진적 시스템 용량 확장 용이

 

단점

- DBMS가 수행할 기능 복잡

- 데베 설걔 어렵

- 솦웨 개발 비용 증가

- 처리 비용 증가

- 잠재적 오류 증가

 

분산 데이터베이스 설계 방법 종류

- 테이블 위치 분산: 데베 테이블을 각 다른 서버에 분산 배치/테이블 구조 변경x, 다른 데베 테이블과 중복안되게 배치

- 분할: 테이블의 데이터를 분할하여 분산

  • 분할규칙
    • 완전성:전체 데이터 대상
    • 재구성: 본래 데이터로 재구성 가능
    • 상호 중첩 배제: 서로 다른 분할의 항목에 속하지 않음
  • 주요 분할 방법
    • 수평 분할: 특정 속성값 기주능로 행 단위 분할
    • 수직 분할: 데이터 컬럼(속성) 단위 분할

- 할당: 동일한 분할을 여러 개의 서버에 생성

  • 비중복 할당 방식
    • 단일 노드에서만 분할 존재
    • 의존성 무시가 되고 비용 증가, 성능 저하 등의 문제 발생할 수 있음
  • 중복 할당 방식
    • 동일한 테이블 다른 서버에 복제
    • 부분 복제/완전 복제

# 79-SQL의 개념

SQL

- 혼합 데이터 언어

- 질의어

-정의/조작/제어

 

DDL(Data Define Language, 데이터 정의어)

- 논리 또는 물리적 데이터 구조의 사상 정의

-데베 관리자/설계자 사용

  • CREATE
    • SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의
  • ALTER
    • TABLE에 대한 정의 변경
  • DROP
    • SCHEMA, DOMAIN, TABLE, VIEW, INDEX 삭제

DML(Data Manipulation Language, 데이터 조작어)

- 데이터를 실질적으로 처리

- 데베 사용자와 관리 시스템 간의 인터페이스 제공

  • SELECT: 테이블에서 조건에 맞는 튜플 검색
  • INSERT: 테이블에 새로운 튜플 삽입
  • DELETE: 테이블에서 조건에 맞는 튜플 삭제
  • UPDATE: 테이블에서 조건에 맞는 튜플의 내용 변경

DCL(Data Control Language, 데이터 제어어)

- 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의

- 데베 관리자가 데이터 관리 목적으로 사용

  • COMMIT: 수행 결과를 실제 물리적 디스크에 저장, 조작 작업이 정상적으로 완료됨을 알림
  • ROLLBACK: 비정상적으로 종료되었을 때 원래 상태로 복구
  • GRANT: 데베 사용자에게 사용 권한 부여
  • REVOKE: 데베 사용자의 사용 권한 취소

 


# 80-DDL

CREATE CHEMA 스키마명 AUTHORIZATION 사용자ID;

 

CREATE DOMAIN 도메인명 [AS] 데이터타입 [DEFAULT 기본값] [CONSTRAINT 제약조건명 CHECK (범위값)];

 

데이터타입

- 정수

- 실수

- 형식화된 숫자

- 고정길이 문자:

- 가변길이 문자:

- 고정길이 비트열

- 가변길이 비트열(Bit String)

-가변길이 비트열

- 날짜

-시간

 

CREATE TABLE 테이블명

 

CREATE VIEW 뷰명[(속성명[, 속성명, ...])]

AS SELECT문;

 

CREATE [UNIQUE] INDEX 인덱스명

ON 테이블명(속성명 [ASC|DESC] [,속성명  [ASC|DESC]]])

[CLUSTER];

  • UNIQUE
    • 사용된 경우:중복값 비허용
    • 생략된 경우: 중복값 허용
  • 정렬 여부 지정
    • ASC: 오름차순
    • DESC: 내림차순
    • 생략시: 오름차순
  • CLUSTER: 사용시 인덱스 키 순서에 따라 데이터 정렬

ATRER TABLE 테이블명

- 테이블에 대한 정의 변경

  • ADD: 새로운 속성 추가
  • ALTER: 특정 속성의 Default 값을 변경할 때 사용
  • DROP DOLUMN: 특정 속성을 삭제할 때 사용

DROP

스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 제약 조건 등을 제거

....

 

그냥 이 챕터는 책이나 보셈 정리 빡셈;; (시나공 1권 369p^^)

https://kimasill.tistory.com/entry/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0-DDL-%EA%B5%AC%EB%AC%B8-%EC%A0%95%EB%A6%AC

 


#  83-DML-SELECT-1

이것도 책이나...