오봉이와 함께하는 개발 블로그

데이터베이스 이론 & 개념 본문

DB

데이터베이스 이론 & 개념

오봉봉이 2021. 11. 19. 00:09
728x90

SQLday_1 정리 (2021.11.18 목요일)

데이터베이스 기본개념

데이터

  • 관찰이나 측정을 통해서 수집된 사실이나 값
  • 정량적 또는 정성적 실제 값

정보

  • 데이터에 의미를 부여한 것
  • 의사결정에 도움이 되도록 데이터를 의미 있는 패턴으로 정리한 것

데이터 구조

논리적 구조

  • 사용자 관점에서의 데이터의 개념적 구조
  • 데이터의 논리적 배치
  • 논리적 레코드

물리적 구조

  • 저장 관점에서 본 데이터의 물리적 배치
  • 저장장치에 저장된 데이터의 실제 구조
  • 물리적 레코드

데이터베이스 / 데이터베이스 관리 시스템(DBMS)

데이터베이스

  • 데이터의 집합체
  • 조직에 필요한 정보를 얻기 위해
  • 논리적으로 연관된 데이터 모아서 구조적으로 통합해 놓은 것
  • 여러 사용자나 응용 프로그램이 공유
  • 동시 접근 가능

데이터베이스 관리 시스템(DBMS)

  • 데이터베이스를 관리해주는 소프트웨어 시스템
  • Oracle / MySQL / MS SQL Server / MongoDB

데이터베이스 시스템

  • 통합된 데이터를 관리, 처리, 사용자에게 서비스하기 위한 전체 시스템

데이터베이스 시스템 구성 요소

  • 데이터베이스 (DB)
  • DBMS
  • 데이터 언어 (Data Language)
  • 사용자 (User)
  • 데이터베이스 관리자(DBA)
  • 데이터베이스 컴퓨터
  • 시스템

데이터베이스 / 데이터베이스 관리 시스템(DBMS) 특징

  • 데이터 공유
  • 데이터 중복 최소화
  • 데이터 독립성
  • 데이터 안정성
  • 데이터 무결성
  • 보안
  • 데이터 추상화
  • 다양한 뷰 제공

데이터 공유

  • 필요한 자료를 한 번만 데이터베이스에 저장
  • 모든 사용자(응용프로그램)가 공유
  • 데이터 중복 방지, 최신 데이터 유지, 일관성 보장
  • 파일 시스템에서는 여러 응용프로그램에서 데이터를 중복하여 저장/관리

데이터 무결성

  • 데이터베이스 안의 데이터는 오류가 없어야 한다.
  • 데이터베이스에 저장된 데이터 값과 표현하는 현실 세계의 실제 값이 일치해야 한다.
  • 데이터 상호간에 모순성이 없고, 현실 세계에도 모순되지 않도록 데이터 유지
  • 예1 : 동일한 두 곳에 저장. 한 곳은 갱신, 다른 곳은 갱신하지 않은 경우 두 데이터 간의 데이터 불일치 발생. 데이터의 무결성이 보장되지 않는다.
  • 예2 : 현실 세계 모순 -> 나이 300 살
  • 예3 : 데이터 상호 간의 모순. 은행 A, B, C 지점만 존재하는데, 고객정보에 H 지점으로 기록 -> 데이터 무결성 위배.
    이러한 오류를 방지하기 위해 외래키(FK)를 사용하여 테이블 간의 모순성 배제

무결성 제약조건

  • 무결성을 보장하기 위해 정확하지 않은 데이터가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건

보안

  • 데이터베이스의 테이블에 따라 접근 권한을 다르게 하여 데이터베이스의 비밀 유지와 조작 방지

데이터 추상화

  • 데이터베이스에서는 사용자에게 저장 구조의 복잡성을 숨기고 테이블 개념만으로 DB를 생성/관리할 수 있도록 지원해주는 특성

다양한 뷰 제공

  • 다양한 형태(뷰)로 사용자에게 필요한 DBMS 데이터 세트 제공
  • 수 천 가지의 뷰 정의 가능
  • 사용자 편의성 제고
  • 보안 및 권한 관리

