Step-by-Step
[CS] 데이터베이스 본문
데이터베이스 DB
- 구조화된 정보 또는 데이터의 조직화된 모음
- 여러 사람이 공유하여 사용할 목적으로 체계화해 통합 관리하는 데이터의 집합
데이터베이스관리시스템 DBMS
- 데이터베이스를 관리하고 운영하는 소프트웨어
- 사용자 질의를 처리해주는 다양한 컴파일러 존재
- DDL 컴파일러, DML 컴파일러, DML 컴파일러 등
RDB vs NoSQL
- RDB
- 데이터를 2차원 형태의 테이블로 표현하는 데이터베이스
- 엄격하게 정해진 스키마에 따라 데이터를 저장하기 때문에 명확한 구조를 보장함
- 스키마 : DB를 구성하는 데이터 개체, 속성, 관계 등 다양한 제약조건 정의
- 명확한 스키마가 사용자와 데이터에게 중요한 경우 적절함
- 수직적인 확장이 가능함 ex) 서버 성능 향상 - CPU 업그레이드
- 수평적인 확장이 어려움
- RDBMS : MySQL / Oracle / Maria-DB 등
- NoSQL
- Not Only SQL 의 약자
- 스키마가 없거나 느슨한 스키마로 데이터 간 자유로운 형태로 데이터를 저장하는 DB
- 유연하기 때문에 언제든지 데이터를 조정하고 새로운 필드를 추가할 수 있음
- 기존 RDB의 한계를 극복하고, 수평적인 확장성 가짐 ex) 트래픽 분산 및 대용량 처리 가능 - 더 많은 서버 추가
- 정확한 데이터 구조를 알 수 없거나 변경확장될 수 있는 경우 적절함
- 유연한 스키마를 통해 유연성과 확장성을 가짐
Key
- 특정 튜플을 식별할 때 사용하는 속성(의 집합)
- 검색, 정렬시 튜플을 구분하는 기준이 되는 속성
Key 종류
이름 | 내용 | 조건 |
기본키(Primary Key) | 후보키 중 선태갛여 대표로 삼은 키 유일성과 최소성을 모두 만족시키는 키 |
개체 무결성 제약 조건을 만족해야 함 |
후보키 | 튜플을 유일하게 식별할 수 있는 속성성들의 집합 | 유일성 : Key로 하나의 튜플을 유일하게 식별 최소성 : 꼭 필요한 속성으로만 구성 |
대체키 | 후보키 중 기본키를 제외한 나머지 키 = 보조키 | |
슈퍼키 | 유일성은 만족하지만, 최소성을 만족하지 못하는 키 | |
외래키 | 다른 릴레이션(테이블)의 기본키를 그대로 참조하는 속성의 집합 | 참조 무결성 제약 조건을 만족해야 함 |
무결성(Integrity)
- 데이터의 정확성, 일관성
- 데이터에 결함이 없는 상태, 즉 데이터가 정확하고 일관되게 유지하는 것
무결성 제약조건(Integrity Constraint)
- 데이터베이스의 정확성 일관성을 보장하기 위해 저장, 삭제, 수정 등을 제약하기 위한 조건
- 데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스 상태를 일관되게 유지하는 것
이름 | 내용 |
개체 무결성 | 각 릴레이션의 기본키를 구성하는 속성은 널(NULL)이나 중복값을 가질 수 없음 |
참조 무결성 | 외래키 값은 NULL이거나 참조하는 릴레이션의 기본키 값과 동일해야 함 각 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없음 |
도메인 무결성 | 속성들의 값은 정의된 도메인에 속한 값이어야 함 ex) 성별 속성에서 남/여를 제외한 데이터는 제한되어야 함 |
고유 무결성 | 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 릴레이션의 각 튜플이 가지는 속성값들은 서로 달라야 함 |
NULL 무결성 | 릴레이션의 특정 속성의 값은 NULL이 될 수 없음 |
키 무결성 | 각 릴레이션의 최소한 한 개 이상의 키가 존재해야 함 |
트랜잭션
- 데이터베이스의 상태를 변환시키기 위해 수행하는 작업의 단위
트랜잭션 특징 ACID
- 원자성 (Atomicity)
- 트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않아야 함
- 일관성 (Consistency)
- 트랜잭션의 작업 처리 결과는 항상 일관성 있어야 함
- 독립성 (Isolation)
- 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없음
- 지속성 (Durability)
- 트랜잭션이 성공적으로 완료되면, 결과가 영구적으로 반영되어야 함
인덱스(INDEX)
- 데이터베이스의 검색 속도를 향상시키는 방법
- 추가적인 쓰기와 저장공간을 사용함
- 데이터 양이 많고 검색이 변경보다 빈번한 경우 사용
- 장점 - 검색 속도 향상
- 단점 - 데이터를 변경(추가/삭제/수정)하는 경우 인덱스도 변경하고 정렬해야 함으로 성능을 저하시킴
뷰(View)
- 허용된 데이터를 제한적으로 보여주기 위해 하나 이상의 테이블에서 유도된 가상 테이블
- 장점 - 물리적인 위치가 없으니 리소스를 낭비하지 않음
- 단점 - 해당 뷰와 관련된 테이블을 삭제함녀 뷰도 함께 삭제 (테이블 의존적) / 큰 테이블에 대해 뷰를 만들 때 더 많은 메모리 사용
이상 현상(Anomaly)
- 일부 속성들의 종속으로 인해 데이터의 중복이 발생하여 테이블 조작시 발생하는 현상
- 삽입 이상 : 데이터를 삽입할 때 원하지 않은 값들로 인해 삽입되지 않는 현상
- 삭제 이상 : 튜플을 삭제할 때 다른 값들도 삭제되는 현상
- 갱신 이상 : 데이터의 일부만 갱신되어 불일치성이 생기는 현상
정규화
- 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정
- 목표 : 테이블 간 중복 데이터를 허용하지 않는 것 → 무결성 유지 / DB 저장용량 줄임
- 1NF : 테이블 속성값이 원자값을 갖도록 분리
- 2NF : 완전 함수 종속을 만족하도록 테이블 분해 & 부분종속 제거 (기본키의 부분집합이 결정자가 되어서는 안됨)
- 3NF : 기본키를 제외한 속성들간 이행종속 제거
- BCNF : 모든 결정자가 후보키가 되도록 테이블 분리
- 반정규화 : 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발 및 운영의 단순화를 위해 중복/통합/분리하는 데이터 모델링 기법
Lock
- 트랜잭션이 동시에 수행될때 일관성을 해치지 않도록 데이터 접근을 제어하는 DBMS 기능
'CS공부 > 기본기술' 카테고리의 다른 글
[CS] 운영체제 (0) | 2023.11.15 |
---|---|
[CS] 메모리 (1) | 2023.11.13 |
[CS] 객체지향 프로그래밍 (0) | 2023.11.04 |
Comments