본문 바로가기
CS 지식/데이터베이스

[데이터베이스] DB, DBMS의 소개

by 코딩하는 동현 2025. 3. 7.

DB란

DB = 집합

DBMS = SW

redundancy = 중복성

중복된 데이터들이 생길수 있고 그로 인해 효율성이 떨어질수 있다 -> DBMS가 중복성을 관리한다.

 

DB 내부 동작

  1. 사용자가 쿼리 요청
  2. query parser가 알맞는 함수 호출
  3. storage manager가 알맞게 데이터 조작
  4. 디스크 스토리지에 실제로 write, read된다

 

애플이케이션으로 많은 데이터의 변화를 관리하기 힘들다.

그러므로 파일시스템으로 파일에 저장하는것 보단 DB 시스템에 저장하는걸로 해결한다.


DB 시스템이 필요한 이유

DBMS없이 파일 시스템으로 데이터를 관리한다면??

  1. Data redundancy and inconsistency: 중복된 데이터(중복성), 한쪽이 변경됐는데 중복된 부분은 변경이 안됨(일관성)
  2. Difficulty in accessing data: 예를들면 처음에는 텍스트 밖에 없을거라고 작성했다가, 이미지등 다양한 데이터를 관리하기 시작한다. 새로운 포맷 나올때마다 그에 맞게 프로그램을 작성해야된다.
  3. Data isolation: 예를 들어 그림과 그림에 대한 설명처럼 처리의 효율성을 위해서 두 데이터를 분리했을때, 두 짝이 동시에 바뀌는등 추가적인 처리가 필요한데, 그것을 코드로 작성하는게 번거롭다.
  4. Integrity problems: 예를 들어 월급이 0원보다 낮는경우처럼 그런 실수에 대한 예외 처리 로직을 대신 수행해준다.
  5. Atomicity problems: DB수행은 원자적이어야된다 즉, 수행되는 도중에 결과를 유저한테 보여주면 안된다. 아래 그림처럼 중간에 일관적이지 않은 상태를 보여주는 문제가 생긴다.
  6. Concurrent-access anomalies: DBMS는 mutual exclusion(lock)을 보장해준다. 아래 그림처럼 두 연산이 동시에 각자 read해서(1000을 읽는다)해서 중간단계에 답을 구하고 덮어씌우는 동시성 문제가 생긴다.
  7. Security problems: DBMS는 모든 유저가 정해진 정보만 볼수 있도록 적절하게 권한 준다. 만약 파일 시스템이면 파일마다 그룹과 유저에 대해 복잡하게 권한 설정을 해야된다.

Data redundancy and inconsistency의 예

 

원자성 문제의 예
동시성 변칙의 예

 


모델의 뜻

모델은 개념적인 것, 간단하게 표현만 한것이다.

큰 가격 없이 간단하게 시뮬레이션 하거나 일반인들도 간단히 이해하기 쉽게 한다.

 

데이터 모델의 종류

  • Data relationships (관계)
  • Data semantics (제한 조건)
  • Consistency constraints (일관성 제약 조건)

 

데이터 추상화

데이터베이스를 사용하는 건 비전공자들에게도 이해할만한 추상적인 뷰를 보여주는게 목적이다.

어떻게 물리적으로 저장되는 등의 디테일들을 가리고 논리적인 뷰만 고려한다.

 

데이터베이스는 효율성을 위해서 복잡한 자료구조로 저장이 돼있는데, DBMS 사용자들은 대부분 비전공자들이다.

 

DBMS 계층

  • 뷰: 각 사용자는 자신만의 뷰를 볼 수가 있고 권한에 허락된 데이터만 선별해서 보여준다.
  • 논리적인 레벨: DB테이블등(권한X)
  • 물리적인레벨: HDD, 플레시메모리에 어떻게 저장돼있는지

스키마(형태)

스키마는 프로그래밍 언어의 type, variable과 비슷하다

  • Logical Schema: 데이터 베이스가 어떻게 구성돼있는지 보여준다.
  • Physical schema: 실제로 어떻게 물리적으로 저장돼있는가

 

물리적 데이타 독립성: 앱은 논리적 스키마랑 연결돼있으므로 물리적 스키마가 어떻게 달라지든 문제가 없다.

 

인스턴스

특정 시간의 실제 DB의 relation(테이블) 값을 말한다.

Physical data independence 논리적 스키마를 변경 없이 물리적 스키마를 자유롭게 변경할 수 있다.

 

 

A relation(테이블)

  • attributes
  • tuples(rows)
  • Attribute Types:  각 정해진 값(타입, 0~5등)을 가질수 있고, 이것을 domain이라고 부른다.
  • Attribute values: 일반적으론 원자적이다 domain에는 기본적으로 null이 포함돼있다.

 

R = (A1, A2, …, An ) -> 스키마

예시) instructor 스키마 = (ID, name, dept_name, salary)

r(R) : 스키마 R의 인스턴스 r

 

DB는 대게로 자동 정렬 안한다.

DB는 효율적인 구조로 만들기 위해서 여러 relations로 구성된다.

하나의 relation에 때려박으면 공간낭비 같은 데이터의 반복과, null 값으로 채우기 때문이다.

 


Key : attributes를 조합해서 만들수 있는 집합

  • superkey: 고유키 조건을 만족할때
  • candidate key: superkey 중에서 제일 작은 단위로 구성된 후보키.
  • primary key: candidate key중에 하나(유저가 임의로 설정)
  • Foreign key: 반드시 다른 relation(테이블)에도 존재해야된다.

대학 DB의 스키마 다이어그램 예시

반응형

댓글