데이터베이스 프로그래밍 수업의 내용을 정리한 문서입니다. 시간이 조금 지나고나서야 중요한 내용 임을 깨달아서 예전에 굿노트에 정리했던 것들을 다시 글로 기록하려고 합니다. 더 알고 싶은 부분은 조금 더 파고 들어볼 예정입니다.


1. DB 기본 개념

1) DB vs. DBMS

  • DB는 저장된 데이터의 모임. 데이터 그 자체 컨텐츠를 의미함.
  • DBMS는 데이터 접근을 위한 프로그램 set임.
    • oracle
    • MS SQL server
    • MySQL
    • MariaDB

2) Typical web-based application architecture

[출처]

  • Client Tier - Presentation Layer
    • 응용 프로그램의 최상단임
    • UI 제공 (인터넷 브라우저의 정적 데이터 제공)
    • 주로 web server를 뜻 함 (물리적 WEB server)
    • HTML, Javascript, CSS, Image
  • Application Tier - Business Logic Layer
    • 클라이언트 요청에 대해 마치 서버처럼 행동함
    • 정보 처리의 규칙 존재(주로 동적 데이터임)
    • middleware, backend
    • 주로 application server 뜻함(물리적 WAS server)
  • Data Tier - Data Access Layer
    • DB와 엑세스해서 읽고 쓰고 관리하는 것을 포함
    • DB server (물리적 DB server)
    • MySQL

3) Rational DB

  • Domain : attribute가 가질 수 있는 값의 집합
  • Attribute(column)
  • Tuple(record, row)
  • Relation(table)
  • DB - set of relations

4) Schema, Instance

  • Schema : DB의 논리적 구조, 뼈대
  • Instance : DB의 실제 컨텐츠, DB의 상태

5) Key

  • Key
    • tuple을 구별하기 위한 attribute 집합
  • Superkey
    • relation에서 unique하게 tuple을 식별할 수 있는 attribute 집합
  • Candidate Key
    • superkey 중에서 minimal한 key
  • Primary Key
    • candidate key 중 하나 (relation을 정의할 때 선택)
    • entity Integrity : Null이 될 수 없음.
  • Foreign Key
    • 타 relation을 참조하는 attribute
    • referential integrity : 반드시 참조된 relation의 PK 값에 존재하거나 NULL이어야 함.

6) Entity-Relation model

  • ERD
    • entity : 업무상 관리가 필요한 관심사에 해당함. 저장이 되기 위한 어떤 것임.
    • DB design에 사용됨.

7) DB Language

  • DB language는 절차적 언어와 비절차적 언어로 구성되어 있음.
    • Procedural (Relational algebra)
    • Non-procedural (SQL)
  • DDL (data definition language) : db schema를 정의하는 언어
  • DML (data manipulation language) : db의 data를 조작하는 언어
    • query
  • DCL (data control language) : db의 constraint를 제어하는 언어

8) SQL (structed query language)

  • relational db의 표준
  • DDL, DML
  • Integrity(무결성) : 데이터 정확성, 일관성, 유효성이 유지되는 것을 의미함.
  • TCL (Transaction Control Language)
  • view definition
  • authorization

출처