3과목 : 데이터베이스 구축

정규화 과정

  • 1NF : 모든 도메인이 원자 값으로만 구성
  • 2NF : 기본키가 아닌 속성이 기본키에 대한 완전 함수적 종속을 만족, 부분적 함수 종속을 제거한 정규형
  • 3NF : 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수 종속 관계를 만족하지 않는 정규형
  • BCNF : 모든 결정자가 후보키인 정규형, 종속성 보존X
  • 4NF : 다치 종속이 성립하는 경우, R의 모든 속성이 A에 함수적 종속 관계를 만족
  • 5NF : 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형

인덱스

  • 데이터베이스 성능에 많은 영향을 주는 DBMS의 구성 요소
  • 테이블과 클러스터에 연관되어 독립적인 저장 공간을 보유
  • 데이터베이스에 저장된 자료를 더욱 빠르게 조회하기 위하여 별도로 구성한 순서 데이터
  • 대부분의 데이터베이스에서 테이블을 삭제하면 인덱스도 같이 삭제
  • 인덱스 생성 : CREATE
  • 인덱스 삭제 : DROP

데이터 사전

  • 시스템 자신이 필요로 하는 여러 가지 객체(기본 테이블, 뷰, 인덱스, 데이터베이스, 패키지, 접근 권한 등)에 관한 정보를 포함하고 있는 시스템 데이터베이스
  • 시스템 카탈로그(System Catalog), 메타 데이터(Meta Data)라고도 함
  • 시스템 카탈로그 자체도 시스템 테이블로 구성되어 있어 SQL 문을 이용하여 내용 검색이 가능
  • 사용자가 시스템 카탈로그를 직접 갱신할 수 없음
  • SQL 문으로 여러 가지 객체에 변화를 주면 시스템이 자동으로 갱신함

릴레이션

  • 튜플의 유일성 : 모든 튜플은 서로 다른값을 가짐
  • 튜플의 무순서성 : 하나의 릴레이션에 튜플에 순서는 없음
  • 속성의 원자성 : 속성값은 원자값을 가짐
  • 속성의 무순서성 : 각 속성은 릴레이션내에서 유일한 이름을 가지며, 순서는 큰 의미가 없음

  • 뷰는 다른 뷰를 기반으로 새로운 뷰를 만들 수 있음
  • 뷰는 일종의 가상 테이블이며, update에는 제약이 따름
  • 뷰는 기본 테이블을 만드는 것처럼 create view를 사용하여 만들 수 있음
  • 뷰는 논리적으로만 존재 함

트랜젝션 용어

  • Partially Committed: 마지막 연산이 실행된 직후의 상태로 아직 Commit 연산 실행 전
  • Committed: 트랜잭션이 실행을 성공적으로 완료하여 Commit 연산을 수행한 상태

트랜젝션 특성

  • 원자성(Atomicity) : 완전하게 수행 완료되지 않으면 전혀 수행되지 않아야 함
  • 일관성(Consistency) : 시스템의 고정 요소는 트랜잭션 수행 전후에 같아야 함
  • 격리성(Isolation, 고립성) : 트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 함
  • 영속성(Durability, 지속성) : 트랜잭션의 완료 결과가 데이터베이스에 영구히 기억됨

트랜잭션 설계단계

  • 개념적 설계 : 트랜잭션 모델링/ 독립적인 개념 스키마 모델링/ 개념스키마 설계/ E-R 다이어그램
  • 논리적 설계 : 트랜잭션 인터페이스 설계/ DBMS에 맞는 논리스키마 설계/ 테이블 설계/ 논리적 매핑/ 스키마 평가 및 정제
  • 물리적 설계 : 레코드 집중의 분석,설계/ 저장레코드 양식 설계 / 저장 구조 및 액세스 경로 설정

키의 종류

  • Super key(슈퍼키)
    • 속성들의 집합으로 구성된 키
    • 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
  • Candidate key(후보키)
    • 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
  • 기본키(Primary Key)
    • 테이블의 각 레코드를 고유하게 식별하는 필드나 필드의 집합
    • 테이블에 기본키 설정은 필수가 아님
    • 기본키를 설정하지 않고도 다른 테이블과의 관계를 설정할 수 있음
    • 기본키는 혼합속성(다수 필드)에 설정할 수 있음
  • 외래키
    • 관계형 데이터베이스에서 한 테이블 속성 집합이 다른 테이블의 기본키가 됨.
    • 데이터베이스 내에 존재하는 테이블들의 관계에서 참조의 무결성을 보장하기 위함임
    • 중복되는 값, 비어있는 값(Null) 가질 수 있음(<->기본키)

