포스트

[DB] 데이터베이스 시스템 구성

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

  • 데이터베이스 + DBMS + 데이터 모델
  • 데이터베이스 언어 + 데이터베이스 사용자

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

2. 데이터베이스 언어

  • SQL(Structured Query Language) 사용

SQL은 다음으로 구성된다.

  • 데이터 정의어(DDL, Data Definition Language)
    • CREATE, ALTER, DROP
  • 데이터 조작어(DML, Data Manipulation Language)
    • SELECT, INSERT, DELETE, UPDATE
  • 데이터 제어어(DCL, Data Control Language)
    • GRANT, REVOKE

SQL의 핵심은 데이터를 검색하는 질의문(Query)이다.

  • 형식: SELECT - FROM - WHERE



질의 1-1 다음 Book 테이블에서 모든 도서이름(bookname)과 출판사(publisher)를 검색하시오.

  • Book 테이블
bookidbooknamepublisherprice
1축구의 역사굿스포츠7000
2축구아는 여자나무수13000
3축구의 이해대한미디어22000
4골프 바이블대한미디어35000
5피겨 교본굿스포츠8000


정답

1
2
SELECT  bookname, publisher
FROM    Book;


질의 결과

booknamepublisher
축구의 역사굿스포츠
축구아는 여자나무수
축구의 이해대한미디어
골프 바이블대한미디어
피겨 교본굿스포츠



질의 1-2 가격(price)이 10,000원 이상인 도서이름(bookname)과 출판사(publisher)를 검색하시오.


정답

1
2
3
SELECT  bookname, publisher
FROM    Book
WHERE   price >= 10000;


질의 결과

booknamepublisher
축구아는 여자나무수
축구의 이해대한미디어
골프 바이블대한미디어

3. 데이터베이스 사용자

3.1. 일반사용자

  • 은행의 창구/관공서의 민원 접수처 등에서 데이터 다루는 업무를 하는 사람
  • 프로그래머가 개발한 프로그램을 이용해 데이터베이스에 접근하는 일반인

3.2. 응용프로그래머

  • 일반 사용자가 사용할 수 있도록 프로그램 만드는 사람
  • 프로그래밍언어와 SQL 사용해 일반 사용자 위한 인터페이스/데이터 관리하는 응용 로직 개발

3.3. SQL 사용자

  • SQL 사용해 업무 처리하는 IT부서 담당자
  • 응용프로그램으로 구현되지 않은 업무를 SQL 사용하여 처리하는 사람

3.4. 데이터베이스 관리자(DBA, Database Administrator)

  • 데이터베이스 운영 조직의 데이터베이스 시스템 총괄자
  • 데이터 설계, 구현, 유지보수의 전 과정 담당
  • 데이터베이스 사용자 통제, 보안, 성능 모니터링, 데이터 전체 파악 및 관리, 데이터 이동 및 복사 등 제반 업무 수행

3.5. DB사용자 별 갖춰야 할 지식 수준

  • X: 없음, ○: 보통, ◎: 높음
 SQL 언어프로그래밍 능력DBMS 지식데이터 구성
일반 사용자xxxx
SQL 사용자
응용 프로그래머
데이터베이스 관리자

4. DBMS의 기능

  • 사용자 ↔ DB 연결하는 소프트웨어
  • DB 사용자가 DB를 생성, 공유, 관리하게끔 지원하는 총체적 역할
DBMS 기능설명
데이터 정의
(Definition)
데이터 구조 정의, 데이터 구조에 대한 삭제/변경 기능 수행
데이터 조작
(manipulation)
데이터 조작 SW가 요청하는 데이터의 삽입/수정/삭제 작업 지원
데이터 추출
(Retrieval)
사용자 조회 데이터/응용프로그램의 데이터 추출
데이터 제어
(Control)
DB사용자 생성/모니터링으로 접근 제어
백업/회복/동시성 제어 등 기능 지원

5. 데이터 모델

5.1. 데이터 모델의 종류

  • 계층 데이터 모델(hierarchical data model)
  • 네트워크(network) 데이터 모델
  • 객체(object) 데이터 모델
  • 관계(relational) 데이터 모델
    • 가장 많이 쓰이는 데이터 모델임
  • 객체-관계 데이터 모델
    • 객체 데이터 모델과 관계 데이터 모델의 장점을 융합한 모델

