Concepts

데이터베이스 입문

척척석사1 2021. 4. 4. 16:18

1.1 데이터베이스 시스템의 응용

  • 데이터베이스의 다양한 활용 예
    • 판매: 고객, 상품, 구매 정보 관리
    • 은행업무: 고객정보, 계좌, 예적금 등의 정보 및 은행업무 수행을 위한 트랜잭션
    • 대학: 학생정보, 수강신청, 학점 정보 등의 학사관리

1.2 데이터베이스 시스템의 목적

초기 데이터베이스의 형태: 파일 시스템

  • 대학 예시
    • 교수, 학생, 학과, 수업에 대한 정보 보관 예시
    • 다음과 같은 응용프로그램의 필요
      • 새로운 학생, 교수, 수업 추가
      • 수업에 학생을 등록하고 수업 명단 생성
      • 학생에게 학점 부여, 평점 계산, 성적 증명서 생성
    • 새로운 기능이 필요할 때마다 새로운 응용프로그램이 필요

파일 시스템에 정보를 저장했을 때의 단점

  • 데이터 중복과 비일관성
    • 데이터 중복 → 저장공간의 낭비
    • ex: 여러 과목을 듣는 학생의 인적사항이 여러 과목 학생 리스트에 반영
    • 데이터의 비일관성 → 동일한 데이터의 여러 사본이 서로 다른 데이터 가지고 있음
    • ex: 특정 학생의 개인정보가 수정되었을 때 특정 과목 수강 목록에만 반영
  • 데이터 액세스 시의 난점
    • 데이터 중 특정 조건으로 데이터를 수집해야 할 경우:
      • 수작업으로 골라내거나
      • 매 요청마다 새로운 응용프로그램을 개발해야 함
  • 데이터의 고립 (isolation)
    • 데이터가 여러 파일에 흩어져있고, 서로 다른 형식을 가지고 있어 원하는 데이터를 검색하는 프로그램을 새로 작성하기 어렵다
  • 데이터 무결성 문제 (Integrity problems)
    • 데이터베이스 내의 데이터는 무결성을 위한 제약조건을 가지는데, 이런 제약조건이 명시되지 않고 개별 응용프로그램 내에 'buried' 되어있다
    • 데이터의 추가 / 제거가 발생하는 동안 데이터의 무결성은 유지되어야 함
    • 새로운 제약조건이 추가될 때 기존 응용프로그램을 모두 수정하여 새로 변경된 제약조건을 새로 만족시킬 수 있게 하는 일이 쉬운 일이 아님
  • 데이터 원자성 문제
    • 원자성을 지켜야 함
    • 데이터베이스 내에 업데이트를 생성하는 프로그램의 경우 해당 업데이트가 완전히 이루어지거나, 도중에 문제가 생기면 아예 이루어지지 않게 해야 함
    ex: 이체 작업, 출금-입금이라는 일련의 이체 작업이 원자성을 가져야 함
  • 동시 액세스 문제
    • 여러 사용자에 의해 동시에 데이터베이스 접속이 발생하고, 그에 따른 데이터베이스 변화가 발생할 때에도 데이터 일관성이 유지되어야 한다.
    • 파일 시스템 상에서는 서로 조율되지 않은 응용 프로그램에 의해 작업이 수행되므로 이를 관리하기 어려움
    • 수강신청 예제
  • 보안 문제
    • 모든 사용자가 모든 데이터에 액세스 하는 것은 아니다.
    • 보안에 대한 제약조건을 지키기 어려움

다양한 문제로 DBMS의 개발이 요구됨 ⇒ DBMS가 위와 같은 모든 문제들에 대한 해결책을 제시함

1.3 데이터의 관점

DBMS: <서로 관련이 있는 파일의 모임> + < 파일에 액세스 하거니 수정하도록 하는 프로그램의 집합 >

DBMS 시스템의 주요한 목적: 데이터가 어떻게 저장되고 유지되는지에 관한 세부사항은 사용자로부터 은폐함으로써 사용자에게 데이터에 관한 추상적인 관점을 제공함.

