데이터베이스(database)란
여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합
▶︎ 데이터(정보)의 집합
DBMS란
데이터베이스를 관리하기 위한 응용 프로그램
▶︎ DBMS는 다른 응용 프로그램과 다르게 사용자와 직접 상호작용하기보다는 개발자가 만든 프로그램과 상호작용하며 실행됨
SQL(Strctured Query Language)
: RDBMS에서 데이터를 조작하고 관리하기 위한 언어├─ DBMS
├─ RDBMS(관계형 데이터베이스 관리 시스템)
└─ MySQL, Oracle, Maria DB, PostgreSQL, SQLite, Microsoft SQL Server 등
└─ NoSQL(NoSQL 데이터베이스 관리 시스템)
└─ MongoDB, Redis 등
├─ SQL 종류
├─ DDL: 데이터 정의
├─ CREATE: 데이터베이스, 인덱스, 뷰, 테이블 등 데이터베이스 객체 생성
├─ ALTER: 데이터베이스 객체 갱신
├─ DROP: 데이터베이스 객체 삭제
└─ TRUNCATE: 테이블 구조 유지한 채 모든 레코드 삭제
├─ DML: 데이터 조작
├─ SELECT: 테이블 레코드 조회
├─ INSERT: 테이블 레코드 삽입
├─ UPDATE: 테이블 레코드 갱신
└─ DELETE: 테이블 레코드 삭제
├─ DCL: 데이터 제어
├─ COMMIT: 데이터베이스에 작업 반영
├─ ROLLBACK: 작업 이전의 상태로 되돌림
└─ SAVEPOINT: 롤백의 기준점 설정
└─ TCL: 트랜잭션 제어
├─ GRANT: 사용자에게 권한 부여
└─ REVOKE: 사용자로부터 권한 회수
❓ 운영체제의 파일 시스템을 활용하면 데이터를 파일과 디렉터리 형태로 관리할 수 있는데 왜 파일 시스템 대신 데이터베이스를 이용하는가?
▶︎ 파일 시스템은 데이터를 단순 나열해서 저장하는 형태이므로 아래와 같은 불편함이 존재한다!
ex) 학과.txt과 학생.txt학과 이름=컴퓨터과학, 학과 코드=123, 학생=A, B, ..., 학과 이름=경영힉, 학과 코드=234, 학생=C, ..., 학과 이름=경제학, 학과 코드=124, 학생=D, ...,
학생 이름=A, 나이=27, 사는 곳=서울, 학과=컴퓨터과학, 학번=1234 학생 이름=B, 나이=23, 사는 곳=인천, 학과=경영학, 학번=2345 학생 이름=C, 나이=-1, 사는 곳=경기, 학과=경제학, 학번=4567 학생 이름=D, 나이=22, 사는 곳=부산, 학과=컴퓨터과학, 학번=7346
1. 데이터 일관성 및 무결성 제공이 어렵다.
2. 불필요한 중복 저장이 많아짐
3. 데이터 변경 시 연관 데이터 변경이 어려움
4. 정교한 검색 어려움
5. 백업 및 복구가 어려움
데이터베이스에는 다양한 속성을 가진 독립적 객체들이 저장될 수 있음
엔티티(entity)
: 독립적으로 존재할 수 있는 객체, 즉 어떠한 특성을 가진 대상
속성(attribute)
: 엔티티의 특성
엔티티 집합
: 같은 속성을 공유하는 개별 엔티티들의 묶음
도메인
: 엔티티 속성이 가질 수 있는 값의 집합
테이블(표)
: RDBMS에서 엔티티 집합을 나타내는 형태
레코드(record)
: 데이터베이스에 기록된 각각의 엔티티, 즉 개별엔티티필드
: 데이터베이스에 저장된 엔티티 속성차수(degree)
: 필드의 수카디날리티(cardinality)
: 한 필드에 대한 고유 값의 수컬렉션
: NoSQL DBMS 일종인 MongoDB에서의 엔티티 집합
스키마란?
데이터베이스에 저장되는 레코드의 구조와 제약 조건을 정의한 것으로, 레코드가 지켜야 할 틀
트랜잭션이란?
데이터베이스와의 논리적 상호작용의 단위, 즉 데이터베이스가 처리하는 작업의 단위
- 초당 트랜잭션(TPS) 지표로 데이터베이스 작업 성능 나타냄
원자성(Atomicity)
일관성(Consistency)
격리성(Isolation)
지속성(Durability)
회복 메커니즘
이 구현되어 있음