1. Database 개요


db

Overview

Oracle Database의 기초적인 개념에 대한 포스트


데이터베이스

어느 한 조직에서 업무 처리를 위해 다수의 응용 시스템 혹은 다수의 사용자들이 공용으로 사용하기 위해 통합 / 저장된 운영 데이터의 집합

  • 통합, 저장, 공용, 운영

데이터베이스의 특징

계속적인 변화, 동시 공유, 실시간 접근성, 내용에 의한 참조, 데이터 중복의 최소화

데이터베이스의 목표

  • 지속적인 데이터의 관리 및 보호
  • 안전성 보장
  • 무결성 보장

데이터베이스의 구성 요소

  • 개체
    • 현실 세계의 대상체
    • 하나이상의 속성으로 구성
  • 속성
    • 가장 작은 논리적인 단위
  • 관계
    • 개체 사이의 상호 연관성

데이터 베이스의 표현

  • 논리적 구조 : 사용자 관점에서 본 구조를 나타내며 사용자가 이해하고 생각하는 것을 나타내는 형태
  • 물리적 구조 : 저장 장치 관점에서 본 구조를 나타내며 기계처리에 맞는 형태

스키마(Schema)

  • 데이터베이스의 전체적인 구조와 제약조건에 대한 명세를 기술, 정의한 것
  • 내부 스키마 : 물리적 저장 장치 관점에서 본 데이터베이스의 물리적 구조
  • 개념 스키마 : 논리적 관점에서 본 전체적인 데이터 구조
  • 외부 스키마 : 전체 데이터 중 사용자가 사용하는 한 부분에서 본 논리적 구조, 서브 스키마

시스템 카탈로그

  • 데이터베이스에 저장되어 있는 테이블, 인덱스, 뷰, 제약조건, 사용자 등 개체들에 대한 정보와 정보들 간의 관계를 저장한 것
  • 데이터 사전이라고 함
  • 시스템 카탈로그에 저장되어 있는 데이터를 ‘메타 데이터‘라고 함
  • 일반 테이블과 같이 시스템 테이블로 구성
  • 일반 사용자도 시스템 카탈로그의 내용을 검색할 수 있지만 삽입, 삭제, 갱신은 불가
  • 시스템 카탈로그 갱신은 사용자가 SQL문을 실행하면 시스템에 의해 자동적으로 이루어짐

데이터베이스 객체(Object)

  • 테이블(Table)
    • 행과 열로 구성된 2차원적인 표
  • 시퀀스(Sequence)
    • 정수형 번호표 생성기
  • 인덱스(Index)
    • 데이터 검색을 빨리 하기 위하여 만들어 둔 개념
  • 프로시저(Procedure)
    • 반환 타입이 없는 객체
  • 함수(Function)
    • 반환 타입이 있는 객체

데이터베이스 객체 현황 보기

  • conn / as sysdba (관리자 모드로 로그인 하는 명령어)
  • select distinct object_type from dba_objects
  • order by object_type;

DBMS(Database Management System)

  • 데이터베이스 관리 시스템
  • 데이터의 중복성과 종속성등의 문제를 최소화하기 위해 등장
  • 사용자가 데이터베이스의 내용을 정의 / 조작 / 제어할 수 있도록함
  • 모든 사용자나 응용프로그램들이 데이터베이스를 공유할 수 있도록 관리, 운영해주는 소프트웨어 시스템
  • MySQL, MS SQL, Oracle 등

DBMS의 구조

DBMS Structure

DBMS의 주요 기능

  • 데이터의 추가 / 조회 / 변경 / 삭제 기능의 구현
  • 데이터의 무결성(신뢰도) 유지되어야 함
  • 트랜잭션 관리 기능이 구현되어야 함
  • 데이터의 백업 및 복원 가능
  • 데이터 보안 기능

DBMS의 필수 기능

  • 정의(Definition Facility)
    • 저장될 데이터의 형태, 구조 등 데이터베이스의 저장에 관한 여러 가지 사항을 정의하는 기능
  • 조작(Manipulation Facility)
    • 데이터베이스의 자료를 사용자가 이용할 수 있도록 요구에 따라 검색, 갱신, 삽입, 삭제 등을 지원하는 기능
  • 제어(Control Facility)
    • 데이터의 정확성과 안전성 유지를 위한 관리 기능으로 데이터의 무결성 유지, 보안, 병행 수행 제어등을 제공

DBMS의 장 단점

장점

  • 데이터의 중복성과 종속성을 최소화
  • 데이터의 일관성 유지
  • 데이터의 무결성 유지
  • 사용자 간 데이터 공유 가능
  • 데이터의 보안 유지 가능
  • 데이터의 표준화 구현 가능

단점

  • 많은 운영비 소모
  • 자료 처리의 복잡
  • 백업과 회복의 어려움
  • 한 부분에 장애 요인이 생겼을 때 전체 시스템에 영향을 주는 취약성

데이터베이스 관리자(DBA)

데이터베이스 시스템과 관련된 모든 자원에 대해 기획/통제를 하며, 데이터베이스 언어를 이용해 DBMS를 거쳐 데이터베이스 시스템의 전체적인 관리 운영에 책임을 지는 사람이나 집단

  • 역할
    • 데이터베이스의 구성요소를 결정
    • 저장 구조와 접근 방법을 선정
    • 보안, 권한 부여, 유효성 검사 등을 수행
    • 스키마 정의
    • 예방, 회복 절차 수립 등을 모색
    • 무결성 유지를 위한 관리