5.2. 포인터 사용

  • 계층 데이터 모델
  • 네트워크 데이터 모델

5.2. 포인터 사용

5.3. 속성 값 사용

  • 관계 데이터 모델

5.3. 속성 값 사용

5.4. 객체식별자 사용

  • 객체 데이터 모델

5.4. 객체식별자 사용

5.5. 데이터 모델 별 관계 표현방법 요약

5.5. 데이터 모델 별 관계 표현방법 요약 데이터 모델과 각 모델에서 관계 표현 방법

데이터 모델
(제품 종류)
1960년대1970년대1980년대1990년대2000년대2010년대
계층 데이터 모델
IMS(IBM)
   
네트워크 데이터 모델
IDS(GE)
   
관계 데이터 모델
Oracle, System R(IBM)
  
객체 데이터 모델
GemStone, ObjectStore
    
객체-관계 데이터 모델
UniSQL
    
  • 위 표는 해당 데이터 모델이 주로 사용하던 시기를 표시한 것임

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

6.1. 3단계 데이터베이스 구조

6.1. 3단계 데이터베이스 구조 ANSI의 3단계 데이터베이스 구조

6.2. 외부 단계

  • 일반 사용자/응용 프로그래머가 접근하는 계층
  • 전체 DB중에서 하나의 논리적인 부분을 의미
  • 여러 개의 외부 스키마(external schema)가 있을 수 있음
  • 서브 스키마(sub schema)라고도 함
  • 뷰(view)의 개념임

6.3. 개념 단계

  • 전체 DB 정의를 의미
  • 통합 조직별로 하나만 존재
  • DBA가 관리
  • 하나의 DB하나의 개념 스키마(conceptual schema)가 있음

6.4. 내부 스키마

  • 물리적 저장 장치에 데이터베이스가 실제로 저장되는 방법의 표현
  • 내부 스키마(internal schema)는 하나
  • 인덱스, 데이터 레코드 배치법, 데이터 압축 등에 관한 내용 포함됨

6.5. 외부/개념 매핑(사상)

  • 사용자의 외부 스키마 개념 스키마 간의 매핑(사상)
  • 외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응시킴

6.6. 개념/내부 매핑

  • 개념 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응시킴

7. DB 구조 예시: 수강신청 DB 구조

7.1. 수강신청 DB의 개념 스키마

7.1. 수강신청 DB의 개념 스키마 수강신청 DB의 개념 스키마

7.2. 수강등록 담당 부서에서 필요한 DB(외부스키마1)

7.2. 수강등록 담당 부서에서 필요한 DB 수강등록 담당 부서에서 필요한 DB

7.3. 시간표 담당 부서에서 필요한 DB(외부스키마2)

7.3. 시간표 담당 부서에서 필요한 DB 시간표 담당 부서에서 필요한 DB

7.4. 수강신청 DB의 내부 스키마

7.4. 수강신청 DB의 내부 스키마 수강신청 DB의 내부 스키마

7.5. 수강신청 DB의 3단계 구조

7.5. 수강신청 DB의 3단계 구조 수강신청 DB의 3단계 구조

8. 데이터 독립성

8.1. 논리적 데이터 독립성(logical data independence)

  • 외부 단계(외부 스키마)와 개념 단계(개념 스키마) 사이의 독립성
  • 개념 스키마 변경되어도 외부 스키마에는 영향 미치지 않도록 지원
  • 논리적 구조 변경되어도 응용 프로그램에는 영향 없도록 하는 개념
  • 개념 스키마의 테이블 생성하거나 변경하여도 외부 스키마가 직접 다루는 테이블 아니면 영향이 없음

8.2. 물리적 데이터 독립성(physical data independence)

  • 개념 단계(개념 스키마)와 내부 단계(내부 스키마) 사이의 독립성
  • 저장장치 구조 변경과 같이 내부 스키마 변경되어도 개념 스키마에 영향 미치지 않도록 지원
  • 성능 개선 위하여 물리적 저장 장치를 재구성할 경우, 개념 스키마 or 응용프로그램 같은 외부 스키마에 영향이 없음
  • 물리적 독립성은 논리적 독립성보다 구현이 쉬움

데이터 독립성이란 사용자에게 영향이 없도록 해야하는 것이 핵심이다.

이 포스팅은 작성자의 CC BY-NC 4.0 라이선스를 준수합니다.