1.3.1 데이터의 추상화

  • 물리적 단계: 어떻게 저장되는지에 대한 기술, 복잡한 하위 단계의 데이터 구조들에 대한 상세한 기술 (기억 장소, 메모리 상의 저장 구조)
  • 논리적 단계: 어떤 데이터가 저장되어있는지, 데이터 사이에는 어떤 관계가 있는지 기술
    • 데이터베이스 관리자가 작업하는 단계
    • 물리적 데이터 독립성 ( 논리적 단계의 사용자는 물리적 단계의 구조를 알 필요는 없음)
  • 뷰 단계: 전체 데이터베이스의 일부

1.3.2 인스턴스와 스키마

  • 인스턴스: 어느 특정한 순간에 데이터베이스에 저장되어있는 정보의 모임
  • 스키마: 데이터베이스의 전체적인 설계
    • 추상화 단계에 따라 여러 층위의 스키마 존재
      • 물리적 스키마
      • 논리적 스키마: 논리적 단계에서 데이터베이스 설계 기술
        • 대부분의 응용프로그램이 논리적 스키마의 기반에서 작성됨
        • 물리적 스키마에 의존하지 않아서 물리적 스키마가 변경되어도 고칠 필요가 없음 : 물리적 데이터 독립성
      • 서브 스키마: 서로 다른 뷰를 기술

1.3.3 데이터 모델

데이터 모델: 데이터베이스 구조의 기반이 되는 것

  • 데이터
  • 데이터 사이의 관계
  • 데이터의 의미
  • 일관성 제약조건

등을 기술하기 위한 개념적 표현의 집합

  • 관계형 모델 (relation model)
    • 데이터와 데이터 간의 관계를 나타내는 데에 테이블 집합을 사용함
      • 고유한 이름을 가진 column으로 구성됨
      • 테이블 ~ 릴레이션
    • 레코드 기반 모델의 한 예
      • 데이터베이스가 몇 개의 행으로 이루어진 레코드로 구성
      • column = 열 = 레코드형의 속성
  • 개체-관계 모델 (entity-relationship model: mainly for database design)
  • 객체 기반 데이터 모델 (Object based Data model)
  • 반구 조형 데이터 모델 (Semistructured Data model, xml)
  • Other older models
    • network model
    • hierarhchical mode;

1.4 데이터베이스 언어

  • 데이터 정의 언어 (data definition language)
    • 데이터베이스 스키마 기술
  • 데이터 조작 언어 (data manipulation language)
    • 데이터베이스 질의 및 갱신 표현

⇒ 구분 명확하지 않음 SQL: 단일 데이터베이스 언어의 각각 부분을 구성


1.4.1 데이터 조작 언어: 접근 + 조작

  • 데이터베이스 내에 저장된 정보 검색
  • 데이터베이스에 새로운 정보 삽입
  • 데이터베이스 정보 삭제
  • 데이터베이스 내 데이터 수정

Query (쿼리, 질의)

  • 정보의 검색을 요청하는 문장
  • sql: 정보검색을 담당하는 언어,, 질의어,,, 데이터 조작 언어,,,

1.4.2 데이터 정의 언어

데이터베이스 스키마의 구현:

  • 데이터 정의 언어로 구체화됨
  • 데이터의 추가적인 특성을 표현하는 데 사용됨
  • 데이터 정의 언어의 실행 결과: 메타데이터 (데이터를 위한 데이터)가 담겨있는 data dictionary의 생성
    • set of table templates stored in a data dictionary
    • 데이터베이스 스키마
    • 무결성 제약조건
      • primary key
    • 권한 (보안)
  • 무결성 제약조건: 데이터의 무결성을 위해 필요한 제약조건
    • 도메인 제약조건: 값들들이 도메인은 각각의 데이터 속성과 연관되어있음
    • 참조 무결성: 참조하고 있는 다른 테이블의 데이터가 반드시 존재해야 함
    • 주장(assertions): 데이터베이스가 항상 만족시켜주어야 하는 조건
    • 권한: 데이터베이스의 다양한 데이터에 대해 사용자에 따라 다른 접근권한을 갖도록 할 때 권한을 조절함

