메모/ETC

CS - 데이터베이스 1

구너드 2023. 12. 1. 23:17

데이터베이스(database)

  • 데이터베이스는 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합
  • 데이터베이스의 구조는 사용되는 데이터 모델에 의해 결정.

 

<특징>

  • 데이터의 대규모 저장소로서, 여러 사용자에 의해 동시에 사용.
  • 모든 데이터가 중복을 최소화하면서 통합.
  • 데이터베이스는 운영 데이터뿐만 아니라 그 데이터에 관한 설명까지 포함
  • 프로그램과 데이터 간의 독립성이 제공(프로그램 메모리가 아닌 개별적인 저장공간에 저장)
  • 데이터베이스 관리 시스템(DBMS: Database Management System)
    • 데이터베이스를 정의하고, 질의어를 지원하고, 리포트를 생성하는 등 작업을 수행하는 소프트웨어

데이터베이스 스키마

  • 전체적인 데이터베이스 구조를 뜻하며 자주 변경되지 않음.
  • 데이터베이스의 모든 가능한 상태를 미리 정의
  • ex. 사람 데이터는 이름, 키, 몸무게, MBTI 필드를 가진다.
  • ex. DEPARTMENT 데이터는 DEPTNO, DEPTNAME, FLOOR 필드를 가진다.
  • ex. EMPLOYEE 데이터는 EMPNO, EMPNAME, TITLE, DNO, SALARY 필드를 가진다.

 

데이터베이스 시스템(DBS : Database System)

  • DB, DBMS, USER를 포함한 가장 큰 범위

 

데이터베이스

  • 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합된 모임.
  • 시스템 카탈로그(또는 데이터 사전, data dictionary)와 저장된 데이터베이스로 구분할 수 있음.
  • 시스템 카탈로그(system catalog)는 저장된 데이터베이스의 스키마 정보를 유지.

 

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

  • 사용자가 새로운 데이터베이스를 생성
  • 데이터베이스의 구조를 명시
  • 사용자가 데이터를 효율적으로 질의하고 수정할 수 있도록 함
  • 시스템의 고장이나 권한이 없는 사용자로부터 데이터를 안전하게 보호
  • 동시에 여러 사용자가 데이터베이스를 접근하는 것을 제어
  • 데이터베이스 언어라고 부르는 특별한 프로그래밍 언어를 한 개 이상 제공
  • SQL은 여러 DBMS에서 제공되는 사실상의 표준 데이터베이스 언어

DBMS 발전 과정

 

1.계층 DBMS 구조

 

특징

  • 1960년대 후반에 최초의 계층 DBMS가 등장
  • 트리 구조를 기반으로 하는 계층 데이터 모델을 사용한 DBMS
  • 계층 데이터 모델은 네트워크 데이터 모델의 특별한 사례

장점

  • 어떤 유형의 응용에 대해서는 빠른 속도와 높은 효율성을 제공
  • 단점데이터베이스가 생성될 때 각각의 관계를 명시적으로 정의해야 함.
  • 레코드들이 링크로 연결되어 있으므로 레코드 구조를 변경하기 어려움.
  • 어떻게 데이터를 접근하는가를 미리 응용 프로그램에 정의해야 함.

2.네트워크 DBMS 구조

 

특징

  • 레코드들이 노드로, 레코드들 사이의 관계가 간선으로 표현되는 그래프를 기반으로 하는 네트워크 데이터 모델을 사용
  • 네트워크 DBMS에서도 레코드들이 링크로 연결되어 있으므로 레코드 구조를 변경하기 어려움.

3.관계 DBMS (가장 많이 쓰임)

 

장점

  • 사용자는 자신이 원하는 것(what)만 명시하고, 데이터가 어디있는지, 어떻게 접근해야 하는지는 DBMS가 결정
  • 모델이 간단하여 이해하기 쉬움
  • 예 : MS SQL Server, Oracle, Sybase, DB2, MySQL

4.객체 지향 DBMS

 

특징

  • 객체 지향 프로그래밍 패러다임을 기반으로 하는 데이터 모델

장점

  • 데이터와 프로그램을 그룹화하고, 복잡한 객체들을 이해하기 쉬우며, 유지와 변경이 용이.
  • 예 : ONTOS, OpenODB, GemStone, ObjectStore, O2 등

DBMS 언어

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

  • 사용자는 데이터 정의어를 사용하여 데이터베이스 스키마를 정의
  • 데이터 정의어로 명시된 문장이 입력되면  DBMS는 사용자가 정의한 스키마에 대한 명세를 시스템 카탈로그 또는 데이터 사전에 저장.

<데이터 정의어의 기본적 기능>

데이터 모델에서 지원하는 데이터 구조를 생성 (예, SQL에서 CREATE TABLE)

데이터 구조의 변경 (예, SQL에서 ALTER TABLE)

데이터 구조의 삭제 (예, SQL에서 DROP TABLE)

데이터 접근을 위해 특정 애트리뷰트 위에 인덱스를 정의 (예, SQL에서 CREATE INDEX)

 

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

  • 사용자는 데이터 조작어를 사용하여 데이터베이스 내의 원하는 데이터를 검색하고, 수정하고, 삽입하고, 삭제
  • 절차적 언어(procedural language)와 비절차적 언어(non-procedural language)
  • 관계 DBMS에서 사용되는 SQL은 대표적인 비절차적 언어
  • 대부분의 데이터 조작어는 SUM, COUNT, AVG와 같은 내장 함수들을 갖고 있음.
  • 데이터 조작어는 단말기에서 대화식으로 입력되어 수행되거나 C, 코볼 등의 고급 프로그래밍 언어로 작성된 프로그램에 내포되어 사용됨.

<데이터 조작어의 기본적 기능>

데이터의 검색 (예, SQL에서 SELECT)  # 데이터의 수정 (예, SQL에서 UPDATE)

데이터의 삭제 (예, SQL에서 DELETE)

데이터의 삽입 (예, SQL에서 INSERT)

 

3) 데이터 제어어 (DCL : Data Control Language)

  • 사용자는 데이터 제어어를 사용하여 데이터베이스 트랜잭션을 명시하고 권한을 부여하거나 취소