Step-by-Step

[CS] 데이터베이스 본문

CS공부/기본기술

[CS] 데이터베이스

희주(KHJ) 2023. 11. 4. 16:37

데이터베이스 DB

  • 구조화된 정보 또는 데이터의 조직화된 모음
  • 여러 사람이 공유하여 사용할 목적으로 체계화해 통합 관리하는 데이터의 집합

 

데이터베이스관리시스템 DBMS

  • 데이터베이스를 관리하고 운영하는 소프트웨어
  • 사용자 질의를 처리해주는 다양한 컴파일러 존재
    • DDL 컴파일러, DML 컴파일러, DML 컴파일러 등

 

RDB vs NoSQL

  1. RDB
    • 데이터를 2차원 형태의 테이블로 표현하는 데이터베이스
    • 엄격하게 정해진 스키마에 따라 데이터를 저장하기 때문에 명확한 구조를 보장함
    • 스키마 : DB를 구성하는 데이터 개체, 속성, 관계 등 다양한 제약조건 정의
    • 명확한 스키마가 사용자와 데이터에게 중요한 경우 적절함
    • 수직적인 확장이 가능함 ex) 서버 성능 향상 - CPU 업그레이드
    • 수평적인 확장이 어려움
      • RDBMS : MySQL / Oracle / Maria-DB 등
  2. NoSQL
    • Not Only SQL 의 약자
    • 스키마가 없거나 느슨한 스키마로 데이터 간 자유로운 형태로 데이터를 저장하는 DB
    • 유연하기 때문에 언제든지 데이터를 조정하고 새로운 필드를 추가할 수 있음 
    • 기존 RDB의 한계를 극복하고, 수평적인 확장성 가짐 ex) 트래픽 분산 및 대용량 처리 가능 - 더 많은 서버 추가
    • 정확한 데이터 구조를 알 수 없거나 변경확장될 수 있는 경우 적절함
    • 유연한 스키마를 통해 유연성과 확장성을 가짐

 

 

Key

  • 특정 튜플을 식별할 때 사용하는 속성(의 집합)
  • 검색, 정렬시 튜플을 구분하는 기준이 되는 속성

 

 

Key 종류

이름 내용 조건
기본키(Primary Key) 후보키 중 선태갛여 대표로 삼은 키
유일성과 최소성을 모두 만족시키는 키
개체 무결성 제약 조건을 만족해야 함
후보키 튜플을 유일하게 식별할 수 있는 속성성들의 집합 유일성 : Key로 하나의 튜플을 유일하게 식별
최소성 : 꼭 필요한 속성으로만 구성
대체키 후보키 중 기본키를 제외한 나머지 키 = 보조키  
슈퍼키 유일성은 만족하지만, 최소성을 만족하지 못하는 키  
외래키 다른 릴레이션(테이블)의 기본키를 그대로 참조하는 속성의 집합 참조 무결성 제약 조건을 만족해야 함

 

 

무결성(Integrity)

  • 데이터의 정확성, 일관성
  • 데이터에 결함이 없는 상태, 즉 데이터가 정확하고 일관되게 유지하는 것

 

 

무결성 제약조건(Integrity Constraint)

  • 데이터베이스의 정확성 일관성을 보장하기 위해 저장, 삭제, 수정 등을 제약하기 위한 조건
  • 데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스 상태를 일관되게 유지하는 것

 

 

이름 내용
개체 무결성 각 릴레이션의 기본키를 구성하는 속성은 널(NULL)이나 중복값을 가질 수 없음
참조 무결성  외래키 값은 NULL이거나 참조하는 릴레이션의 기본키 값과 동일해야 함
각 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없음
도메인 무결성 속성들의 값은 정의된 도메인에 속한 값이어야 함
ex) 성별 속성에서 남/여를 제외한 데이터는 제한되어야 함
고유 무결성 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 릴레이션의 각 튜플이 가지는 속성값들은 서로 달라야 함
NULL 무결성 릴레이션의 특정 속성의 값은 NULL이 될 수 없음
키 무결성 각 릴레이션의 최소한 한 개 이상의 키가 존재해야 함

 

 

 

트랜잭션

  • 데이터베이스의 상태를 변환시키기 위해 수행하는 작업의 단위

 

 

트랜잭션 특징 ACID

  1. 원자성 (Atomicity)
    • 트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않아야 함
  2. 일관성 (Consistency)
    • 트랜잭션의 작업 처리 결과는 항상 일관성 있어야 함
  3. 독립성 (Isolation)
    • 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없음
  4. 지속성 (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