본문 바로가기
시큐리티 아카데미

데이터베이스 이론

by christmas mushroom 2024. 7. 25.

기초 용어 정리

데이터: 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값

정보: 데이터에 의미를 부여한것

지식: 사물이나 현상에 대한 이해

데이터베이스: 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것

          - 데이터의 검색과 변경 작업을 주로 수행

             - 변경: 시간에 따라 변하는 데이터의 값을 데이터베이스에 반영하기 위해 수행하는 삽입, 삭제, 수정 등의 작업

 

데이터베이스의 개념

통합된 데이터 (Intergrated Data)

     - 데이터를 통합하는 개념

     - 데이터의 중복을 최소화하여 중복으로 인한 데이터 불일치 현상 제거

저장된 데이터 (Stored Data)

     - 문서로 보관된 데이터가 아닌 컴퓨터 저장장치에 저장된 데이터 (ex. 디스크, 테이프)

운영 데이터 (Operational Data)

     - 조직의 목적을 위해 사용되는 데이터 / 업무를 위한 검색 목적으로 저장된 데이터

공용 데이터 (Shared Data)

     - 공동으로 사용되는 데이터

 

데이터베이스의 특징

실시간 접근성 (Real Time Accessibility)

     - 사용자가 데이터 요청 시 수초 내에 실시간으로 서비스함

계속적인 변화 (Continuous Change)

     - 데이터의 값은 시간에 따라 계속 변화함 (ex. 예약시스템, 교통정보, 판매정보 등)

     - 삽입, 삭제, 수정 등의 작업을 통해 바뀐 데이터 값 저장함

동시공유 (Concurrent Sharing)

     - 여러 사용자에게 동시 공유됨

     - 데이터베이스에 접근하는 프로그램이 여러 개 있다는 의미임

내용에 따른 참조 (Reference by Content)

     - 데이터의 물리적인 위치가 아닌 데이터의 값에 따라 참조됨

 

데이터베이스 시스템의 구성

DBMS: 사용자와 데이터베이스를 연결시켜주는 소프트웨어

     - 주기억장치에 상주

데이터 베이스: 모아둔 데이터

     - 하드디스크에 저장

데이터 모델: 눈에 보이지 않는 논리적인 개념(데이터가 저장되는 기법에 관한 내용)

 

용어

○ DBA(DataBase Administrator): 데이터베이스 관리자

DDL(Data Definition Language): 데이터 정의어

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

Embedded DML(내장형 데이터 조작어): 코딩시 필요

스키마: DB의 구조를 정의해 놓은 것

                ex) 테이블에서 속성, 구조, 속성 값의 타입 등 정의함

인덱스: 자료를 쉽고 빠르게 찾을 수 있도록 만든 데이터 구조

데이터 사전: 데이터에 대한 설명 

 

정보시스템의 발전

파일 시스템

      ○ 데이터를 파일 단위로 파일서버에 저장 (파일 연동 X)

      ○ LAN으로 파일 서버에 컴퓨터 연결 → 데이터 사용위해 각 컴퓨터의 응용프로그램에서 파일의 열기와 닫기 요청

      ○ 데이터 중복 저장 가능성↑ + 데이터의 일관성 훼손 가능성↑

데이터베이스 시스템

      ○ DBMS 이용해 데이터를 통합 관리함

      ○ 서버: 데이터를 가진 쪽 / 클라이언트: 외부에서 데이터 요청하는 쪽

      ○ 데이터의 일관성유지, 복구, 동시접근 제어 등 수행 → 데이터의 중복 줄이고 데이터 표준화해 무결성 유지함

웹 데이터베이스 시스템

      ○ 데이터베이스를 웹 브라우저에서 사용할 수 있도록 서비스함 (ex. 온라인 상거래, 공공민원 서비스)

      ○ 클라이언트가 웹브라우저 통해서 웹서버에 접속해 데이터 요청 → 웹서버는 DBMS 서버에 데이터 요청

