Database 정리
· 50 min read
정보 시스템
필요한 데이터를 수집, 필요시에 처리하는 수단
- 자료 : 관찰이나 측정을 통해 수집, 가공되지 않은 상태
- 정보 : 자료를 가공
자료처리시스템
정보시스템의 서브시스템
-
일괄처리시스템 : 급여, 회계, 세무 등 모아서 처리
-
온라인실시간처리시스템 : 예약, 은행처리
-
분산처리시스템
-
데이터웨어하우스 : 업무 시스템에서 추출 된 데이터 집합체
DB 시스템
개념
- 통합된데이터 : 중복을 배제한 데이터의 모임 (Integrated)
- 저장된데이터 : 저장매체에 저장된 자료 (Stored)
- 운영데이터 : 업무를 수행하는데 반드시 필요한 자료 (Operational), 임시불가
- 공용데이터 : 공동으로 소유, 유지 하는 자료 (Shared)
특징
- 실시간접근성 : (Real-Time Accessibility)
- 계속적인변화 : (Continuous Evolution)
- 동시공용 : (Concurrent Sharing)
- 내용에 의한 참조 : 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터로 검색(Content Reference)
구성요소
- 데이터베이스
- 스키마
- DBMS
- DB언어
- DB컴퓨터
- DB사용자
DBMS
- DB 관리 소프트웨어
- 모든 응용 프로그램이 DB 공용하도록 관리
- DB 구성, 접근방법, 유지관리에 책임
DBMS의 기능
- 정의(조직)기능 : 데이터 타입과 구조 정의, 이용방식, 제약조건 명시 (Definition)
- 조작기능 : CRUD를 위해 사용자와 DB사이의 인터페이스 수단을 제공 (Manipulation)
- 제어기능 : 데이터 무결성, 보안, 권한, 병행제어 처리 (Control)
DBMS의 장단점
- 단점 : 전문가부족, 비용증가, Overhead, Backup과 Recovery의 어려움, 복잡
파일시스템의 문제점
- 종속성 : 데이터의 접근방법을 변경하면 응용프로그램도 변경
- 중복성 : 일관성, 보안성, 경제성, 무결성 위반
데이터독립성
- 논리적 독립성 : 응용프로그램과 DB를 독립, 논리적 구조를 변경해도 응용프로그램 변경하지 않음
- 물리적 독립성 : 응용프로그램과 물리적장치 독립, DB에 디스크를 추가해도 응용프로그램 변경하지 않음
DB의 구성요소
- 개체
- 속성 : 개체의 성질
- 관계
데이터사전
- 모든 데이터 개체들에 대한 정보를 유지 관리
- alias 시스템 카탈로그
- 데이터에 관한 데이터
스키마
- 외부스키마
- 개념스키마
- 내부스키마
특징
- 데이터 사전에 저장
- alias 메타데이터
- 데이터의 구조적 특성을 의미
- 인스턴스에 의해 규정
외부스키마
- 개인이 필요로하는 DB의 논리적 구조
- VIEW
- alias 서브스키마
- 여러 개 존재 가능
- 사용자는 SQL을 사용해 접근
- 응용 프로그래머는 COBOL, C를 사용해 접근
개념스키마
- DB의 전체적인 논리적 구조
- 하나만 존재
- DB 파일에 저장되는 데이터의 형태를 나타냄
- alias 스키마
- DBA에 의해 구성
내부스키마
- 물리적 저장장치에서 본 DB 구조
- DB에 저장될 레코드의 물리적인 구조 정의
- 내부 레코드의 물리적 순서를 기술
- alias 저장스키마
- 시스템 프로그래머나 시스템 설계자가 봄
DB언어
DDL
- DB를 구축하거나 수정
DML
- 비절차적 데이터 언어
- SQL, IMS, DBTG, TOTAL
DCL
- 무경설, 보안, 권한, 회복
DB 사용자
DBA
- DDL, DML, DCL 사용
응용 프로그래머
- DML을 사용해 일반 사용자에게 응용프로그램 제공
일반사용자
- SQL 사용
데이터 모델
정보를 단순화, 추상화하여 체계적으로 표현한 개념적 모형
개념적 데이터 모델
- 추상적인 개념으로 표현
- 개체와 관계를 통해 현실을 표현
- ER모델
- 현실 세계의 개체를 인간이 이해하는 구조로 기술
논리적 데이터 모델
- 데이터 타입과 데이터 타입간의 관계를 통해 현실을 표현
- DBMS는 논리적 데이터 모델을 하나만 사용
- 관계모델, 계층모델, 네트워크모델
- 현실 세계의 개체를 컴퓨터의 데이터구조로 기술
표시요소
표현요소, 구성요소
- 구조 : 논리적으로 표현된 개체 타입들 간의 관계로 데이터 구조 및 정적 성질을 표현 (Structure)
- 연산 : DB에 저장된 실제 데이터를 처리하는 작업에 대한 명세로 DB를 조작하는 기본 도구 (Operation)
- 제약조건 : 실제 데이터의 논리적인 제약조건 (Constraint)
구성요소
- 개체 : DB에 표현하려는 것, 유무형의 정보, 서로 연관된 속성, fs의 레코드 (Entity)
- 속성 : 데이터의 가장 작은 논리적 단위, fs의 데이터항목 또는 데이터 필드, 개체를 구성하는 항목 (Attribute)
- 관계 : 개체 간 또는 속성 간의 관계 (Relationship)
ER모델
Perter Chen, 개념적 표현
ERD
- 개체 : □
- 관계 : ◇
- 속성 : ○
- 기본키속성 : 밑줄원 또 는 ●
- 연결 : 선, 링크로 개체와 속성을 연결
- DB의 논리적 구조 표현
관계형 데이터모델
테이블 (Relation)으로 표현
계층형 데이터모델
트리, 노드 = 개체, 부모 자식 관계
특징
- 연쇄삭제
- 개체 간 사이클 허용 안됨
- 개체 = 세그먼트
- DBMS = IMS
장점
- 구조 간단, 판독 용이
- 구현, 수정, 검색 용이
- 독립성 보장
단점
- 데이터 상호 유연성 붖고
- 검색경로 한정
- 삽입 삭제 연산 매우 복잡
- 다 대 다 관계 처리 어려움
망형 데이터모델
CODASTYL DBTG 모델, 그래프, Owner-Member, N:M 관계
DB설계
고려사항
- 무결성
- 일관성
- 회복
- 보안
- 효율성
- DB 확장가능
개념적 설계
- 개념 스키마 모델링과 트랜젝션 모델링
- ERD 작성
- alias 정보 모델링
- 독립적 개념스키마
논리적 설계
현실세계를 물리적저장장치에 저장할 수 있도록 논리적 자료구조로 변환
- 트랜잭션 인터페이스 설계
- 테이블 설계
- alias 데이터 모델링
- 종속적 논리스키마
물리적 설계
- DB file의 저장구조 및 액세스 경로 결정
- 데이터가 컴퓨터에 저장되는 방법 묘사
- 저장 레코드 양식 설계
- 데이터타입
- 데이터 값의 분포
- 접근 빈도
- 레코드 집중의 분석 설계
- 접근 경로 설계
- 기본 단위는 저장레코드
고려사항
- 인덱스 구조
- 반응시간 : (Response Time)
- 공간활용도 : (Space Utilization)
- 트랜잭션 처리량 : (Transaction Throughput)
DB 구현
- DDL 이용해 스키마 기술
- 응용 프로그램을 위한 트랜잭션 작성
- DB 접근을 위한 응용 프로그램 작성
설계 순서
요구 분석 > 개념적 설계 > 논리적 설계 > 물리적 설계 > 구현
관계형 DB 구조
테이블로 표현
- 릴레이션 스키마 : 속성명
- 릴레이션 인스턴스 : 데이터
튜플
- row
- 튜플은 릴레이션을 구성하는 각각의 행
- 속성의 모임
- fs의 레코드
- 튜플의 수 = 카디널리티 (Cardinality) = 기수 = 대응수
속성
- column
- DB를 구성하는 가장 작은 논리적 단위, 열
- fs의 데이터 또는 데이터 필드
- 개체의 특성
- 속 성의 수 = 디그리 (Degree) = 차수
도메인
- 하나의 속성 값들의 집합
관계형 DB 제약조건
후보키
모든 튜플에 대해 유일성과 최소성 만족
- 유일성 : 하나의 키값으로 하나의 튜플만 식별 가능
- 최소성 : 모든 레코드를 유일하게 식별하는데 필요한 속성
기본키
특정 튜플을 유일하게 구별할 수 있는 속성으로 후보키 중 선택한 Main key
- Null 값 불가
대체키
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
- alias 보조키
슈퍼키
- 속성들의 집합으로 구성된 키
- 유일성은 만족, 최소성은 불만족
외래키
- 기본키를 포함하면 참조 릴레이션
- 외래키를 포함하면 참조하는 릴레이션
무결성
- 개체무결성 : 기본키를 구성하는 속성은 NULL이나 중복 불가
- 참조무결성 : 외래키 값은 NULL이거나 참조 릴레이션의 기본키와 동일, 도메인과 속성 갯수가 같아야함
관계대수
관계형 DB에서 원하는 정보를 얻기 위해 사용하는 절차적인 언어로 연산자와 연산규칙을 제공한다.
- 순수 관계 연산자 : Select, Project, Join, Division
- 일반 집합 연산자 : Union, Intersection, Difference, Cartesian Product
순수 관계 연산자
Select
- 수평연산
- 시그마(σ)
Project
- 속성만 추출하는 연산
- 수직연산
- 파이(π)
Join
- 두 개의 릴레이션을 합쳐서 새로운 릴레이션으로 반환
- 나비넥타이 (▷◁)
- 자연조인 : 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법
Division
- 속성을 제외한 속성만을 구하는 연산
- 나누기 (÷)
일반 집합 연산자
- 합집합, 교집합, 차집합은 합병 조건이 가능해야함.
- 합병조건 : 합병하려는 두 릴레이션 간에 속성 수가 같고 도메인의 범위가 같음
합집합
- Union
- A ∪ B ≤ A + B
- 합집합의 카디널리티는 두 릴레이션의 카디널리티의 합보다 크지 않다.
교집합
- Intersection
- A ∩ B ≤ MIN(A, B)
- 교집합의 카디널리티는 두 릴레이션 중 작은 릴레이션보다 크지 않다.
차집합
- Difference
- A-B ≤ A
- 차집합의 카디널리티는 A의 카디널리티보다 크지 않다.