1.5 관계형 데이터베이스

관계형 모델에 기반해 데이터와 데이터들의 관계를 나타내기 위해 테이블(릴레이션)의 집합을 사용

1.5.1 테이블

  • 고유한 이름을 가진 여러 개의 열(칼럼)으로 구성

1.5.2 데이터 조작 언어

  • SQL: 비절차적 언어
  • 1개 이상의 input table을 쿼리로 받아서 1개의 단일 테이블을 반환하는 작업을 함
  •  

  • How to
    • instructor 테이블에서
    • dept_name이 comp.sci. 과인
    • name column을 반환해라
    • ⇒ Kats, Sri~, Bran~

1.5.3 데이터 정의 언어 -

1.5.4 응용 프로그램에서의 데이터베이스 접근

  • SQL 자체가 복잡한 연산을 하는 프로그램은 아니고
  • SQL 임베드해서 추출한 데이터를 가지고 연산하는 프로그램 작성할 수 있다.

1.6 데이터베이스 설계

  • 데이터베이스 시스템: 많은 양의 데이터를 관리하기 위해 설계됨
  • 별개의 정보들 아니라 특정 데이터를 공유하거나, 서로 관련되어있거나.. 다양한 특성을 가지고 있음
  • 데이터베이스 설계 ~ 데이터베이스 스키마 설계

1.6.1 설계 단계

  • 사용자의 요구조건을 반영한 개념적인 골격과 데이터베이스가 어떻게 구성될 것인가에 대한 것을 제공
  • 데이터 모델을 선택하고, 선택한 데이터 모델의 개념을 적용한 스키마로 설계
  • 데이터베이스 스키마 설계: 논리적 스키마 디자인, 데이터를 어떻게 그룹화할 것인가
    • 개체-관계 모델 (1.6.3)
    • 알고리즘 정규화 (1.6.4)
  • 추상 데이터 모델 → 데이터베이스 구현
    • 논리설계단계: 상위의 개념적 스키마를 사용할 데이터베이스의 구현 데이터 모델에 대응시킨다
    • 물리 설계단계: 내부적인 저장 구조를 포함한 파일 구성 형식 설계

1.6.3 개체-관계 모델

  • 개체 (entity) - 관계 (relationship) 이용
  • 개체 : 실세계에 존재하는 어떤 것, 객체, 다른 객체와 구별
    • 속성의 집합
  • 관계: 여러 개체들 간의 연관성
  • → 스키마 디자인의 관점에서 2번 각주에 대해 생각해보자!

1.6.4 정규화

정규화의 목표: 불필요하게 중복 저장되는 정보가 없고, 정보 검색을 쉽게 할 수 있는 릴레이션 스키마 집합을 생성하는 것

잘못된 설계로 발생할 수 있는 문제

  • 정보의 중복
  • 특정 정보의 표현이 불가능함
    • Faculty table에서 학과 정보를 같이 포함하고 있는 경우, 
      • 교수가 1명 있는 과에서 교수가 퇴사하는 경우: 퇴사한 교수가 있던 학과를 표현할 수 없음 
      • 새로운 학과를 생성하는데 교수가 없는 경우: 새 학과를 표시할 수 없음 

특정 정보 표현 불가 문제에 대한 해결

  • NULL 값의 도입
  • 할 수 있지만 가급적이면 활용하지 않는 것이 좋음

아무튼 정규화를 통해 중복 없이, 정보검색 쉽게 할 수 있는 릴레이션 스키마 집합을 생성할 수 있다고 함

1.8 트랜잭션 관리

트랜잭션: collection of operations that performs a single logical function in a database application

(~ 데이터베이스 응용 프로그램에서 하나의 논리적 기능을 수행하는 연산들의 모임)

