패스트캠퍼스 강의와 이기적 기본서를 기반으로 공부합니다.
1. 개념
데이터베이스
- 넓은 의미: 일상적인 정보들을 모아놓은 것 자체
- 특정 기업이나 조직 혹은 개인이 필요에 의해 발생한 데이터를 일정한 형태로 저장해 놓은 것
- DBMS : 효율적인 데이터 관리뿐만 아니라 사고로 인한 데이터의 손상을 피하고, 필요시 데이터를 복구하기 위한 소프트웨어
- 데이터베이스의 종류
계층형/네트워크형/관계형
관계형 데이터베이스 Relational database
- 1970년대 E.F. Codd 박사의 논문에서 처음 소개
- Relation(릴레이션)과 릴레이션의 조인 연산을 통해 합집합, 교집합, 차집합을 만들 수 있음
- 정규화를 통한 합리적인 테이블 모델링
→ 이상 현상 제거, 데이터 중복 피하기, 병행 제어를 통해 사용자들이 동시에 데이터 공유 및 조작 가능
- 메타 데이터 총괄 관리 가능
→ 데이터의 성격, 속성, 표현 방법 체계화하고 데이터 표준화를 통해 데이터 품질 확보
- 보안 기능 제공
- 데이터 무결성 (integrity) 보장 - 테이블 생성 시 제약 조건을 통해 실수로 조건에 위배되는 데이터 입력 혹은 중요 데이터 삭제를 방지
- DBMS는 시스템의 갑작스런 장애로부터 사용자가 입력, 수정, 삭제하던 데이터가 반영될 수 있도록 보장하는 기능 제공
- 또한 시스템 다운, 재해 상황에서도 데이터 회복/복구할 수 있는 기능 제공
관계형 데이터 베이스의 연산
합집합 (Union) |
두 개의 테이블을 하나로 합함 중복된 행은 한 번만 조회 |
차집합 (Difference) |
원래 테이블에는 존재하고 다른 테이블에 존재하지 않는 것을 조회 |
교집합 (Intersection) |
두 개의 테이블 간 공통된 것을 조회 |
곱집합 (Catesian product) |
각 테이블에 존재하는 모든 데이터를 조합하여 연산 |
선택 연산 (Selection) |
조건에 맞는 행만 조회 |
투영 연산 (Projection) |
조건에 맞는 속성만 조회 |
결합 연산 (Join) |
여러 테이블의 공통된 속성을 이용해 새로운 테이블을 만듬 |
나누기 연산 (Division) |
기존 테이블에서 나누는 테이블이 가진 속성과 동일한 값을 가지는 행을 추출, 나누는 테이블의 속성을 삭제 후 중복된 행을 제거하려는 연산 |
테이블 TABLE
- 관계형 데이터 베이스의 기본 단위
- 모든 자료는 테이블 형태로 저장됨
- 칼럼과 행의 2차원 구조로 나타냄
- 용어
칼럼 column |
세로 방향으로 이루어진 속성 (더이상 나눌 수 없음) |
행 row |
가로 방향으로 이루어진 데이터 |
정규화 normalization |
테이블을 분할하여 데이터의 정합성을 확보하고 불필요한 중복을 줄이는 프로세스 |
기본 키 primary key |
하나의 테이블에서 유일성, 최소성, not null을 만족하면서 해당 테이블을 대표하는 한 개 이상의 컬럼 |
외래 키 foreign key |
다른 테이블의 기본키를 참조하여 관계를 연결하는 칼럼 |
ERD Entity Relationship Diagram
- 테이블 간 서로의 상관관계를 그림으로 도식화한 것
- 구성 요소: 엔터티, 관계, 속성
- 현실 세계 데이터는 이 3가지 구성 요소로 모두 표현 가능
2. SQL의 종류
SQL
- 관계형 데이터베이스에서 데이터 정의, 조작, 제어하기 위해 사용하는 절차형 언어
- 특정 데이터 집합에서 필요로 하는 데이터 조회, 새로운 데이터 입력/수정/삭제 등 DB와 대화하게 됨
- 데이터 조작어(DML) / 데이터 정의어(DDL) / 데이터 제어어(DCL) / 트랜잭션 제어어(TCL)
Data Manipuliation Language |
SELECT, INSERT, UPDATE, DELETE 데이터를 입력, 수정, 삭제, 조회 |
Data Definition Language |
CREATE, ALTER, DROP, RENAME, TRUNCATE 관계형 데이터베이스의 구조 정의 |
Data Control Language |
GRANT, REVOKE 데이터베이스 사용자에게 객체를 사용할 수 있도록 권한 부여, 회수 |
Transaction Control Language |
COMMIT, ROLLBACK, SAVEPOINT 논리적인 작업 단위를 묶어 적용 혹은 취소 (트랜잭션 제어) |
트랜잭션
데이터베이스의 작업을 처리하는 논리적 연산 단위
하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함됨
원자성 (Atomicity) |
트랜잭션은 분할할 수 없는 최소의 단위이므로, 전부 적용 혹은 전부 취소됨 ALL or NOTHING |
일관성 (Consistency) |
트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 함 트랜잭션 실행 후에도 일관성이 유지되어야 함 |
고립성 (Isolation) |
트랜잭션 실행 중에 생성하는 연산의 중간 결과는 다른 트랜잭션이 접근할 수 없음 부분적 실행 결과를 다른 트랜잭션이 볼 수 없음 |
영속성 (Dutability) |
트랜잭션이 성공적으로 수행되면 결과가 영구적으로 보장됨 |
SQL 문의 실행 순서
파싱 Parsing → 실행 Execution → 인출 Fetch