분산 데이터베이스 시스템

       여러 곳에 분산된 DBMS 서버 연결해 운영함 (ex, 대규모 응용 시스템)

클라우드 데이터베이스 시스템

       클라우드 상에 DBMS서버 올려놓고 운영하는 시스템

       보안 문제, 오류 시 전세계 시스템 마비문제

 

파일시스템과 DBMS의 비교

구분 파일시스템 DBMS
데이터 정의 및 저장 - 데이터 정의: 프로그램
- 데이터 저장: 파일 시스템
- 데이터 정의: DBMS
- 데이터 저장: 데이터베이스
데이터 접근 방법 응용 프로그램이 파일에 직접 접근 응용 프로그램이 DBMS에 파일 접근 요청
사용 언어 자바, C, C++, ... 자바, C, C++ 과 SQL
CPU/주기억장치
사용
적음 많음
데이터 중복 데이터를 파일 단위로 저장해 중복가능 DBMS를 이용해 데이터를 공유해 중복 가능성 낮음
데이터 일관성 데이터 중복저장으로 일관성 결여됨 중복제거로 데이터 일관성 유지
데이터 독립성 독립성 유지 불가능 데이터와 프로그램의 분리가 어려움 독립성 유지가능 데이터와 프로그램 분리가능
관리 기능 보통 데이터 복구, 보안, 동시성 제어, 데이터 관리 기능 수행
프로그램 개발
생산성
나쁨 짧은 시간애네 개발 가능
기타 장점 보통 데이터 무결성 유지, 데이터 표준 준수 용이

 

데이터베이스 언어 (SQL)

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

    - DBMS에 저장된 테이블 구조 정의

    - CREATE, ALTER, DROP

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

    - 데이터를 검색, 삽입, 삭제, 수정하는데 사용

    - SELECT, INSERT, DELETE, UPDATE

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

    - 데이터의 사용 권한 관리

    - GRANT, REVOKE

 

데이터베이스 사용자

 일반사용자

    - 데이터를 다루는 업무를 하는 사람

    - 응용프로그램으로 데이터베이스에 접근하는 일반인

 응용프로그래머

    - 프로그래밍 언어 + SQL 사용해 일반사용자가 사용할 수 있도록 응용 프로그램 만드는 사람

SQL 사용자

    - 응용 프로그램으로 구현되어 있지 않은 업무를 SQL 사용해 처리하는 사람

데이터베이스 관리자 (DBA, DataBase Administrator)

    - 데이터베이스 시스템(설계, 구현, 유지보수)을 총괄

    - 업무: 데이터베이스 사용자 통제, 보안, 성능 모니터링, 데이터 전체 파악 및 관리, 데이터 이동 및 복사 등

  SQL 언어 프로그래밍 능력 DBMS 지식 데이터 구성
일반 사용자 X X X X
응용 프로그래머 O O
SQL 사용자 X O O
데이터베이스
관리자
O

 

DBMS의 기능

● 데이터 정의(Definition): 데이터 구조 정의하고 데이터 구조에 대한 삭제 및 변경 기능 수행

● 데이터 조작(Manipulation): 데이터 조작하는 소프트웨어가 요청하는 데이터의 삽입, 수정, 삭제 작업 지원

● 데이터 추출(Retrieval): 사용자가 조회하는 데이터나 응용 프로그램의 데이터 추출

● 데이터 제어(Control): 데이터베이스 사용자 생성하고 모니터링하며 접근을 제어 / 백업, 회복, 동시성 제어 기능 지원

 

데이터 모델

① 계층 데이터 모델 (Hierarchical Data Model)

     - IMS(IBM)

② 네트워크 데이터 모델 (Network Data Model)

     - IDS(GE)

③ 객체 데이터 모델 (Object Data Model)

     - Oracle(Oracle), System R(IBM), dBase(Ashton), MySQL(썬마이크로시스템), SQL Server(마이크로소프트)