트랜잭션이 가져야 하는 성질

  • 원자성
    • 하나의 논리적 기능을 수행하는 일련의 연산들은 전체가 완전히 수행되거나 일체 수행되지 않아야 하는 성질
  • 일관성
    • 데이터베이스의 제약 조건을 위반하지 않으며
    • 데이터베이스의 일관성을 보존해야 한다
    ex: A잔고 → B 잔고 이체 시 예금 A의 잔고와 B의 잔고 합이 보존되어야 함
  • 지속성
    • 기능 실행 뒤에 업데이트된 데이터가 유지되어야 한다.
    ex: 예금 이체 후 A의 잔고와 B 의 잔고의 업데이트된 값이 유지되어야 함

실패 복구:

트랜잭션이 성공적으로 완료되지 않은 경우 실패한 트랜잭션이 데이터베이스 상태에 영향을 주지 말아야 함 → 트랜잭션이 일어나기 전 (NONE)의 상태로 복원

동시성 제어 관리자

여러 트랜잭션이 데이터베이스를 동시에 변경하면 데이터 일관성이 깨짐 → 동시 실행 트랜잭션 간의 상호작용에 대한 제어 필요

1.9 데이터베이스 구조

  • 원격으로 데이터베이스에 접속해서 작업하는 클라이언트
  • 데이터베이스 시스템이 실제로 설치되어있는 서버

2-계층 구조

  • 응용프로그램이 클라이언트 상에 존재
  • 질의문 보내서 서버의 데이터베이스 시스템의 기능 불러옴

3-계층 구조

  • 클라리언트: 호출 직접 수행하지 않음 (전처리 기능), 응용프로그램 서버와 교신
  • 응용프로그램 서버: DBMS와 교신

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

1.12 데이터베이스의 디자인

... 관계형 디비의 관점에서

  • 테이블 (릴레이션)
    • 행:
      • 레코드, 튜플
      • 행 내에 각각의 열에 대응되는 값을 가지고 있음
    • 열:
      • 필드, 속성, attribute
      • 데이터 타입이 정의되어 있음
    • 키:
      • 테이블 내에서 데이터 식별에 필요한 기준이 되는 열, 기본 키 (primary key)
        • 기본키는 레코드 중 중복되는 값이 없어야 한다는 조건을 가짐
      • 디비 내 다른 테이블 참조할 때 사용
      • 테이블 내 속성 중 다른 테이블로부터 온 것: 외래 키 (참조키)
    • 스키마
      • 테이블 디자인
      • 개체-관계 다이어그램 도표, 텍스트 등으로 표현
    • 관계
      • 외래 키: 두 테이블 데이터 간의 관계를 나타냄
  • 데이터베이스 디자인
    • 어떤 정보를 담는 테이블을 사용할지, 어떤 값을 키 값으로 사용할 지 등을 판단하는 작업
      • 모델링해야 하는 문제에 대해 생각
      • 중복된 데이터의 저장 지양
        • 저장공간의 낭비
        • 잘못된 업데이트 (불완전한 업데이트 등)
      • 하나의 항목 (표의 한 칸) 에는 하나의 데이터만 저장되도록 한다
      • 알아보기 쉬운 키를 활용한다
        • 키: 유일성 가져야 함
        • 유일성 가지는 속성이 있는 경우 키를 따로 만들지 않고 해당 속성을 키로 사용할 수 있음
      • 데이터베이스에 물어볼 질문에 대해 생각해본다
        • 해당 데이터베이스에서 추출하고자 하는 데이터의 형태/질의의 종류 등을 고려
      • 내용이 빈 항목이 많지 않도록 디자인하기 (null 데이터의 발생을 최소화하기)
    • 테이블의 종류
      • 기본 테이블
      • 연결 테이블

참고문헌

opentutorials.org/course/3162

 

DATABASE1 - 생활코딩

수업소개 이 수업은 정보기술의 심장인 데이터베이스에 대한 포괄적인 소개를 담고 있습니다. 수업대상 이 수업은 구체적인 데이터베이스 제품을 다루지 않습니다. 데이터베이스라는 복잡한

opentutorials.org

www.db-book.com/db7/slides-dir/PDF-dir/ch1.pdf

www.db-book.com/db7/

 

Database System Concepts - 7th edition

 

www.db-book.com

 

반응형