데이터베이스

[데이터베이스_midterm] Chapter 01 데이터베이스 시스템

bebeghi3356 2025. 4. 17. 19:43

01 데이터베이스와 데이터베이스 시스템

데이터베이스 : 데이터들의 집합

    - 데이터 : 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값 (ex. 에베레스트의 높이 8,848 m)
    - 정보 : 데이터에 의미를 부여한 것 (ex. 에베레스트는 세계에서 가장 높은 산이다)

    - 지식 : 사물이나 현상에 대한 이해 (ex. 에베레스트산에 대해서 작성된 보고서)

 

DBMS : 데이터베이스를 정의하고 질의어를 할 수 있게 하고 동시에 여러 사용자가 DB를 접근하는 것을 제어하는 소프트웨어

 

데이터베이스 시스템의 작업

- 검색 작업 => Select 문

- 변경 작업 ~> 삽입, 삭제, 수정 => insert문, delete문, update문

 

데이터베이스의 4가지 개념       

  • 통합된 데이터 integrated data : 데이터 중복 최소화 이유(데이터 불일치 현상을 막기 위해, 저장공간 낭비 방지) , 중복을 최소화 ( 중복이 아예없는 데베는 없다)
  • 저장된 데이터 stored data : 문서로 X , 컴퓨터 저장 장치(디스크, 테이프)에 저장된 데이터
  • 운영 데이터 operational data : 조직의 목적을 위해 사용되는 데이터 <-> 임시데이터 temporary data : 조직의 목적과 관계X, 단순 입출력 데이터
  • 공용 데이터 shared data : 둘 이상의 프로그램 또는 여러 사람이 동시에 사용할 수 있다

데이터베이스의 4가지 특징

  • 실시간 접근성 real time accessibility : 사용자가 데이터를 요청하면 실시간으로 실제 데이터를 서비스한다
  • 계속적인 변화 continuous change : 시간에 따라 삽입, 삭제, 수정등의 작업으로 바뀐 데이터 값을 저장
  • 동시 공유 concurrent sharing : 동시(또는 병행)라고 하며 데베에 동시접근을 요청하는 사용자 프로그램이 여러개 있음
  • 내용에 따른 참조 reference by content: 데베에서 참조는 사용자가 원하는 데이터 값에 따라 결정됨

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

{데이터베이스 시스템}

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

2. 데이터베이스 : 데이터를 모아둔 토대

3. 데이터 모델 : 데이터가 저장되는 기법에 관한 내용 -> DB서버를통해 데이터베이스 사용자와 연결시킨다

 

02 데이터베이스 시스템의 발전

<데이터베이스 변화형태>

수작업

⬇️

컴퓨터 이용 시작(전산화)

데이터파일 만들어 파일시스템 도입

⬇️

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

⬇️

웹 DB 시스템

⬇️

분산 DB 시스템

(인터넷 쇼핑몰)

 

컴퓨터 저장 방법 발전 순서 : 파일 시스템 -> DBMS

 

1. 파일 시스템

데이터를 파일 단위로 파일 서버에 저장한다 -> '데이터 파일'

단점 1) 데이터 중복성 : 데이터일관성 유지하기 어려움

       2) 데이터 종속성 : 데이터 파일 구조가 바뀌면 그걸 활용했던 응용프로그램도 바뀌게 된다

 

2. DBMS

클라이언트-서버 시스템, DBMS 서버가 데이터 파일을 관리

-> 데이터 일관성 유지, 복구, 동시 접근 제어 기능 수행

-> DBMS는 데이터를 저장하기 전에 '설계과정'을 거쳐 데이터 중복 줄이고 데이터 표준화하며 무결성을 유지함

 

03 파일시스템과 DBMS 

컴퓨터에 데이터를 저장하는 방법 

방법 1. 데이터를 프로그램 내부에 저장하는 방법 : 하드코딩(데이터를 프로그램 소스코드에 저장)

~> 데이터 변경 작업시에 문제가 발생, 매번 컴파일 할때마다 검색 서비스 중단

 

방법 2. 파일 시스템 사용 : 데이터파일 여는 확장자 'fopen'

~> "방법 1"과 프로그램 코드는 같으나 새로운 데이터가 추가되어도 프로그램을 수정할 필요가 없다. 그러나 데이터 구조를 정의할때마다 프로그램을 수정하여 다시 컴파일(검색 서비스 일시 중단)하는 문제발생, 같은 파일을 두 개의 프로그램이 공유하게 되어 문제가 발생

 

방법 3. DBMS 사용 : 데이터 정의와 데이터 값을 DBMS가 관리(데이터중복성 해결), 데이터 구조가 바뀌어도 다시 컴파일하지 않아도 됨(데이터 독립성)  ~> EXEC SQL 명령어 : DBMS에 데이터 호출

데이터 종속성 <-> 데이터 독립성

 

마당서점 데이터의 저장 방법 비교

 

파일시스템과 DBMS의 비교

