강의17 - kyagrd/introCS2018spring GitHub Wiki

강의와 과제에 사용할 SQL 활용 환경: https://franchise.cloud/

대세가 관계형 데이타베이스이므로 관계형 데이타베이스를 중심으로 설명한다.

용어

  • 데이타베이스(DB): 구조화된/체계화된 데이타의 모임
  • DBMS (데이타베이스 관리 시스템): 데이타베이스를 관리하는 소프트웨어 시스템
  • 데이타 무결성 (data integrity):
    • 대표적인 예가 primary key가 테이블에서 중복이 없어야 함
    • 그 이외에도 서로 다른 여러 테이블들에 있는 데이타들 간에 만족해야 할 관계들
  • 인덱스 - 이거 지난시간에 잘못 설명했는데 key와 index 는 다른 개념입니다.
    • 책의 각 페이지 내용을 테이블로 데이타베이스화한다면 primary key는 페이지 번호로 하는 것이 자연스러울 것이다
    • 책의 맨 뒤에 용어나 개념으로 거꾸로 그 용어나 페이지가 포함된 것이 몇 페이지에 오는지 색인하는 것이 index이다. 그리고 보통 책의 색인(인덱스)는 primary key에 해당하는 페이지 번호에 매핑되어 있으므로 이러한 인덱스를 primary index라고 한다.
  • relation = table
  • 속성(attribute) = 테이블에서 열(column) 정보. 즉 해당 열이 무엇을 대표하는지 나타내는 "이름"과 어떤 종류의 값인지 "타입".
  • tuple = 하나의 행(row)에 들어있는 정보들 = record
  • 스키마 = 관계형DB에서는 DB를 구성하는 테이블들의 설계 (테이블 각각의 속성, 여러 테이블들이 서로 어떤 관계에 있어야 하는지)

데이타베이스 트랜잭션

데이타베이스에 대한 트랜잭션은 ACID의 네 가지 성질을 만족해야 한다.

  • Atomicity 원자성: 트랜잭션에서 일어나는 변경사항들이 트랜잭션이 성공적으로 종료되면 모두 다 데이타에스에 적용되지만 그렇지 않은 경우에는 (즉 트랜잭션이 실패하거나 도중에 중지되는 경우에는) 데이터베이스에 전혀 변경이 일어나지 않는다. All or Nothing!
  • Consistency 일관성: 트랜잭션이 완결되었을 때 변경내역은 데이타의 무결성(integrity)를 보장한다.
  • Isolation 격리성: 진행중인 하나의 트랜잭션에서 일어나고 있는 변경사항이 외부(다른 진행중인 트랜잭션 포함)에 영항을 미치지 않는다. 즉
  • Durability 내구성: 트랜잭션이 성공적으로 완료되어 적용된 변경사항은 이후에 다른 시스템 실패가 일어나더라도 (예: DBMS 서버가 예상치 못하게 죽는다거나) 유지되어야 한다.

관계형 데이타베이스에서 중복을 없애는 방법

https://opentutorials.org/course/1688/9427