이상(Anomaly)

  • 데이터베이스의 논리적 설계 시 하나의 릴레이션에 많은 속성이 존재하여 데이터의 중복과 종속으로 인해 발생되는 문제점
  • 릴레이션을 처리하는데 여러 문제를 초래하게 됨
  • 이상의 종류에는 삭제 이상, 삽입 이상, 갱신 이상
  • 삭제 이상(Deletion Anomaly)
    • 테이블에서 하나의 자료를 삭제하고자 할때 그 자료가 포함된 튜플이 삭제됨으로 인해 원하지 않는 자료가 함께 삭제가 이루어져 발생하는 문제점
  • 삽입 이상(Insertion Anomaly)
    • 삽입하는 과정에서 원하지 않는 자료가 삽입되거나 / 삽입하는데 자료가 부족해 삽입이 되지 않는 문제점
  • 갱신 이상(Update Anomaly)
    • 정확하지 않거나 일부의 튜플만 갱신되어 정보가 모호해지거나 일관성이 없어져 정확한 정보의 파악이 안되는 현상

함수적 종속(Functional Dependency)

  • 종속 : 어떤 릴레이션에서 속성A, B가 있을 때, 임의 튜플에서 A값이 B값을 함수적으로 결정한다고 할때, B는 A에 함수적으로 종속되었다고 하고, 기호로는 ‘A\(\to\)B’로 표기
  • B가 A에 종속되어 A값을 알면 B값을 알 수 있을 때, A를 결정자 라고 하고 B를 종속자 라고 한다
  • 완전 함수 종속 : 릴레이션에서 한 속성이 오직 기본키에만 종속이 되는 경우
  • 부분 함수 종속 : 릴레이션에서 한 속성이 기본키가 2개 이상 합성키(복합키)로 구성될때 일부 속성에 종속이 되는 경우
  • 이행적 함수 종속 : 릴레이션에서 A, B, C 세 가지 속성 간의 종속이 A\(\to\)B, B\(\to\)C일때, A\(\to\)C가 성립이 되는 경우

정규화(Normalization)

  • 논리적 설계 단계에서 발생할 수 있는 종속으로 인한 이상 현상의 문제점을 해결하기 위해, 속성들 간 종속 관계를 분석하여 여러 릴레이션으로 분해하는 과정
  • 정규화된 결과를 정규형이라고 하며, 정규형의 종류로는 제 1, 2, 3, BCNF, 4, 5 정규형 등이 있음
  • 제 1정규형 : 한 릴레이션을 구성하는 모든 도메인이 원자값만으로 구성되도록 하는 정규형
  • 제 2정규형 : 릴레이션을 구성하는 모든 속성이 기본키에 완전 함수 종속이 되도록 분해하는 과정
    • 부분 함수 종속을 제거
  • 제 3정규형 : 릴레이션을 구성하는 속성 간에 이행적 함수 종속 관계를 분해하여 비이행적 함수 종속이 되도록 하는 과정
  • BCNF(Boyce-Codd Normal Form) 정규형
    • 릴레이션에서 모든 결정자가 후보키가 되도록 하는 과정
  • 제 4정규형 : 다치 종속 관계가 성립되는 경우 분해하는 정규형
  • 제 5정규형 : 조인 종속이 후보키를 통해서만 성립이 되도록 하는 정규형
    • 조인 종속은 원래의 릴레이션을 분해한 뒤 자연 조인한 결과가 원래의 릴레이션과 같은 결과가 나오는 종속성

역정규화

  • 정규화된 릴레이션을 물리적 데이터 모델링 과정에서 성능 향상을 위해 중복을 허용하더라도 통합, 분할하여 구조를 재조정
  • 릴레이션 역정규화 : 두 릴레이션을 합하거나 하나의 릴레이션을 분할하는 방법
    • 릴레이션 병합 : 두 릴레이션 간의 잦은 데이터 참조로 성능 저하 문제점 해결을 위해 두 릴레이션을 합하는 방법
    • 릴레이션 분할
      • 릴레이션을 검색할 때는 스캔(Scan)방법으로 검색하게 되는데, 속성의 수가 많거나 튜플의 수가 많은 릴레이션의 경우 자주 사용되지 않는 속성이나 튜플이 있을 수 있음
    • 자주 사용되는 속성, 튜플과 자주 사용되지 않는 속성, 튜플을 분해하면 성능을 향상시킬 수 있음
      • 수직 분할 : 자주 사용되는 속성과 그렇지 않는 속성을 구분해서 분할하는 방법
      • 수평 분할 : 자주 사용되는 튜플과 그렇지 않는 튜플을 구분해서 분할하는 방법
  • 속성 역정규화 : 릴레이션에서 성능을 향상시키기 위해 속성 단위로 추가하거나 필요한 속성을 만드는 것
    • 속성 추가 : 두 릴레이션 A, B에서 A의 외래키에 의해 B의 특정 속성값을 자주 참조하는 경우
      • B의 속성을 A릴레이션에 추가하는 방법
    • 파생속성 추가 : 릴레이션에 파생속성을 추가하여 성능을 향상시키는 방법
      • 파생속성(Delivered Attribute) : 현재 릴레이션에 없는 속성이지만 작업의 효율을 위해 한 속성으로 부터 계산이나 기타 가공에 의해 파생되는 속성





© 2019. by RaP0d

Powered by aiden