데이터 모델의 구성 요소

  • 구조(Structure):논리적인 개체 타입들 간의 관계, 데이터 구조 및 정적 성질을 표현
  • 연산(Operation):실제 데이터를 처리하는 작업에 대한 명세로, 조작하는 기본 도구
  • 제약 조건(Constraint):DB에 저장될 수 있는 실제 데이터의 논리적인 제약 조건

논리 데이터 모델의 구성요소

  • 개체
  • 속성
  • 관계

분산 데이터베이스의 목표

  • 위치 투명성(Location Transparency):하드웨어와 소프트웨어의 물리적 위치를 사용자가 알 필요가 없음
  • 중복(복제) 투명성(Replication Transparency):사용자에게 통지할 필요없이 시스템 안에 파일들과 자원들의 부가적인 복사를 자유롭게할수 있음
  • 병행 투명성(Concurrency Transparency):다중 사용자들이 자원들을 자동으로 공유할 수 있음
  • 장애 투명성(Fai ure Transparency):사용자들은 어느 위치의 시스템에 장애가 발생했는지 알 필요가 없음

DCL

  • COMMIT : 명령어로 수행된 결과를 실제 물리적 디스크로 저장하고, 명령어로 수행을 성공적으로 완료하였음을 선언
  • ROLLBACK : 명령어로 수행을 실패하였음을 알리고, 수행된 결과를 원상복구
  • GRANT : 데이터베이스 사용자에게 사용 권한 부여
  • REVOKE : 데이터베이스 사용자로부터 사용 권한 취소

DDL

  • CREATE : SCHEMA(스키마), DOMAIN(도메인), TABLE(테이블), VIEW(뷰), INDEX(인덱스)를 정의
  • ALTER : TABLE에 대한 정의를 변경하는 데 사용
  • DROP : SCHEMA(스키마), DOMAIN(도메인), TABLE(테이블), VIEW(뷰), INDEX(인덱스)를 삭제

DML

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

E-R 모델

  • 마름모 : 관계
  • 사각형 : 개체
  • 선 : 관계-속성 연결

데이터베이스 병행 제어

  1. 목적
    • 여러 사용자들의 데이터베이스 공동 사용을 최대화
    • 사용자의 응답 시간 최소화
    • 데이터베이스 시스템의 활용도 최대화
    • 데이터베이스의 일관성 유지

데이터베이스 물리적 설계 시 고려 사항

  • 어떤 인덱스를 만들 것인지에 대한 고려
  • 성능 향상을 위한 개념 스키마의 변경 여부 검토
  • 레코드의 크기
  • 파일과 구조 저장을 위한 최소한의 공간
  • 빈번한 질의와 트랜잭션들의 수행 속도를 높이기 위한 고려사항
    • 응답 시간
    • 저장 공간의 효율화
    • 트랜잭션 처리량

관계 해석

  • ∃: 존재한다(There exist)
  • ∈: t가 r에 속함( t ∈ r )
  • ∀: 모든 것에 대하여(for all)
  • ∪: 합집합

관계 대수 연산

  1. 일반 집합 연산자
    • 합집합
    • 교집합
    • 차집합
    • 카티션 프로덕트

  2. 순수 관계 연산자
    • Select
    • Project
    • Join
    • Division

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

  1. 분산 처리기
  2. 분산 데이터베이스
  3. 통신 네트워크
  4. 분산 트랜잭션

로킹

  • 병행제어 기법의 종류 중 하나
  • 직렬화 기법
  • 데이터베이스, 파일, 레코드 등은 로킹단위가 될 수 있음
  • 한번에 로킹할 수 있는 객체의 크기를 로킹단위라고 함
  • 로킹 단위가 작은 경우 : 예를들어 레코드와 같은 작은 단위로 잠그면 여러개를 잠궈야하기 때문에 관리가 복잡해져서 오버헤드(처리시간,메모리)가 증가하고 단위가 작으므로 일부 잠궈도 나머지 사용할 수 있는 개수가 많으므로 병행성(=공유도)가 높아짐
  • 로킹이 큰 경우 : (위와 반대로 생각) 오버헤드가 감소하고 병행성(=공유도)가 낮아짐

###

Updated: