데이터베이스란 ?
논리적으로 연관된 하나 이상의 자료의 모음으로 그 내용을 고도로 구조함으로서 검색과 갱신의 효율화를 꾀한 것으로, 몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 잡합체라고 할 수 있다.
데이터베이스 특징
- 실시간 접근이 가능하여 질의에 대한 실시간 처리 및 응답을 처리할 수 있도록 지원해 준다.
- 계속적인 변화 특성 때문에 삽입, 삭제, 갱신을 통해서 현재의 정확한 데이터를 동적으로 유지할 수 있다.
- 동시 공유가 가능하여 여러 사용자가 동시에 공용할 수 있다.
- 내용에 의한 참조가 가능하여 위치나 주소가 아닌 데이터의 내용, 즉 값에 따라 참조할 수 있다.
DBMS(데이터베이스 관리시스템)
- DBMS란 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어이다.
- DMBS는 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템으로 모든 응용 프로그램들이 데이터베이스를 공용할 수 있도록 관리해 준다.
- DBMS는 데이터베이스의 구성, 접근방법, 유지관리에 대한 모든 책임을 진다.
기존의 파일 처리 방식에서의 문제점
종속성으로 인한 문제점
- 종속성: 응용프로그램과 데이터 파일이 상호 의족적인 관계
- 데이터 파일이 보조 기억 장치에 저장되는 방법이나 저장된 데이터의 접근 방법을 변경할 때는 응용프로그램도 같이 변경하여야 함.
중복성으로 인한 문제점
- 일관성: 중복된 데이터간에 내용이 일치하지 않는 상황이 발생하여 일관성이 없어짐
- 보안성: 중복되어 있는 모든 데이터에 동등의 보안수준을 유지하기가 어려움
- 경제성: 저장 공간의 낭비와 동일한 데이터의 반복 작업으로 인한 비용의 증가
- 무결성: 제어의 분산으로 인해 데이터의 정확성을 유지할 수 없음
DBMS의 필수 기능
- 정의 기능
- 모든 응용 프로그램들이 요구하는 데이터 구조를 지원하기 위해 데이터베이스에 저장될 데이터의 형과 구조에 대한 정의, 이용 방식, 제약 조건 등을 명시하는 기능이다.
- 데이터와 데이터의 관계를 명확하게 명세할 수 있어야 하며 원하는 데이터 연산은 무어잇이든 명세할 수 있어야 한다.
- 조작 기능
- 데이터 검색 갱신 삽입 삭제 등을 체계적으로 처리하기 위해 사용자와 데이터베이스 사이의 인터페이스 수단을 제공하는 기능이다.
- 제어 기능
- 데이터베이스를 접근하는 갱신 삽입 삭제 작업이 정확하게 수행되어 데이터의 무결성이 유지되도록 해야 한다.
- 정당한 사용자가 허가된 데이터만 접근할 수 있도록 보안을 유지하고 권한을 검사할 수 있어야 한다.
- 여러 사용자가 데이터베이스를 동시에 접근하여 데이터를 처리할 때 처리결과가 항상 정확성을 유지하도록 병행제어을 할 수 있어야 한다.
SQL종류 - DQL, DML, DDL, DCL
DQL
- 데이터 질의 언어
- SELECT
- 대상: 필드, 레코드, 테이블
DML
- 데이터 조작 언어
- 레코드 제어 명령어
- 대상: 필드, 레코드, 테이블, 뷰, 인덱스
- INSERT, UPDATE, DELETE, MARGE(병합)
- 저장된 데이터를 실질적으로 처리하는데 사용
- ROLLBACK 가능 (입력한 데이터를 지워도 회복 가능)
DDL
- 데이터 정의 언어
- 객체의 생성, 변경, 삭제 명령어
- 대상: 필드, 레코드
- CREATE, ALTER, DROP, RENAME, COMMENT(주석 달기), TRUNCATE(테이블 모든 행 삭제) SHCEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용
- AUTO COMMIT (ROLLBACK 불가능)
TCL
- 트랙잭션 제어 언어. 데이터의 일관성을 유지하면서 안정적으로 데이터를 복구시키기 위해서 사용
- Transaction은 여러 개의 DML(데이터 조작어) 명령문들을 하나의 작업단위로 묶어놓은 집합이다.
- COMMIT, ROLLBACK
키의 개념과 종류
키 - DB에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 애트리뷰트
키의 종류
-
후보키 : 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말함
-
주요 데이터베이스 객체(90%가 테이블)

SQL은 구조화된 언어 관계형 언어를 사용하기 위해 특수 목적의 프로그래밍 언어
한 행을 레코드(튜플)라 한다. 자바로 치면 VO객체
튜플(데이터)
속성의 수를 디그리 또는 차수라 한다.
애트리뷰트(속성) - 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 나올 수 있다.
애트리뷰트는 더 이상 쪼갤 수 없는 원자 값만을 저장
용어
릴레이션 = 릴레이션 스키마 + 릴레이션 인스턴스(즉, 전체의 표를 지칭)
- 릴리이션은 모두 테이블이지만 모든 테이블이 다 릴레이션은 아니다.
예를 들어 릴레이션의 테이블 컬럼은 단일 값을 포함해야 하지만, 일반적인 테이블은 하나의 컬럼에 두 개 이상을 값을 가질 수 있다.
- 릴레이션 스키마
- 릴레이션 스키마 = 릴레이션 이름 + 애트리뷰트(속성) 이름
- 예) 학생(학번, 이름, 국어, 영어, 수학)
- 릴레이션 인스턴스
- 어느 한 시점에 릴레이션 R이 포함하고 있는 튜플들의 집합
- 튜플(레코드 행)
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성
- 튜플의 수를 카디널리티 또는 기수라 한다.
- 애트리뷰트(속성 컬럼)
- 데이터베이스를 구성하는 가장 작은 논리 단위
- 객체의 특성을 기술
- 속성의 이름은 모두 달라야 함
- 속성의 수를 디그리 또는 차수
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입이 원자값들의 집합