구분 파일 시스템 DBMS
데이터정의 응용 프로그램 DBMS
데이터 저장 파일 시스템 데이터베이스
데이터 접근 방법 응용 프로그램이 파일에 직접 접근 응용프로그램이 DBMS에 파일 접근을 요청
사용 언어 자바, C++, C등 자바, C++, C 등과 SQL
CPU/주기억장치 사용 적음 많음

 

- 데이터 접근 방법에서 파일 시스템은 응용 프로그램이 파일에 직접 접근하나, DBMS를 이용하게 되면 으용 프로그램이 데이터 파일 구조를 알고 있기 때문에 파일 접근을 dbms에 요청한다.
- DBMS에서 sql 을 주로 언어로 사용한다. //사용자가 파일 접근을 요청할 때 사용하는 언어는 sql이다.
- dbms 를 사용할 때 cpu/주기억장치 소스를 많이 잡아먹는다.

 

 

파일시스템 구조
DBMS 구조

 

 

 

DBMS의 장점

장점 설명
이터 중복 최소화 DBMS를 이용하여 데이터를 공유하기 때문에 중복 가능성 낮음
데이터 일관성 유지 중복 제거로 데이터의 일관성이 유지됨
데이터 독립성 유지 데이터 정의와 프로그램의 독립성 유지 가능 => 데이터 종속성 해결
관리 기능 제공 데이터 복구, 보안, 동시성 제어, 데이터 관리 기능 등을 수행
프로그램 개발 생산성 향상 짧은 시간에 큰 프로그램을 개발할 수 있음
기타 데이터 무결성 유지, 데이터 표준 준수 용이

 

단점 ) 구입비용, 추가유지비용이 듦 & 데이터 소스가 굉장히 많다

 

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

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

데이터베이스 언어 ~> 'SQL'

세가지 서브 랭귀지

1. DDL(정의어) : 테이블 구조인 스키마를 다루는 언어 >> Create, Drop, Alter문 
2. DML(조작어) : 테이블에서 데이터 다루는 언어 >> 데이터베이스의 4가지 문(Select , Insert, Delete, Update)을 다룸(주로 select문)
3. DCL(제어어) : Grant문, Revoke문

 

sql문은 맨 마지막에 세미콜론 붙임, 대소문자 구별 X
sql구문을 수행하면 temperer(임시테이블)을 생성한다.

Q )대한미디어에서 출판한 도서이름. 가격 테이블을 생성해라.



A )
SELECT bookname, price
FROM Book

WHERE publisher = "대한미디어" ;

> 질의문(Query, 데이터 검색 조작어)은 SELECT-FROM-WHERE 구조로 되어있다

 

 

 

데이터베이스 사용자별로 갖추어야 할 지식 수준

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

 

DBMS

DBMS의 기능(SQL문) ~> 시험문제출제

기능 설명
데이터 정의(DDL) 데이터의 구조를 정의하고 데이터 구조에 대한 삭제 및 변경 기능
데이터 조작(DML) 데이터를 조작하는 소프트웨어가 요청하는 데이터의 검색, 삽입, 수정, 삭제 작업 지원
데이터 추출(DML) 사용자가 조회하는 데이터 혹은 응용 프로그램의 데이터를 추출
데이터 제어(DCL) 데이터베이스 사용자를 생성하고 모니터링하며 접근을 제어/ 백업과 회복, 동시성 제어 등의 기능을 지원

 

- 데이터모델 (컴퓨터에 데이터형식을 어떻게 저장할 것인지에 대한 모델)
1. 계층 데이터 모델(hierarchical data model)
2. 네트워크 데이터 모델(network data
3. 객체 데이터 모델(object data model, 객체지향 데이터 모델 )
4. 관계 데이터 모델(rerational data model) -> RDB는 가장 많이 사용됨, 모든 데이터를 테이블로 나타
5. 객체-관계 데이터 모델(object-relational data model) -> 관계와 객체 데이터 모델의 장점을 결합함

 

데이터 모델을 구분하는 가장 큰 기준은 데이터들 간에 관계를 표현하는 방법이다.

관계를 표현하는 방법

1) 포인터를 사용해서 계층데이터모델과 네트워크 데이터 모델을 연결한다.
2) 속성값을 사용해서 관계 데이터모델을 나타냄 -> Foreign Key(외래키, 학생테이블과 강좌테이블간의 외래키를 강좌번호로 설정하여 학생 테이블에 만든다)
3) 객체식별자 사용 : 객체 데이터 모델 -> objectedid(oid)로 식별함

 

계층데이터모델 > 트리 / 네트워크 데이터 모델 > 그래프(사이클허용)

 

- 3단계 데이터베이스 구조

ANSI의 3단계 데이터베이스 구조 ( 외부스키마들은 응용프로그램을 통해 사용자에게 데이터를 전달한다)

