데이터베이스란?
- 데이터의 중복을 없애고, 데이터를 구조화하여 저장함으로써 자료 검색과 갱신의 효율을 높인 데이터의 집합체
DBMS(DataBase Management System)
- 데이터를 편리하게 저장하고 갱신, 관리할 수 있도록 기능을 제공해주는 소프트웨어
파일시스템의 문제
- 대용량의 데이터를 주기억장치에 저장하기 어려움
- 동일한 데이터에 불일치의 문제가 발생함(데이터 무결성 보장x)
- 에러 발생 시 복구가 어려울 수 있음
- 한정된 보안
DBMS 장점
- 데이터 독립성, 무결성, 안정성 보장
- 데이터 동시 접근, 효율적 접근
- 데이터 관리(데이터 일관성, 중복, 보안 등)
데이터 모델
- 데이터의 의미와 데이터의 관계, 제약조건 등을 기술하기 위한 개념들의 집합
- 종류
- 관계 데이터 모델
- 개념 데이터 모델
- 계층 모델
- 네트워크 모델
- 객체지향 모델
- 객체-관계 모델
관계 모델
- 릴레이션
- record들의 집합
- 열과 행으로 구성된 2차원 구조의 테이블
- 스키마
- 개체의 이름, 개체의 속성, 개체 간의 관계와 같이 데이터베이스의 논리적 구조를 정의하는 개념
- 인스턴스
- 데이터베이스의 특정시점의 snapshot으로, 스키마에 맞는 데이터들의 집합
Data 추상화 단계
- 데이터 정의어(DDL)
- 외부 스키마와 개념 스키마를 정의하기 위해 사용되는 언어
- 물리적 스키마
- 물리적 장치에 실제로 저장하는 방법을 정의하는 구조
- 개념 스키마
- 외부 스키마
- 사용자나 응용프로그램이 접근하는 데이터베이스의 일부분인 뷰를 정의
데이터 독립성
- 논리적 데이터 독립성
- 데이터베이스의 논리적 구조가 변경되더라도 응용 프로그램이나 사용자에게 영향을 미치지 않고 독립적으로 작동할 수 있는 능력
- 물리적 데이터 독립성
- 데이터베이스의 물리적 구조가 변경되더라도 응용 프로그램이나 사용자에게 영향을 미치지 않고 독립적으로 작동할 수 있는 능력
데이터 정의어
- DDL(Data Definition Language): 스키마의 구조를 정의하거나 변경하기 위한 언어
- DML(Data Manipulation Language): 데이터를 삽입, 수정, 삭제, 조회하기 위한 언어
- DCL(Data Control Language): 데이터베이스의 권한을 부여하기 위한 언어
병행 제어(Concurrency Control)
- 데이터에 동시 접근할 때, 데이터의 무결성을 유지하기 위한 기술
- 여러 사용자가 데이터에 동시 접근할 때, 데이터의 모순을 방지하기 위해서 트랜잭션을 사용하여 데이터 무결성 유지
트랜잭션
- 데이터베이스에서 수행되는 작업 단위
- 완전히 수행되거나 전혀 수행되지 않아야 함
- 직렬적, 순차적 접근
- 순서대로 처리하기 위해서 잠금 프로토콜(lock protocol)을 사용
- 공유 잠금(shared lock)
- 전용 잠금(exclusive lock)
데이터베이스 설계
- DB 설계 6단계
- 요구 분석
- 개념적 DB 설계
- 논리적 DB 설계
- 스키마 정제
- 물리적 DB 설계
- 응용 및 보안 설계
용어
- 개체, 개체 집합
- 속성: 개체 집합이 공통적으로 가지고 있는 성질
- 도메인: 각 속성에 대해 가능한 값의 범위
- 역할: 한 관계 집합에 참여하는 개체 집합이 같은 경우
제약 조건
- 키 제약 조건
- 한 개체나 특정 테이블 행(튜플)의 유일성을 보장하는 조건
- 후보키: 키 제약 조건을 만족하는 필드들의 집합
- 서로 다른 투플은 키 필드 값이 다름
- 키 필드의 어떤 부분집합도 유일한 식별자가 될 수 없음(최소성)
- 슈퍼키: 키를 포함하는 필드들의 집합
- 기본키: 후보키 중 1개
- 외래키: 릴레이션에서 다른 릴레이션을 참조할 때, 사용하는 다른 릴레이션의 기본키(필드의 집합)
- 외래키 제약 조건
- 참조하려는 릴레이션의 primary키가 실제로 존재해야 함(존재하지 않는 외래키 x)
- 참여 제약 조건
- 한 개체나 특정 테이블 열이 전체적 참여/무조건 존재해야 하는 제약 조건
- 도메인 제약 조건
- 테이블 제약 조건
- 단언(Assertion)
- 여러 테이블을 포함하며, 한 테이블이 수정될 때마다 검사
- 무결성 제약 조건
- 부정확한 정보가 입력되는 것을 방지하는 조건
- 데이터가 수정 실행될 때, Domain, Primary key, Unique 제약조건들을 위반하는지 검사
약 개체
- key를 만들기 위한 충분한 속성이 없는 개체로, 다른 개체의 primary key를 통해 유일하게 구분
클래스 계층
- 일반화
- 여러 개의 공통적인 특성을 가진 더 큰 개체를 만드는 과정
- 세분화
- 다른 개체들과 구분되는 서브 클래스를 식별하는 과정
- 제약 조건
- 중첩 제약 조건
- 두 서브 클래스가 같은 개체를 포함하는게 허용되는지
- 포괄 제약 조건
- 모든 서브 클래스가 슈퍼 클래스의 모든 개체를 포함할 수 있는지
집단화
- 개체 집합과 관계 집합 사이의 관계를 설정하는 것
관계 모델
- 릴레이션 스키마(Relation schema)
- 테이블의 필드(열, 애트리뷰트)들을 기술
- 도메인 명시
- 릴레이션의 차수 = 필드들의 수
- 릴레이션 인스턴스(Relation instance)
- 레코드(행, 튜플)들의 집합
- 테이블
- 카디날리티(cardinality) = 튜플들의 수
뷰(View)
- 일종의 테이블로, 실제로 DB에 저장된 것이 아니라 필요에 따라 정의되고 계산됨
- 논리적 데이터 독립성 제공
- 필요한 데이터만 보여줄 수 있어서 보안에도 유용