[DB DB basics

G·2023년 3월 2일
1

DB

목록 보기
1/11

Database란 다양한 기준으로 체계화하여 관리하는 데이터의 집합이다. 이런식의 표현은 이해하기 쉽지 않다.
데이터베이스와 파일은 어떤 차이가 있을까? 둘 다 디스크에 저장되며 데이터를 저장하고 있지만 차이점이 존재한다.
좀 더 세세하게 둘의 차이를 비교하며 데이터베이스를 이해해보자.

데이터베이스를 관리하는 소프트웨어인 DBMSs가 있다. 이 소프트웨어는 데이터를 저장, 관리, 접근을 가능하게 한다.

Disadvantage of File systems when it comes to DB

Data redundancy and inconsistency

어떤 수업 출석부와 과 학생에 대한 정보를 파일에 저장하여 관리한다 생각해보자.
두 파일에 중복된 정보가 저장될 수 있다. 만약 학생 정보를 수정하려면 두 번 수정을 해야한다.
비일관성은 모두 수정하지 않았을 때 학생의 정보가 다름을 의미한다.

Difficulty in accessing data

출석부에서 특정 학과 학생들만 보기 위해서 이를 수행하기 위한 또 다른 프로그램을 만들어야 한다.

Data isolation and separation - multiple files and formats

어떠한 학생이 무슨 수업을 듣는지를 알고 싶을 때, 모든 출석부 파일을 탐색해야 한다.

Integrity problems

파일에서 선수 과목을 요구하는 과목을 수강할 때, 이를 파일로 구현하기 어렵다.
구현을 한다 해도 유지보수하기 굉장히 까다로울 것이다.

Atomicity of updates

Atomic하다란 더 이상 쪼갤 수 없다는 뜻이다. 즉 특정 일을 수행할 때 무조건 일어나거나 일어나지 말아야한다.(all or nothing)
예를 들어, 송금 처리 과정이 더하기, 빼기 연산으로 이루어졌을 때, 두 연산 중 하나만 일어나면 절대 안되기 때문에, 두 연산이 모두 무조건 발생해야한다.

Concurrent access by multiple users

동시에 두명 이상의 유저가 동시에 인출을 했을 때, 파일에 저장된 잔액이 update가 되지 않고 중복하여 인출을 해줄 수 있다. 이러한 문제를 유발할 수 있다.

Security problems

파일마다 사용자마다 권한을 부여하는 것이 굉장히 힘들다.

Database abstractions

위의 파일을 데이터베이스로 사용했을 때의 문제점을 알아보았다. 이를 타개할 데이터베이스의 추상화를 알아보자.

  • Physical level: 물리적으로 어떻게 정보가 저장되는 지를 따진다.
  • Logical level: data의 type을 지정한다.(이름, 전화번호, 성별 등을 지정)
  • View level: 어플리케이션에서 DB에 저장된 정보를 어떻게 보여지게 할 것인지를 따진다.
  • Schema: data를 어떻게 표현하느냐를 따진다. 이는 Physical schema와 Logical schema로 나뉘는데, 두개 모두 위에서 본 level과 같다. Physical schema는 데이터의 타입, 크기 등을 따진다. 게다가 table space, 즉 "1 파일, 1 테이블 or 1 파일, 2개 이상 테이블"과 같은 디자인을 정할 수 있다.
    Logical schema는 level과 동일하다.
  • Instance: 스키마 안의 실제 내용들을 의미한다.
  • Physical Data Independence: Physical schema를 logical schema와 독립적으로 수정할 수 있는 것을 의미한다. application과 이의 view는 logical schema에 영향을 받는다는 뜻이다.

Data model

Data model은 data를 어떻게 다룰 것인지를 따진다.(어떻게 구조화할지, 어떻게 접근할지, 어떤 규칙과 제한을 적용할지..)

  • Relational model: Table 형태로 데이터 저장, 행(데이터)가 나열된 형태의 모델
  • Entity-Relationship data model: 두 데이터간의 관계를 나타내는 방법
  • Semistructured model: 반구조화
  • NoSQL: key-value 열 중심의 모델, 열이 주가되는 모델(평균값, 최대값 추출)

Relation Model


데이터가 tuple의 형태로 나열되어 저장되는 모델이다. 테이블 하나하나가 다 Relation이다.

Entity-Relationship data model


위는 과목-선수 관계(Relationship)을 표현한 E-R 모델 관점의 테이블이다.

Relation schema

하나의 Relation의 논리적 구조이다. Relation의 이름과 attributes의 set이다.
간단하게 말하여, 모든 열의 header 이름들이다.

instructor (ID, name, dept_name, salary)
department (dept_name, building, budget)
course (course_id, title, dept_name, credits)
prereq (course_id, prereq_id)

Relation Instance

Relation의 내용물이다.

Example of Schema of Uni database

위의 digram에서 밑줄이 있는 attribute는 key라 불린다.
key란 tuple(row)의 식별자로 보면 된다. 만약 tuple의 모든 값이 같으면 안되므로, 학생정보에서 ID와 같이 고유한 값이 필요하다.(이름, 성별, 나이, 학과가 같아도 ID는 다를 것이다.)

profile
열심히 안 사는 사람

0개의 댓글