④ 관계 데이터 모델 (Relational Data Model) → 가장 많이 쓰인다

     - Gemstone, ObjectStone

     - 관계 데이터 모델이 갖는 텍스트 위주의 한계를 극복하기 위해 객체 개념에 기반해 만들었다

⑤ 객체-관계 데이터 모델 (Object-relational Data Model) → 관계 데이터 모델 + 객체 데이터 모델의 장점 결합

     - UniSQL

     - 현재 데이터베이스 시스템은 관계 데이터 모델을 기본개념으로 객체 데이터 모델의 장점을 이부 수용한 객체-관계 데이터 모델로 발전하고 있다

 

  데이터 모델: 데이터 베이스 시스템에서 데이터를 저장하는 이론적인 방법, 데이터베이스에 데이터가 어떻게 구조화되어 저장될지를 결정함 (역사: 4강 p.28)

    ○ 데이터를 간에 관계를 표현하는 방법

        1) 포인터 사용: 계층 데이터 모델, 네트워크 데이터 모델

             - 데이터를 직접 찾아갈 수 있어 프로그램 속도 빠르지만 응용 프로그램 개발 속도가 느리다

        2) 속성 값 사용: 관계 데이터 모델 ← 가장 많이 사용함

             - 포인터 사용할 때보다 속도는 조금 느리지만 개념이 쉽고 프로그램 개발이 빠르다

        3) 객체식별자 사용: 객체 데이터 모델

             - 객체지향 언어의 상속, 캡슐화 등의 개념을 도입

 

데이터 베이스의 개념적 구조

● 1975년 ANSI에서 데이터베이스를 개념적으로 이해하기 위해 데이터베이스 구조에 관한 안을 만들었다

    - 데이터베이스를 보는 관점을 3개의 단계로 분리한 것 = 3단계 데이터베이스 구조(3-Layer Database Architecture)

    - 3단계 데이터베이스 구조는 데이터베이스의 복잡한 구조를 단순화하여 표현했다

◇ 스키마

    : 데이터베이스의 조직이나 구조를 의미함

     ○ 릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의함

     ○ 테이블에서 스키마는 테이블의 첫 행인 헤더(속성)에 나타나고 데이터의 특징을 나타내는 속성, 자료타입 등의 정보를 담고 있음 

  ① 외부 스키마(External Schema)

       ○ 일반 사용자나 응용 프로그래머가 접근하는 계층

       ○ 전체 데이터베이스 중에서 하나의 논리적인 부분

       ○ 여러개의 외부스카마가 있을 수 있다

       ○ 서브 스키마라고도 하고 뷰의 개념이다

  개념 스키마(Conceptual Schema)

       ○ 전체 데이터베이스의 정의를 의미한다

       ○ 하나만 존재하고 DBA가 관리한다

       ○ 하나의 데이터베이스에는 하나의 개념 스키마가 존재

       ○ 데이터관계, 제약사랑, 무결성의 내용이 포함

  내부 스키마(Internal Schema)

       ○ 물리적 저장장치에 데이터베이스가 실제로 저장되는 방법을 표현

       ○ 하나만 존재

       ○ 인덱스, 데이터레코드 배치방법, 데이터 압축의 내용이 포함

 

매핑(Mapping)

     ○ DBMS는 매핑을 통해 각 단계 간 대응 관계를 정의

    ① 외부/개념 매핑 (External-conceptual mapping)

         ○ 사용자의 외부 스키마와 개념 스키마 간의 매핑

         ○ 외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응시킨다

    ② 개념/내부 매핑 (Conceptual-internal mapping)

         ○ 개념 스키마의 데이터가 내부 스키마의 물리적 장치 어느곳에 어떤 방법으로 저장되는지 대응시킨다

 

