[데이터베이스] DB 소개
DATABASE BASIC CONCEPTS
Data & Database
Data(데이터)
정형화되고 기록할 만한 가치가 있는 것.
Datebase(DB)
통합된 영속적인 데이터의 모음이다.(integrated collection of persistent data)
관심있는 정보를 표현한다.(representing the information of interest)
컴퓨터화된 정보시스템이다.(computerized information system)
조직이나 개인이 사용하는 조작 가능한(업데이트 가능한), 저장된 데이터의 모음이며 프로그램으로부터 분리되어 있다.
DBMS란?
DBMS는 특정 기업이나 조직의 정보를 담고 있는 시스템이다.
- 연관성 있는 데이터 집합이다.
- 실제 데이터가 저장되는 공간(Database)
데이터를 접근할 수 있도록 세팅되어 있는 프로그램이다.
- 사용하기에 효율적이고 편리한 환경을 제공한다.
데이터베이스 시스템은 다음과 같은 데이터 집합을 관리하는 데 사용된다:
- 가치가 높은 데이터 (highly valuable)
- e.g.) 고객 정보, 금융 거래 기록, 병원 환자 정보 등
- 상대적으로 데이터 양이 큼 (relatively large)
- 수백만 개의 행(row), 수백 GB에서 TB 단위까지 확장 가능
- 다수의 사용자와 애플리케이션이 동시에 접근 (accessed by multiple users and applications)
- 여러 부서, 앱, 사용자들이 같은 데이터에 동시에 접근
현대 데이터베이스 시스템은 복작합 소프트웨어 시스템이다:
대규모의 복잡한 데이터의 집합을 관리한다.
데이터베이스는 우리의 삶의 모든 측면에서 영향을 미친다.
데이터베이스 응용
- 은행
- 재무
- 항공
- 대학
- 판매
- 회계
- 제조업
- 통신업
데이터베이스 기반 시스템
- User
- Application user, Application Deveploper(ODBC, JDBC)
- DBMS
- Web Server, Middleware
- SQL, DBA(Database Adminstrator)
- DB
user - web - db: 3tier architecture
File System
파일 시스템
- 운영체제의 일부다.
- 프로그램, 데이터, 문서 또는 기타 모든 것을 저장한다.
파일 시스템의 단점(데이터 관리 측면)
- 데이터의 중복성(redundancy)과 불일치(inconsistency)
- 중복성(redundancy)
- 같은 데이터가 여러 파일에 중복되어 저장되는 문제
- e.g.) 고객 정보가 주문 파일, 배송 파일, 결제 파일에 각각 따로 저장된다. -> 고객 주소가 한쪽에서는 바뀌었는데, 다른 파일에는 여전히 옛날 주소가 있을 수 있다.
- 불일치(inconsistency)
- 동일한 데이터가 여러 파일에 다르게 저장될 수 있다.
- 중복된 데이터가 업데이트되지 않으면 신뢰도가 하락한다.
- e.g.) 고객 K의 전화번호가 파일마다 다르면 어떤 것이 진짜인지 알 수 없다.
- 중복성(redundancy)
- 갱신의 원자성(Atomicity of updates)
- e.g.) A계좌(잔액 100$)의 공동 소유자의 홍길동과 김영희 부부가 동시에 50$ 인출하기
- Transaction Problem: 모두 성공하거나, 전혀 실행되지 않은 것처럼 처리되어야 한다.
- e.g.) A계좌(잔액 100$)의 공동 소유자의 홍길동과 김영희 부부가 동시에 50$ 인출하기
- 보안 문제(Security problems)
- 보안 보장의 어려움: 다양한 파일, 다양한 접근경로, 다양한 프로그램의 이용
- Integrity Constraints(무결성 제약조건)
DBMS
데이터의 종속성과 중복성 문제 해결
데이터베이스를 공유하고, 관리하는 시스템
DBMS의 장단점
장점
- 데이터 중복 최소화
- 데이터의 공유
- 일관성 유지
- 무결성 유지
- 보안 보장
- 표준화 용이
- 전체 데이터 요구의 조정
단점
- 비용: 하드웨어, DBMS, 운영비, 교육비, 개발비
- e.g.) 소프트웨어 구입비, DB관리비, 관리 인력 인건비
- 프로그램의 복잡화
- 적어도 2개의 언어
- e.g.) JAVA + SQL
- 적어도 2개의 언어
- 성능상의 오버헤드
- 장점 > 단점
Data Independence Property
Physical Level (Internal Level) — 실제 저장 방식
-> DBMS 레벨
- 정의: 데이터가 디스크에 실제로 어떻게 저장되는지를 정의하는 구조
- 특징:
- 인덱스, 정렬 방식, 파일 구조 등이 포함된다.
- 사용자와 대부분 무관 (DBMS가 알아서 관리)
- e.g.)
- B-Tree 인덱스 사용 여부
- 데이터 블록의 위치, 압축 방식
View Level (External Level) — 사용자 관점
-> 데이터베이스 관리자(DBA) 레벨
- 정의: 각 사용자(또는 프로그램)가 보는 데이터의 부분적인 모습 (View)
- 특징:
- 사용자는 전체 DB를 다 볼 필요 없음
- 필요한 정보만 제공
- e.g.)
- 학생은 자신의 성적만 볼 수 있다.
- 교수는 자신이 맡은 과목의 성적만 볼 수 있다.
- 보안도 제공 가능 (감춰야 할 데이터는 View에서 제외)
- e.g.)
- 연봉은 보안 목적으로 숨겨져있다.
Logical Level (Conceptual Level) — 전체 논리 구조
- 정의: 데이터베이스 전체의 논리적인 구조 (Entity, 관계, 속성 등)
- 특징:
- 뷰 수준보다 추상적이지만, 저장 방식은 모른다.
- ER 다이어그램 기반의 테이블 구조가 여기에 해당한다.
- 대부분의 SQL 명령이 이 레벨에서 사용된다. (CREATE TABLE 등)
- e.g.)
- 학생(학번, 이름, 전공) 테이블 정의
- 수강(학번, 과목번호, 성적) 관계 설정
RELATIONAL MODEL
Data Model
Relational data model(관계형 데이터 모델)
Entity-Relationship(E-R) data model
데이터베이스 설계에 주로 이용된다.
Object-based data models (Object-Oriented & Object-Relational)
RDBMS(관계형 데이터 모델 관리 시스템)의 한계점 극복 위해 제안
OO-DBMS의 장점이 부각되자, 대형 RDMS Vendor들이 OR-DBMS를 발표
현재 대부분의 RDMS는 실질적으로 ORDMS
Relational Model
가장 널리 이용되는 대표적인 Data Model이다.
Relation(Table)에 기반한 모델, 사용 편리 성능 우수
Relational Model의 주요 개념
Domain(type): Attribute가 가질 수 있는 값의 집합
= 속성이 가질 수 있는 값의 범위
- NULL 값을 포함한다.
Attribute(column): column 명
= 속성
= 테이블의 열
- 각 열은 하나의 속성 (이름, 학번 등)
- 데이터 타입과 이름이 지정된다.
Tuple(row, record): Attribute 값의 집합
- 하나의 레코드(데이터 단위)
- e.g.) 학생 한 명의 정보(학번, 이름, 전공)
Relation(table): 튜플의 집합
- 한계의 테이블을 의미한다.
Database: 관계(테이블)의 집합
학번 | 이름 | 학년 | 학과 |
---|---|---|---|
237 | KIM | 1 | 컴퓨터 |
238 | SIN | 2 | 수학 |
240 | JOE | 4 | 물리 |
… | … | … | … |
NULL (Value 값)
아직 알려지지 않았거나 정의 내려지지 않은 값
- e.g.) 새로 편입한 HONG이라는 이름의 학생은 아직 학과가 결정되지 않았다.
숫자 0, 빈 문자열 “” 등과는 다르다.
모든 Domain은 NULL값을 포함한다.
Schemas & Instances
(Logical) Schema - 데이터의 논리적 구조
Instance - 특정 시점의 데이터 베이스의 실제 내용
-> 프로그래밍 언어에서 사용하는 변수의 타입(type)과 값(Value)
- type: 변하지 않는다.
- e.g.) string, integer
- value: 변한다.
즉, 스키마는 attribute의 집합이고 instance는 지속적으로 변화 가능하다.
KEY
KEY: 튜플을 구별하기 위한 Attribute들의 집합이다.
- Relation은 동일한 튜플이 있을 수 없다! (튜플의 집합)
Superkey(수퍼키)
- Relation에서 튜플을 식별할 수 있는 유니크한 Attribute의 집합이다.
Candidate Key(후보키)
- 수퍼키 중에서 미니멀 한 키
- 미니멀(Minimal): 하나의 Attribute라도 빼면 더 이상 key가 아니다.
Primary Key(기본키, PK)
- Candidate Key 중 하나 (Relation을 정의할 때 선택)
- Entity Intergrity(개체 무결성): NULL이 될 수 없다.
Foreign Key(참조키, FK)
- 다른 테이블의 기본키를 참조한다.
- 참조되는 테이블에서 키는 아닐 수 있지만, 참조되는 테이블에서 기본키다.
- Referential Integrity(참조 무결성): 반드시 참조된 테이블의 PK 값에 존재하거나, NULL이어야 한다.
Database Languages
Data Definiton Laguage (DDL)
- 데이터베이스 스키마를 정의하는 언어
Data Manipulation Language (DML)
- 데이터베이스의 데이터를 조작(스키마는 불변)하는 언어
- Retrieve(조회) - DB Instance 변화 X
- Insert(삽입) - 변화 O
- Delete(삭제) - 변화 O
- Change(교체) - 변화 O
Data Control Language (DCL)
- 데이터베이스의 권한(constraint)를 제어하는 언어