DB 정리 2

이상원·2022년 7월 26일
0

Database

목록 보기
2/2

Data Models

데이터 모델은 내 목적에 맞게 요약 정리한다고 생각하면 된다.

A collection of tools for describing

  • Data
  • Data relationships
  • Data semantics
  • Data constraints

Relational Models

A Sample Relational Database

Data Manipulation Language(DML)

데이터 조작어란 적절한 데이터 모델로 조직된 데이터에 접근하고 조작하기 위한 언어를 말한다.

Data 조작 기능은 크게 4가지라고 볼 수 있다.


읽기 영역

  • Create 삽입

쓰기 영역

  • Read 조회(읽기)

  • Update 갱신

  • Delete 삭제


언어에는 상대적으로 2가지 종류가 존재한다.

  • Procedural
    사용자가 어떻게 데이타를 얻을지에 대하여 구체화할 수 있는 언어 (ex. JAVA, C++, C)

  • Declarative(nonprocedural)
    사용자가 어떻게 데이터를 얻을지 구체화할 필요가 없는 언어 (ex. SQL)

SQL은 굉장히 광범위하게 사용되는 언어이다.

Data Definition Language(DDL)

데이터 정의어란 데이터 베이스 스키마를 정의하는 언어이다.
밑에 보이는 쿼리 언어의 표준은 ANSI에 의해서 정해진다.

create table instructor(
	ID			char(5),
    name		varchar(20),
    dept_name	varchar(20),
    salary		numeric(8,2)
)

DDL을 이용하여 다음과 같은 추상화 레벨의 Schema를 만든다. 각 level에는 각자의 schema가 존재

cf) view 는 create view~~를 통해서 physical은 index를 통해서~

DDL 정보는 data dictionary(system catalog)에 하나의 테이블 형태로 저장이 되게 된다.(DBMS는 모든 정보를 table 형태로 관리하게 된다.)

Data dictionary(System catalog)

Data dictionary는 metadata(data of data)를 포함하고 있다.

metadata는 어떠한 데이터를 기술하는 데이터를 말한다. 이러한 metadata에는 다음과 같은 것들이 있다.

  • Database schema

  • Integrity constraints (무결성 제약조건)
    -> Primary Key(개체 무결성 제약 조건 보장)
    -> Referential integrity(참조 무결성 제약 조건 보장)

  • Authorization(권한)
    주체(subject ,사용자) 객체 : 대상 (object)
    Role Based Access Control 에 의해 결정

Integrity constraints(무결성 제약조건)

무결성 제약조건은 굉장히 강력한 제약 조건으로 크게 2가지가 존재한다.(모든 DBMS는 이 2가지 반드시 지키도록 되어있다. DBMS 제품에 따라 더 있을 수도 있음.)이러한 제약조건은 DBMS에 의해서 잘못된 데이터가 들어오지 않도록 컨트롤한다.

  1. 개체 무결성 제약 조건(Entity Integrity Constraints)
    존재하는 사실은 유일하게 식별되어야 한다!
  1. 참조 무결성 제약 조건(Referential Integrity Constraints)
    존재하지 않는 사실은 참조하지 않아야 한다.

이러한 조건에 따라 거짓말이 들어오지 않도록 관리되어야 한다.

SQL

SQL : widely used non-procedural language

SQL 작성법 요구사항이 왔을 대 처리할 테이블이 어디있는 지확인할 것!

관계를 통해 2개의 테이블을 사용해야할 경우 경우의 수에서 만족 조건을 찾는다. RDBMS 속도 저하하는 단점 가질 수 밖에 없다!

Application programs에서 DataBase에 접근하는 방법은 크게 두가지이다.

  1. Embeded SQL
    중간 중간 SQL문을 직접 적음 compile 시 SQL 있는 것을 새로운 소스코드로 바꾸어야 함

  2. API(ODBC, JDBC,...)
    SQL을 하나의 함수 파라미터로 넣어서 보내줌

Database Design

  • Logical Design(Logical Schema) - Deciding on the database schema. Database design requires that we find a "good" collection of relation schema

  • Physicla Design (Physical Schema) - Deciding on the Physical layout of the database

다음의 그림은 한 테이블에 여러 주제가 있다. 즉, 정규화가 잘 안된 상태이다. 또한 Data redundancy로 인하여 수정시 DB가 거짓말을 말 할 가능성이 존재하게 된다.

  • 정규화 한가지 주제는 한 곳(테이블)에서만 기록한다.

정규화 X시 조회성능은 높아진다. 즉, 편리함이 보장이 된다. 하지만 갱신 작업이 잘못될 가능성이 높아진다. 그래서 Data Design 에서는 good이라는 개념이 필요한다. 즉 engineering으로 결정을 하게 된다.

Design Approaches

Normalization Theory 정규화

Entity Relationship Model

  • Entity : 유일하게 식별되는 개체

  • Relationship : Entity간 어떠한 관계가 있는 지


entity-relationship diagram

Storage Management

뒷단에서 어떻게 이루어졌는 지 이해, 상상, 예측이 되어야 한다.

ex) SSD HDD에 어떻게 가고 오는 지

Query Processing

SQL은 사람이 잘 이해하기 편한 언어로 DBMS에서는 DBMS가 이해하기 편한 언어(관계 대수)로 바꾸어야 한다.

  • 질의 최적화
    주어진 SQL내에서 최적화를 하는 것이며 RAE-1, RAE-2, ... 등으로 비용을 simulation을 하여 최선의 결과로 실행을 하게 된다.

Transaction Management

transaction은 데이터 베이스 application에서 하나의 논리적인 함수를 실행한 연산의 모음을 말한다. 즉, DB에서 거래의 모든 것을 말한다고 보면 된다.

  • Transation은 원자성(All or Nothing)을 보장해야 한다.
    즉, DB에 반영이 다되거나 전혀 X되도록 보장해애 하며 동시성이 보장이 되나 거짓말을 X하도록 제어해서 동시성을 보장해야 한다.

Database System Users

profile
개발하는 코린이

0개의 댓글