DBMS의 기능

  • 데이터 정의(Definition) : 데이터의 구조를 정의하고 데이터 구조에 대한 삭제 및 변경 기능 수행
  • 데이터 조작(Manipulation) : 데이터 조작하는 소프트웨어(응용프로그램)가 요청하는 데이터의 검색, 삽입, 수정, 삭제 등의 작업 지원
  • 데이터 제어(Control) :데이터베이스 사용자 생성하고 모니터링 접근 제어 무결성, 보안 및 권한 감사, 백업과 회복, 동시성 제어 등 기능 지원

데이터 언어 (Data Language)

  • 데이터베이스를 구축하고 이용하기 위한 데이터베이스 관리 시스템과의 통신 수단
  • 데이터 정의어 (DDL)
  • 데이터 조작어(DML)
  • 데이터 제어어 (DCL)

데이터 정의어 (DDL)

  • 데이터베이스의 구조 정의를 위한 언어
  • 데이터베이스 구조, 데이터 형식, 접근 방식 등 데이터베이스 구축 및 변경
  • CREATE / DROP / ALTER

데이터 조작어(DML)

  • 데이터 처리를 위해 응용프로그램과 데이터베이스 관리 시스템 간의 인터페이스를 위한 언어
  • 데이터 처리 연산 기능
  • 검색/삽입/삭제/갱신 등
  • SELECT / INSERT / DELETE / UPDATE

데이터 제어어 (DCL)

  • 보안 및 권한 제어, 데이터 무결성, 복구, 병행 제어 등을 위한 언어
  • 데이터 보안 : 권한이 없는 접근으로부터 보호
  • 데이터 무결성 : 데이터의 정확성, 안정성 보장
  • 데이터 회복(복구) : 시스템 오류 등으로부터 회복
  • 병행 제어 : 다수 사용자가 공유
  • GRANT / REVOKE / COMMIT / ROLLBACK

데이터베이스 발전

  • 오프라인 관리
    • 종이에 연필로 기록해 장부로 관리
  • 파일 시스템 사용
    • 컴퓨터 파일에 기록/저장 – 메모장, 엑셀 활용
    • 컴퓨터에 저장된 파일은 읽고, 쓰기가 편한 약속된 형태의 구조 사용
    • 데이터 중복으로 인한 불일치 문제
  • 데이터베이스 관리 시스템 (DBMS)
    • 파일 시스템의 단점 보완
    • 대량의 데이터를 보다 효율적으로 관리하고 운용

데이터베이스/DBMS 종류

계층형

  • 처음으로 나온 DBMS 개념 - 1960년대 시작
  • 레코드(행, 튜플)들을 계층구조로 표현한 데이터 모델 사용
  • 검색 빠르지만, 구조 변경 어렵고, 데이터 중복 문제 발생

네트워크형

  • 레코드 링크로 이루어져 있다.(Pointer)
  • 복잡한 내부 포인터 사용
  • 프로그래머가 모든 구조를 이해해야 작성 가능한 이슈가 발생.

관계형

  • RDBMS
  • 논리적 구조가 테이블 형태
    • Oracle, MySQL, MS SQL Server, Informix, Sybase, DB2
  • 속성(열, 컬럼)값 사용

NoSQL

  • NotOnly SQL
    • SQL을 사용하지 않는다.
      • 하지만 SQL이 필요 없다는 의미는 아니라 개선/보완을 해야 한다는 의미
  • RDBMS보다 덜 제한적인 일관성 모델 이용
  • Key-Value 형태로 저장
  • 키를 사용해서 데이터 접근 및 관리
  • MongoDB