데이터 독립성

      3단계 데이터베이스 구조의 특징은 데이터 독립성에 있다

      하위단계(물리적)의 세부 사항을 상위단계(논리적)에 추상화해 숨김으로써 한 단계 내의 변경에 대해서 다른단계와 상호 갑섭이 없도록한다

      일반사용자는 사용자별로 외부스키마를 사용하므로 다른 스키마에 영향을 주지않고 DBA는 일반사용자의 외부스키마에 영향 안주면서 개념스키마나 내부스키마의 물리적인 저장 방법을 바꿀 수 있다

    논리적 데이터 독립성 (Logical Data Independence)

         ○ 외부스키마와 개념스키마 사이의 독립성

         ○ 개념스키마가 변경되어도 외부스키마에는 영향을 미치지 않도록 지원

         ○ 논리적 구조가 변경되도 응용프로그램에는 영향 없도록 함

         ○ 개념스키마의 테이블을 생성하거나 변경해도 외부스키마가 직접 다루는 테이블아니면 영향없다

    물리적 데이터 독립성 (Physical Data Independence)

         ○ 개념스키마와 내부스키마 사이의 독립성

         ○ 저장창치 구조 변경처럼 내부스키마가 변경되도 개념스키마에 영향 미치지 않도록 지원

         ○ 성능 개선 위해 물리적 저장 장치를 재구성할 경우에도 개념스키마나 응용프로그램같은 외부스키마에 영향없다

         ○ 논리적 독립성보다 구현하기 쉽다

 

 

릴레이션

: 행과 열로 구정된 테이블, 스키마와 인스턴스로 이루어짐

 - 스키마 설명은 위에

 -인스턴스: 정의된 스키마에 따라 테이블에 실제로 저장되는 데이터의 집합

 ① 릴레이션 내에서 관계: 릴레이션 내 데이터들의 관계로 관련있는 실제 데이터들의 집합으로 이루어

 ② 릴레이션 간에 관계: 한 릴레이션에서 다른 릴레이션으로 식별 가능한 값을 이용해 연결함

 

스키마의 요소

     □ 속성(Atrribute) = 열

     □ 도메인: 속성이 가질 수 있는 값

     □ 차수(Degree): 속성의 개수

인스턴스의 요소

     □ 투플(Tuple) = 행

         - 각 투플의 속성값은 릴레이션 스키마에서 정의한 도메인 값으로 구성

         - 투플의 속성의 개수는 릴레이션 스키마의 차수와 동일

         - 모든 투플들은 서로 중복되지 않아야 함

     □ 카디날리티(Cardinality) = 투플의 수

         - 투플의 삽입, 삭제, 수정 등에 따라 수시로 변함

릴레이션 용어 같은 의미로 통용되는 용어 파일 시스템 용어
릴레이션 테이블 파일
스키마 내포 헤더
인스턴스 외연 데이터
투플 레코드
속성

 

◇ 릴레이션의 특징

     ① 한 속성의 값은 모두 같은 도메인을 값을 갖는다

     ② 속성은 단일값을 갖는다

     ③ 속성은 서로 다름이름을 가진다

     ④ 속성의 순서는 상관없다

     ⑤투플의 순서는 상관없다

     ⑥ 릴레이션 내의 중복된 투플은 허용하지 않는다

 

 

관계 데이터 모델

● 데이터를 2차원 테이블 형태인 릴레이션으로 표현해놓은 것

● 제약조건과 관계연산을 위한 관계대수를 정의해 놓음

제약조건 : 각 릴레이션에 저장된 데이터 값이 가져야하는 제약

관계연산 : 릴레이션을 다루는 연산 규칙

● 관계 데이터베이스 시스템: 관계 데이터 모델을 컴퓨터 시스템에 구현한 것

    - SQL 기반으로 구현

 