@ dbms는 왜 데이트베이스를 3단계로 나누는 것인가 ? => 데이터 독립성을 보장하기 위해
그림 1-16 
> 외부 스키마 external : 전체 데이터 스키마에서 필요한 특정 사용자나 프로그램에서 가져오는 스키마이다. 전체 데이터베이스 중에서 하나의 논리적인 부분을 의미, 여러 개의 외부 스키마가 있을 수도 있다. 서브 스키마라고도 하며, view(뷰)의 개념임(사용자 관점) ,DBMS에서 응용프로그램은 외부 스키마의 구조에 기반한다.
>> 개념 스키마 conceptual : 전체 데이터베이스의 정의를 의미, 통합 조직별로 하나만 존재하며 DBA가 관리함
>>> 내부 스키마 internal : 물리적 저장 장치(보조기억장치, 하드디스크)가 실제로 저장되는 방법의 표현, 내부 스키마도 하나만 존재한다.
                                                       ~> 개념스키마와 내부스키마는 1대1 맵핑관계이다 
                                                       ~> 개념스키마와 외부스키마는 1대 N 맵핑관계이다
- 맵핑 정보는 dbms에서 관리함

 

- 3단계 데이터베이스 구조에서 개념스키마에서 외부스키마가 여러개로 나뉘어져 있다 => 일대다 맵핑관계

 

 

 

수강신청 데이터베이스의 개념 스키마

 

<업무 처리 규정>

▷ 학적과에는 각 과목을 강의하는 강사, 등록한 학생, 강의가 이루어지는 시간(여러개의 값) 및 장소 등의 데이터가 유지된다.
▷ 한 강사가 여러 개의 과목을 강의할 수 있으며, 각 과목과 학생 간에는 학점이 부여된다.
▷ 과목에 대해서는 과목번호, 과목명 등의 정보가 유지되어야 한다.
▷ 강사에 대해서는 강사번호, 이름, 나이, 성별 등의 정보가 유지되어야 한다.
▷ 학생에 대해서는 학번, 이름, 주소 등의 정보가 유지되어야 한다.

 

◆ 문제 풀이

 

먼저 문제 속에서 개념을 추출해보면 강사, 과목, 학생 크게 세가지가 보인다. 

또한 강의가 이루어지는 시간이 여러 타임이 있고, 과목을 수강한 학생들은 학점을 부여받는다.

 

세가지 엔티티 간의 관계에 대해 정리를 해보자.

강사 - 과목 => 1 : M
과목 - 학생  => M : N

 

이외에 강의시간을 추가해야하며, M : N의 관계에 Mapping 엔티티를 만들어줘야 한다.

과목  -강의 시간 => 1 : M
학생 - 수강하는 과목 => 1 : M

 

이제 만들어야 하는 엔티티는 총 5가지이다.

강사, 과목, 수강과목, 학생, 강의정보(강의시간 포함)

 

엔티티의 각 속성을 기반으로 관계와 선택성(옵션)를 판단하여 ERD를 작성한다.

 

참고로, 식별자가 같은 엔티티가 있으면 안된다. 

왜? 정보를 구분할 수 있는 키가 없기 때문에 항상 엔티티의 식별자를 확인하자!

 

ER다이어그램으로 나타낸 수강신청 데이터베이스의 구조

나머지는 교재 p. 56~58참고

 

데이터 독립성(DBMS 제공)

1. 논리적 데이터 독립성 : 외부 단계와 개념 단계 사이의 독립성으로 개념스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원한다. 논리적 구조가 변경되어도(=개념 스키마가 변경되어도) 응용 프로그램에는 영향이 없도록 하는 개념이다.

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

2. 물리적 데이터 독립성 : 개념 단계와 내부 단계 사이의 독립성으로, 저장 장치 구조 변경과 같이 내부 스키마가 변경되어도 개념스키마에 영향을 미치지 않도록 지원한다(ex. 하드디스크 정리). 

예를 들어 성능 개선을 위하여 물리적 저장 장치를 재구성할 경우 개념 스키마나 응용 프로그램 같은 외부 스키마에 영향이 없다. 물리적 독립성은 논리적 독립성보다 구현이 쉽다.

 

 

연습문제  추가개념
~> 시스템 카탈로그[System Catalog, 또는 데이터 사전]

✅ 개념

  • 시스템 카탈로그 DBMS가 메타데이터를 관리하는 시스템 데이터베이스이다.
  • 메타데이터란 데이터를 설명하는 데이터를 의미하며, 예: 해시태그, 테이블 구조, 속성 정보 등.

✅ 주요 특징

  • 데이터베이스에 포함된 모든 데이터 객체(테이블, 뷰, 인덱스 등)의 정의나 명세를 포함한다.
  • DBMS가 스스로 생성하고 유지하는 특별한 테이블들의 집합으로 구성되어 있으며, 이를 시스템 테이블이라고 한다.
  • 시스템 카탈로그에 저장된 정보는 일반적으로 메타데이터라고 부른다.

✅ 갱신 방식

  • 시스템 카탈로그는 DBMS에 의해 자동으로 갱신된다.
  • 사용자가 직접 SQL로 갱신해서는 안 되며, 그렇게 할 경우 무결성이나 일관성에 문제가 발생할 수 있다.
  • 예를 들어, 데이터베이스 구조가 변경될 때(DB 객체 생성/삭제/수정 등), DBMS가 자동으로 카탈로그 내용을 수정한다.