MySQL 로 배우는 데이터베이스 개론과 실습 (- 박우창, 남송휘, 이현룡 지음) 교재의 Chapter 별 요약과 연습문제입니다.
연습문제 해답은 하단에 있습니다. 오답이 있다면 거리낌없이 지적해주세요!~ *^^*
CH01 데이터베이스 시스템 요약
데이터베이스
조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것,
데이터베이스의 개념
데이터에 대한 통합된 데이터, 저장된 데이터, 운영 데이터, 공용 데이터를 말함.
데이터베이스의 특징
실시간 접근성, 계속적인 변화, 동시 공유, 내용에 따른 참조 등.
데이터베이스 시스템의 구성
- 데이터베이스 관리 시스템(DBMS): 사용자와 데이터베이스를 연결시켜주는 데이터베이스를 관리하는 소프트웨어.
- 데이터 베이스(Database): 하드디스크(or SSD) 에 저장된 데이터를 모아둔 토대
- 데이터 모델(Data model): 데이터가 저장되는 기법 (논리적인 개념)
정보시스템의 발전
- 파일 시스템: DBMS 가 없는 시스템으로, 데이터는 파일 단위로 저장되며 파일을 다루는 서버가 있다.
- 데이터 중복, 일관성 결여, 독립성 유지 불가, 생산성이 떨어지는 단점이 있다.
- 데이터베이스 시스템: DBMS 을 도입하여 데이터를 통합 관리하는 시스템.
- DBMS 서버가 파일을 다루며 데이터의 일관성 유지, 복구, 동시 접근 제어 등의 기능을 수행.
- 데이터 저장 전에 설계(design) 과정을 거쳐서 데이터 중복을 줄이고 데이터를 표준화하여 무결성 유지.
- 웹 데이터베이스 시스템: 데이터베이스를 웹 브라우저에서 사용하도록 제공하는 시스템. 웹 서버와 JSP, PHP, 웹 데이터베이스 연동 언어들을 사용한다.
- 분산 데이터베이스 시스템: 여러 곳에 분산된 DBMS 서버를 연결하여 운영하는 시스템으로 대규모 응용 시스템에 사용된다.
DBMS 의 장점
- 데이터를 공유하여 중복 가능성을 최소화하고 이를 통해 데이터의 일관성을 유지한다.
- 데이터 구조가 변경되더라도 프로그램을 수정할 필요가 없어 데이터 독립성을 유지할 수 있다.
- 데이터 복구, 보안, 동시성 제어, 데이터 관리 기능.
- 데이터 무결성 유지, 데이터 표준 준수 용이
SQL(Structured Query Language)
데이터 베이스 시스템에 사용하는 전용 언어로 DDL(Data Definition Language), DML(Data Manipulation Language), DCL(Data Control Language) 로 구성된다.
- DDL: CREATE, ALTER, DROP 문과 같이 DBMS에 저장된 테이블의 구조를 정의한다.
- DML: SELECT, INSERT, DELETE, UPDATE 문과 같이 데이터를 검색, 삽입, 삭제, 수정하는 데 사용한다.
- DCL: GRANT, REVOKE 문과 같이 데이터의 사용 권한을 관리한다.
데이터베이스 관리자(DBA)
데이터 베이스 관리에 대한 모든 권한을 갖고 운영을 총괄하는 사람이다.
데이터 모델
데이터베이스 시스템에서 데이터를 저장하는 이론적인 방법에 관한 것으로 데이터베이스에 데이터가 어떻게 구조화되어 저장되는지를 결정한다.
3단계 데이터 베이스 구조(3-layer database architecture)
각 단계는 외부(서브) 스키마, 개념 스키마, 내부 스키마로 구성된다. Schema는 (그리스어에서 유래) 데이터베이스의 조작이나 구조를 의미한다.
▶ 외부(서브) 스키마: 일반 사용자나 응용 프로그래머가 접근하는 계층. 전체 데이터베이스 중에서 하나의 논리적인 부분을 의미. 뷰의 개념이다. 개념 스키마 중에서 사용자에게 필요한 부분 스키마를 의미한다.
▶ 개념 스키마: 전체 데이터베이스의 정의를 말하는 것으로 통합 조직별로 하나만 존재하며 DBA 가 관리. 저장장치에서 독립적으로 기술되며, 데이터와 관계, 제약 사항, 무결성에 대한 내용이 포함된다.
▶ 내부 스키마: 물리적 저장 장치에서 데이터베이스가 실제로 저장되는 방법의 표현이다. 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함된다.
DBMS 는 매핑(mapping) 을 통해 각 단계 간 대응 관계를 정의한다. 외부/개념 매핑, 개념/내부 매핑이 있다.
데이터 독립성
3-layer database architecture 에서 하위 단계의 내용을 추상화하여 상위 단계에 그 세부 사항을 숨김으로써 한 단계 내의 변경에 대해서 다른 단계와 상호 간섭이 없도록 지원한다.
- 논리적 데이터 독립성(logical data independence)
- 외부 단계와 개념 단계 사이의 독립성으로 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원한다.
- 물리적 데이터 독립성(physical data independence)
- 개념 단계와 내부 단계 사이의 독립성으로 저장 장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원한다.
CH01 데이터베이스 시스템 연습문제
1. 다음 각 용어의 의미를 설명하시오.
- 데이터베이스: 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 구조적으로 통합해 놓은 것. (데이터를 모아둔 토대)
- DBMS: 사용자와 데이터베이스를 연결시켜주는 소프트웨어
- 데이터 모델: 데이터가 저장되는 기법에 관한 내용. 논리적인 개념이다.
- 데이터베이스 시스템: 각 조직에서 사용하던 데이터를 모아서 통합하고 서로 공유하여 생기는 장점을 이용하는 시스템이다.
2. 데이터베이스의 개념 네 가지를 설명하시오.
- 통합된 데이터(Integrated data)
- 여러 곳에서 사용하던 데이터를 통합하여 데이터를 모아서 통합하고 공유할 목적으로 구축된다. 이 때 각자 사용하던 데이터의 중복을 최소화함으로써 중복 저장으로 인한 데이터의 불일치 현상을 없애는 것이 중요하다.
- 저장된 데이터(stored data)
- 문서로 보관된 데이터가 아니라 디스크, 테이프 같은 컴퓨터 저장장치에 저장된 데이터를 의미한다.
- 운영 데이터(operational data)
- 조직의 목적을 위해 사용되는 데이터를 의미한다. 업무를 위해 검색을 할 목적으로 저장된 데이터는 운영 데이터이지만, 조직의 목적과 관계없이 저장된 데이터나 단순 입출력 데이터처럼 임시로 저장된 데이터는 운영 데이터가 아니다.
- 공용 데이터(shared data)
- 한 사람 또는 한 업무를 위해 사용되는 데이터가 아닌 공동으로 사용되는 데이터를 의미한다. 데이터는 언제나 둘 이상의 프로그램 혹은 여러 사람이 동시에 사용할 수 있다.
3. 데이터베이스의 특징 네 가지를 설명하시오.
- 실시간 접근성(real time accessibility)
- 데이터베이스는 실시간으로 서비스된다. 실시간이란 사용자가 요청하는 순간에 실제 데이터를 서비스하는 것을 말한다.
- 계속적인 변화(continuos change)
- 데이터베이스에 저장된 내용은 어느 한 순간의 상태를 나타내지만, 데이터 값은 시간에 따라 항상 바뀐다. (insert, delete, update 등의 작업으로 바뀐 데이터 값을 저장한다.)
- 동시 공유(concurrent sharing)
- 데이터베이스는 서로 다른 업무 또는 여러 사용자에게 동시에 공유된다. concurrent는 데이터베이스에 접근하는 사용자 데이터 요청 프로그램이 동시에 여러 개 있다는 의미이다.
- 내용에 따른 참조(reference by content)
- 데이터베이스에 저장된 데이터는 데이터의 물리적인 위치가 아닌 데이터 값에 따라 참조된다. 사용자는 원하는 데이터를 얻기 위해 데이터 값을 사용하여 조건을 제시하고 데이터베이스는 이에 해당하는 데이터를 검색해준다.
4. 파일 시스템과 DBMS의 데이터 접근 방법의 차이를 설명하시오.
- 파일 시스템에서는 데이터를 응용 프로그램에 정의하고 파일 시스템에 저장한다. 응용 프로그램이 직접 파일에 접근한다.
- DBMS에서는 데이터를 DBMS가 정의하고 데이터베이스에 저장한다. 응용 프로그램이 DBMS에 데이터 파일 접근을 요청한다.
5. 파일 시스템과 DBMS의 장단점을 비교하여 설명하시오.
- 파일시스템
- CPU, 주기억장치 사용량이 적다.
- 데이터를 파일 단위로 저장하므로 중복 가능성이 높다.
- 데이터의 중복 저장으로 일관성이 결여된다.
- 데이터 정의와 프로그램의 독립성을 유지하기 어렵다.
- 데이터 관리의 용이성과 프로그램 개발의 생산성이 나쁘다.
- DBMS
- DBMS을 이용하여 데이터를 공유하므로 중복 가능성이 낮다.
- 중복 제거로 일관성을 확보할 수 있다.
- 데이터 정의와 프로그램의 독립성을 유지하기 쉽다.
- 데이터 복구, 보안, 동시성 제어, 데이터 관리 기능을 수행할 수 있으며, 프로그램 생산성이 좋다.
- 데이터 무결성을 유지할 수 있고 데이터 표준을 준수하기 쉽다.
- CPU, 주 기억장치 사용량이 많다.
6. 데이터 모델을 설명하고 종류를 나열하시오.
데이터 모델은 데이터베이스 시스템에서 데이터를 저장하는 이론적인 방법에 관한 것으로, 데이터베이스에 데이터가 어떻게 구조화되어 저장되는지를 결정한다. 데이터 모델을 구분하는 가장 큰 기준은 데이터들 간에 관계를 표현하는 방법이다.
- 계층 데이터 모델, 네트워크 데이터 모델 (포인터)
- 프로그래밍 언어의 포인터 타입을 이용하여 어떤 외부 스키마에서 포인터로 다른 외부 스키마와 관계를 만든다. 포인터를 사용하는 방법은 데이터를 직접 찾아갈 수 있어서 프로그램 속도는 빠르지만 포인터를 다루어야 해서 응용 프로그램 개발 속도면에서 느리다.
- 관계 데이터 모델 (속성 값)
- 어떤 외부 스키마 A의 속성을 다른 외부 스키마 B에 직접 저장하는 방법으로 데이터를 찾을 때는 A 테이블 내에 있는 B 속성 값을 이용하여 찾는다. 포인터를 사용하는 방법보다 조금 느리지만 개념이 쉽고 프로그램 개발이 빠르기 때문에 많은 데이터베이스 시스템에서 이 방법을 사용한다.
- 객체 데이터 모델 (객체 식별자)
- 어떤 외부 스키마 A를 객체 개념으로 보고 다른 외부 스키마 B의 고유 식별자인 oid(object id)을 A테이블에 저장하는 방법이다. 객체 지향 언어의 상속 캡슐화 등의 개념을 도입한다.
현재 데이터베이스 시스템은 관계 데이터 모델을 기본 개념으로 하고 객체 데이터 모델의 장점을 일부 수용한 객체-관계 데이터 모델로 발전하고 있다.
7. 다음 데이터베이스의 사용자들의 역할을 설명하시오.
- 일반 사용자(end user)
- 일반 사용자는 프로그래머가 개발한 프로그램을 이용하여 데이터베이스에 접근한다. 보통 특별한 지식 없이 데이터베이스에 접근하여 데이터를 검색, 삽입, 삭제, 수정 작업을 한다. (은행의 창구 같은 곳에서 데이터를 다루는 업무를 하는 사람)
- 응용 프로그래머
- 일반 사용자가 사용할 수 있는 프로그램을 만드는 사람이다. 응용 프로그래머는 자바, C, JSP 등의 프로그래밍 언어와 SQL 을 사용하여 일반 사용자를 위한 사용자 인터페이스와 데이터를 관리하는 응용 로직을 개발한다.
- SQL 사용자
- 응용 프로그램으로 구현되어 있지 않은 업무를 SQL 을 사용하여 처리한다. 주로 데이터 검색, 구조 변경, 통계 처리 등 데이터를 모니터링하는 업무를 하거나 보고서 형태를 만드는 업무를 한다. (SQL을 사용하여 보고서를 작성하는 통계 부서의 담당자)
- 데이터베이스 관리자: DBA(Database Administrator)
- 데이터베이스 관리자는 데이터베이스 운영 조직의 데이터베이스 시스템을 총괄하는 사람이다. 데이터 설계, 구현, 유지보수의 전 과정을 담당하고 데이터베이스 사용자 통제, 보안, 성능 모니터링, 데이터 전체 파악 및 관리, 이동 복사 등 제반 업무를 맡는다.
8. 데이터 독립성을 정의하고 데이터베이스 시스템에서 그 중요성을 설명하시오.
데이터 독립성은 하위 단계의 내용을 추상화하여 상위 단계에 숨김으로써 한 단계 내의 변경에 대해 다른 단계와 상호 간섭이 없도록 하는 것이다.
- 논리적 데이터 독립성(logical data independence)
- 외부 단계와 개념 단계의 독립성으로 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원한다. 논리적 구조가 변경되어도 응용 프로그램에는 영향이 없도록 하는 개념이다.
- 물리적 데이터 독립성(physical data independence)
- 개념 단계와 내부 단계 사이의 독립성으로, 저장장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원한다. 물리적 독립성은 논리적 독립성보다 구현하기 쉽다.
데이터 독립성을 확보함으로써 일반 사용자는 사용자별로 외부 스키마가 있을 때 DBA는 일반 사용자의 외부 스키마에 영향을 주지 않고 개념 스키마나 내부 스키마의 물리적인 저장 방법을 바꿀 수 있다.
9. ANSI의 3단계 데이터베이스 구조에 대해 설명하시오.
아래처럼 외부 단계, 개념 단계, 내부 단계로 나누어진다. shema 는 조직이나 구조를 의미한다. (+ 대학교 데이터베이스 예시)
- 외부 단계
- 일반 사용자나 응용 프로그래머가 접근하는 계층으로 전체 데이터베이스 중 하나의 논리적인 부분을 의미한다. 여러 외부 스키마가 있을 수 있다.
- 학생처의 학생정보, 수강 정보 등은 전체 데이터베이스의 일부분으로 각 부서의 사용자들에게만 필요한 각각의 스키마이다.
- 개념 단계
- 전체 데이터베이스의 정의를 의미한다. 통합 조직별로 하나만 존재하며 DBA가 관리한다. 즉, 하나의 데이터베이스에는 하나의 개념 스키마(conceptual schema)가 있다. 개념 스키마에는 저장장치에 독립적으로 기술되며 데이터와 관계, 제약사항과 무결성에 대한 내용이 포함된다.
- 학생 정보, 수강 정보 등이 모두 모인 대학 전체 데이터베이스가 개념 스키마이다.
- 내부 단계
- 물리적 저장장치에서 데이터베이스가 실제로 저장되는 방법에 대한 구체적인 내용을 표현한다. 내부 스키마는 하나이며 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함된다.
- 대학 전체 데이터베이스가 실제 하드디스크에 저장되는 물리적인 구조가 내부 스키마이다.
ANSI 에서는 데이터베이스를 개념적으로 이해하기 위해 데이터베이스 구조에 관한 안을 만들었다. 이 안은 데이터베이스를 보는 관점(view)을 세 개의 단계로 분리한 것으로 3-layer database architecture 라고 부르며 이는 데이터베이스의 복잡한 구조를 단순화하여 표현한다.
10. 다음 데이터베이스 시스템의 구성도를 보고 빈 곳에 알맞은 용어를 써넣으시오..
'데이터베이스' 카테고리의 다른 글
MySQL로 배우는 데이터베이스 개론과 실습 Ch03 데이터베이스 프로그래머 요약 (0) | 2023.08.20 |
---|---|
[M1 Mac] docker 에 mysql, 로컬에 MariaDB MySQLWorkbench, DBeaver 연결하기 (0) | 2023.08.19 |
MySQL로 배우는 데이터베이스 개론과 실습 Ch02 관계 데이터 모델 요약, 연습문제 (1) | 2023.08.18 |