데이터베이스
- 비 휘발성 저장장치에 저장되는 데이터의 집합이다
- 데이터베이스의 특징에는 실시간 접근성, 계속적인 변화, 동시공유 내용에 따른 참조가 있다
데이터베이스 특징
- 실시간 접근성 : 실시간 처리에 의한 응답이 가능해야 한다
- 계속적인 변화 : 데이터베이스의 상태는 동적이기 때문에 새로운 데이터의 삽입으로 최신의 데이터를 유지해야 한다
- 동시 공용 : 데이터베이스는 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다
- 내용에 의한 참조 : 데이터베이스에 있는 데이터를 참조할 때 사용자가 요구하는 데이터 내용으로 데이터를 찾는다
DBMS
사용자의 요구에 따라 정보를 생성하고 데이터베이스를 관리하는 소프트웨어이다
필수 기능으로는 정의, 조작, 제어가 있다
정의 : 데이터베이스에 저장될 데이터의 형과 주고에 대한 정의, 이용방식, 제약 조건 등을 명시하는 기능이다
조작 : 데이터를 체계적으로 처리하기 위해 사용자와 데이터베이스 사이의 인터페이스 수단을 제공하는 기능이다
제어기능
- 무결성이 유지되도록 제어해야 한다
- 데이터 접근에 대한 보안을 유지하고 권한을 검사해야한다
- 여러 사용자가 동시에 접근하여 데이터를 처리할 때 정확성 유지를 위해 병행제어를 할 수 있어야 한다
스키마(Schema)
데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다
사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마(저장 스키마)로 나누어진다
-> 일반적으로 스키마라고 하면 개념 스키마를 의미한다
RDBMS
데이터베이스를 관계형 모델로 관리하는 소프트웨어이다
정규화
종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작게 쪼갠 스키마로 만들어 가는 과정이다
데이터베이스의 논리적 설계 단계에서 수행한다
정규화된 데이터 모델은 일관성, 정확성, 단순성, 비중복성, 안정성 등을 보장한다
장점 : 수준이 높을수록 유연한 데이터 구축이 가능하고 데이터의 정확성이 높아진다
단점 : 물리적 접근이 복잡하고 많은 조인으로 인해 조회 성능이 저하된다
정규화의 원칙
- 정보의 무손실이 있어서는 안된다
- 독립된 관계성은 하나의 독립된 관계로 분리시켜 표현해야 한다
- 데이터의 중복성이 감소되어야 한다
반정규화
정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로, 의도적으로 정규화 원칙을 위배한다
장점 : 시스템 성능이 향상되고, 관리효율성이 증가한다
단점 : 데이터의 일관성 및 정합성이 저하될 수 있다
과도한 반정규화는 오히려 성능을 저하시킬 수 있다
인덱스
데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조이다
레코드의 삽입과 삭제가 수시로 일어나는 경우, 인덱스의 개수를 최소로 하는것이 효율적이다
데이터의 정의어(DDL)을 이용하여 사용자가 생성, 변경, 제거할 수 있다
인덱스 설계시 고려사항
- 새로 추가되는 인덱스는 기존 경로에 영향을 미칠 수 있다
- 인덱스를 지나치게 많이 만들면 오버헤드가 발생한다
- 인덱스와 테이블 데이터의 저장 공간이 분리되도록 설계한다
**오버헤드 : 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간
뷰(View)
사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된
이름을 가진 가상테이블이다
-> 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 존재하는 것으로 간주된다
데이터 보정작업, 처리 과정 시험 등 임시적인 작업을 위한 용도로 활용된다
장점 : 논리적 데이터 독립성을 제공한다. 데이터 관리를 간단하게 해준다.
단점 : 독립적인 인덱스를 가질 수 없다, 정의를 변경할 수 없다
SQL
국제 표준 데이터베이스 언어로 관계형 데이터베이스를 지원하는 언어로 채택된다
DDL, DML, DCL로 분류된다
SQL의 분류
DDL (Data Define Language)
논리적 데이터 구조와 물리적 데이터 구조를 정의한다
데이터베이스 관리자나 설계자가 사용한다
DDL 유형
명령어 | 기능 |
CREATE | SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의한다 |
ALTER | TABLE에 대한 정의를 변경하는데 사용한다 |
DROP | SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제한다 |
DML (Data Manipulation Language)
사용자가 응용 프로그램이나 명령어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용되는 언어이다
데이터베이스 사용자와 관리 시스템 간의 인터페이스를 제공한다
DML 유형
명령어 | 기능 |
SELET | 테이블에서 조건에 맞는 데이터를 검색한다 |
INSERT | 테이블에 새로운 데이터를 삽입한다 |
DELETE | 테이블에서 조건에 맞는 데이터를 삭제한다 |
UPDATE | 테이블에서 조건에 맞는 데이터의 내용을 변경한다 |
DCL (Data Control Language)
데이터의 보안, 무결성, 병행 수행 제어 등을 정의하는데 사용된다
데이터베이스 관리자가 데이터 관리를 목적으로 사용한다
DCL 유형
명령어 | 기능 |
COMMIT | 명령에 의해 수행된 결과를 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을관리자에게 알려준다 |
ROLLBACK | 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구한다 |
GRANT | 데이터베이스 사용자에게 사용 권한을 부여한다 |
REVOKE | 데이터베이스 사용자의 사용 권한을 취소한다 |
'백엔드 > Database' 카테고리의 다른 글
TIL 정리_116(Oracle 문법) (0) | 2022.07.05 |
---|---|
TIL 정리_114(SQL 문법/ORACLE) (0) | 2022.07.01 |
TIL 정리_55(인덱스) (0) | 2022.04.12 |
TIL 정리_44 (0) | 2022.03.31 |
TIL 정리_43(Oracle) (0) | 2022.03.30 |