관계형 데이터베이스(RDBMS : Relational DataBase Management System)

  • 관계형 데이터 모델 : 모든 데이터를 2차원 테이블 형태인 릴레이션 구조로 표현하는 논리적 데이터 모델

  • 릴레이션(테이블)

    • 관계형 데이터 구조
    • 데이터를 원자 값으로 갖는 2차원의 테이블 표현
    • 논리적 구조이므로 다양한 정렬 기준을 통하여 릴레이션 표현 가능
  • 릴레이션 스키마 구조

    • 데이터를 넣을 수 있도록 하는 릴레이션들
    • 릴레이션 이름, 속성(열) 이름, 속성 값의 도메인 정의
  • 속성(Attribute)

    • 데이터베이스를 구성하는 가장 작은 논리적 단위
    • 릴레이션의 열(Column)
    • 개체의 특성, 상태 등 기술하는 데 사용
    • 파일 구조의 데이터 필드에 해당.
    • 속성 = 열 = 칼럼 = 필드 모두 같이 표현한다.
    • 속성 : 학번, 이름, 학과, 학년
  • 도메인(Domain)

    • 릴레이션에서 하나의 속성이 취할 수 있는 같은 타입의 원자 값들의 집합
    • 예 : 학년 속성의 도메인은 1~n학년이 될 수 있다.
    • 실제 속성 값을 입력할 때 적합성 여부를 검사하는데 사용한다.
      • 예 : 속성 값이 성별일 경우 남성, 여성이 들어와야 하는데 중성이 들어온다면 문제가 발생
  • 튜플(Tuple)

    • 릴레이션의 행/로우/레코드
    • 릴레이션 내의 모든 튜플은 서로 중복되어서 안된다.
  • 릴레이션의 특징

    • 속성은 단일 값을 가진다
      • 각 속성의 값은 도메인에 정의된 값만을 가지며 모두 단일 값을 가져야 한다.
      • 한 속성은 2개 이상의 값을 가질 수 없다.
    • 속성은 서로 다른 이름을 가진다
    • 한 속성의 값은 모두 같은 도메인 값을 가진다
    • 속성의 순서는 상관없다.
    • 릴레이션 내의 중복된 튜플은 허용하지 않는다.
    • 튜플의 순서는 상관없다.

관계 데이터 제약

제약

  • 데이터베이스에 저장되는 데이터에 대한 규칙
  • 데이터베이스의 기본 구조를 유지하고 현실세계에서 데이터가 갖는 의미를 보다 정확하게 표현
  • 데이터의 오류를 방지하기 위한 중요한 수단

    관계 데이터 제약

  • 무결성 제약 조건

    키(Key)

  • 릴레이션을 구성하는 각 튜플(행)을 속성(열)값에 의해 유일하게 식별할 수 있게 해주는 속성 또는 속성의 집합
  • 릴레이션은 중복된 튜플을 허용하지 않기 때문에 각 튜플에 포함된 속성들 중 어느 하나(혹은 하나 이상)는 값이 달라야 한다.

    키의 종류

  • 기본키(주 키, Primary Key, PK)
    • 한 릴레이션에서 모든 튜플을 유일하게 구별할 수 있는 속성
    • null값은 허용하지 않는다(0도, 아니고 스페이스도 아님)
    • 중복될 수 없다
    • 키 값의 변동이 일어나지 않아야 한다.
      • 예 : 학생(학번, 성명, 학과, 학년, ...)
        • 기본키 = 학번
      • 예 : 학생(학번, 주민번호, 성명, 학과, 학년, ...)
        • 기본키 = 학번(하나만 선택) 또는 주민번호(선택 가능하지만 학생 테이블인 경우 학번 사용)
        • 주민번호는 후보키나 대체키가 될 수 있다.
  • 외래키(Foreign Key, FK)
    • 다른 릴레이션(테이블)의 기본키를 참조하는 속성
    • 현재 테이블에서 기본키가 아닌 일반 속성이지만 원래 속한 테이블에서는 기본키다.
    • 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 동일
    • 참조되는(기본키) 값이 변경되면 참조하는(외래키)값도 변경
    • null값과 중복값 허용(가능하면 null값은 사용하지 않는 것이 좋다.)
    • 예 : 학과(학과코드(PK), 학과명, ...)
      • 학생 (학번, 성명, 학과코드(FK))
  • 후보키
    • 여러 개의 속성을 묶어서 기본키로 사용하는 키
728x90

'DB' 카테고리의 다른 글

DAO & DTO  (0) 2021.11.25
내장함수 & 파일로드 & JDBC  (0) 2021.11.24
DML - Join, SubQuery, Table CP  (0) 2021.11.23
DML - SELECT문 기초  (0) 2021.11.22
DDL 이론과 예제&실습  (0) 2021.11.19
Comments