: 특정 투플을 식별할 때 사용하는 속성(의 집합)

 - 속성의 값은 반드시 달라야하고 투플들을 서로 구별할 수 있어야한다

 1) 슈퍼키: 튜플을 유일하게 식별할 수 있는 값

      - 슈퍼키는 포함하지 않아도 되는 속성을 포함할 수 있음

 2) 후보키: 튜플을 유일하게 식별할 수 있는 속성의 최소 집합

 3) 기본키(Primary Key): 후보키 중 하나를 선택해 대표로 삼은 키

      - 스키마 표현시 밑줄을 그어 표시한다

      - 선정시 고려사항

          ① 릴레이션 내 투플을 식별할 수 있는 고유한 값을 가져야한다

          ② 키 값의 변동이 일어나지 않아야 한다

          ③ 최대한 적은 수의 속성으로 구성해야 한다

          ④ 향후 기본키 사용시에 문제발생 소지가 없어야 한다

          ⑤ NULL값은 허용 안한다

 4) 대리키(인조키): 기본키가 보안을 요구하거나 + 여러속성으로 구성되어 복잡하거나 + 기본키로 마땅한 것이 없을 때 = 가상의 속성을 만들어서 기본키로 삼은 것

      - 임의로 생성하는 값으로 사용자는 직관적으로 그 값의 의미를 알 수 없다

 5) 대체키: 기본키로 선정되지 않은 후보키

      - 기본키에 문제 생길것을 대비해서 대체할 키를 만들어 두는 것

 6) 외래키(Foreign Key, FK): 다른 릴레이션의 기본키를 참조하는 속성

      - 다른 릴레이션의 기본키를 참조해 관계 데이터모델의 특징인 릴레이션 간의 관계를 만들 때 사용된다

      - 특징

           관계 데이터 모델의 릴레이션 간의 관계를 표현하기 위해 사용

           다른 릴레이션의 기본키 참조

          ③ 외래키와 기본키의 릴레이션 도메인은 서로 같아야 함

           NULL값 허용

          ⑤ 중복값 허용

          ⑥ 기본키값이 변경되면 외래키값도 변경

               - 외래키는 항상 데이터의 일관성을 유지함 (외래키 제약조건 = 참조 무결성 제약조건)

          ⑦ 기본키의 일부를 외래키로 사용

          ⑧ 자기 자신의 기본키를 참조하는 외래키도 가능

               -  외래키 사용 시 참조하는 릴레이션과 참조되는 릴레이션이 꼭 다른 릴레이션일 필요는 없음

        

무결성 제약조건(Integrity Constraint)

데이터 무결성: 데이터베이스에 저장된 데이터의 일관성과 정확성 지킴

무결성 유지위해 튜플 삽입, 삭제, 수정 시 제약조건 준수 여부 확인해야함

도메인 무결성 제약조건

     - 릴레이션 내의 투플은 각 속성이 지정한 도메인 값만을 가져야 함

     - 데이터형식(Type), 널(Null, Not Null), 기본값(Default), 체크(Check) 등을 사용해 지정 가능

개체 무결성 제약조건(Entity Constraint) (=기본키 제약)

     - 기본키는 NULL값 못가짐

     - 릴레이션 내에 오직 하나의 값만 존재해야 함

     - 기본키 값이 같으면 삽입, 수정 금지

     - 특별한 확인이 필요하지 않으며 즉시 수행 가능

참조 무결성 제약조건(Referential Constraint) (=외래키 제약)

     - 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 함

     - 외래키가 부모 테이블의 기본키와 다르면 삽입 금지(NULL 예외)

     - 자식 릴레이션 값이 변경될 때 부모 릴레이션의 제약 받음

     - 부모 릴레이션을 참조하는 테이블이 있으면 삭제를 금지하거나 추가 작업 필요

 

 

'시큐리티 아카데미' 카테고리의 다른 글

정보보호 법/제도 1  (2) 2024.09.11
데이터베이스 관계대수  (0) 2024.07.29
리눅스 8  (2) 2024.07.22
악성코드분석  (11) 2024.07.22
리눅스 7  (0) 2024.07.19