1. 데이터베이스 정의
(1) 통합된 데이터: 자료의 중복 배제
(2) 저장된 데이터: 저장 매체에 저장된 데이터
(3) 운영 데이터: 조작의 업무를 수행하는 데 필요
(4) 공용 데이터: 여러 시스템들이 공동으로 사용
▶ 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 집합이다.
2. 데이터베이스 특징
(1) 실시간 접근성: 실시간 응답이 가능해야 함
(2) 계속적인 변화: 항상 최신의 데이터를 유지해야 함
(3) 동시 공용: 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 함
(4) 내용 참조: 사용자가 요구하는 데이터 내용으로 데이터를 찾아야 함.
3. DBMS, RDBMS, NoSQL
(1) 데이터베이스 관리 시스템(DBMS)
- 데이터 관리의 복잡성을 해결하는 동시에 데이터 추가, 변경, 검색, 삭제 및 백업 등의 기능을 지원하는 소프트웨어
(2) 관계형 데이터베이스(RDBMS)
- 관계형 모델을 기반으로 하는 가장 보편화된 데이터베이스 관리 시스템
- 구조가 명확하고 변경될 여지가 없는 데이터에 사용 용이
- Oracle, SQL Server, MySQL, Maria DB 등
(3) NoSQL
- RDBMS와 다른 DBMS를 정의하기 위한 용어로, 스키마가 필요하지 않고 조인 연산을 사용할 수 없으며, 수평적으로 확장이 가능한 DBMS
- 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장될 수 있는 경우 사용 적합(ex 비정형)
- MongoDB, Redis, HBase 등
+ NoSQL 특성: BASE(Basically Available, Soft-State, Eventually Consistency)
(1) Basically Available: 언제든지 데이터에 접근 가능
(2) Soft-State: 노드의 상태는 외부에서 전송된 정보를 통해 결정
(3) Eventually Consistency: 일정 시간이 지나면 데이터의 일관성이 유지되는 속성
4. 데이터베이스 언어
(1) 데이터 정의어(DDL: Data Definition Language): 데이터베이스의 구조를 정의, 수정, 삭제하는 언어(CREATE, ALTER, DROP)
(2) 데이터 조작어(DML: Data Manipulation Language): 데이터베이스의 자료를 검색, 삽입, 수정, 삭제하는 언어(SELECT, INSERT, UPDATE, DELETE)
(3) 데이터 제어어(DCL: Data Control Language): 데이터에 대한 무결성 유지, 병행 수행 제어 등을 하는 언어(COMMIT, ROLLBACK, GRANT, REVOKE)
5. 인덱스
- 검색 연산의 최적화를 위해 데이터베이스 내 열에 대한 정보를 구성한 데이터 구조이다.
- 전체 데이터의 검색 없이 정보에 대한 빠른 조회가 가능하다.
6. 트랜젝션
- 작업들을 모두 처리하거나 처리하지 못할 경우 이전 상태로 복구해 작업의 일부만 적용되는 현상이 발생하지 않도록 하는 기능
+ 트랜잭션 특징(ACID)
(1) 원자성(Atomicity): 작업이 모두 반영되거나 전혀 반영되지 않아야 함.
(2) 일관성(Consistency): 실행이 완료되면 항상 일관성이 유지되어야 함
(3) 독립성(Isolation): 둘 이상의 트랜잭션이 동시에 실행될 경우 서로의 연산에 침범할 수 없음
(4) 영속성(Durability): 완료된 결과는 영구적으로 반영되어야 함.
7. 뷰
- 사용자에게 접근이 허용된 데이터를 제한적으로 보여주기 위해 하나 이상의 테이블에서 유도된 가상 테이블이다.
- 가상 테이블이기 떄문에 물리적으로 구현되어 있지 않다
- 장점
(1) 논리적 데이터 독립성을 제공한다.
(2) 데이터 관리를 간단하게 해준다.
(3) 접근 제어를 통한 자동 보안이 제공된다
- 단점
(1) 독립적인 인덱스를 가질 수 없다.
(2) 뷰의 정의를 변경할 수 없다.
(3) 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 있다.
8. 이상현상
- 이상 현상은 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상이다.
(1) 삽입 이상
정보 저장 시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우
(2) 삭제 이상
정보 삭제 시 원치 않치 않는 다른 정보가 같이 삭제되는 경우
(3) 갱신 이상
중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우
9. 정규화, 비정규화
- 정규화
: 데이터의 중복성을 제거해 이상 현상을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정이다.
(1) 1차 정규화
테이블 내의 속성값은 원자값을 가지고 있어야 한다.
(2) 2차 정규화
부분 함수 종속 관계를 제거해야 한다.
(3) 3차 정규화
이행 함수 종속을 제거해야 한다.
(4) 보이스-코드 정규화
결정자 후보 키가 아닌 함수 종속은 제거해야 한다.
(5) 4차 정규화
다중 값 종속을 제거한다.
(6) 5차 정규화
조인 종속을 제거한다.
- 반정규화(비정규화, 역정규화)
: 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법이다.
'CS' 카테고리의 다른 글
| CS 공부 - 자료구조 (0) | 2022.07.09 |
|---|---|
| CS 공부 - 자바(JAVA) (0) | 2022.07.07 |
| 스택/큐 (자바/java) (0) | 2021.05.19 |
| 완전탐색 (0) | 2021.05.07 |