DataBase 기본 개념

rami·2024년 1월 28일
0

Today I Learned

목록 보기
31/34

DB (DataBase)

일정한 규칙, 규약을 통해 구조화 되어 저장되는 데이터의 모음입니다.
데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있습니다.

DBMS (DataBase Management System)

데이터베이스를 제어, 관리하는 통합 시스템을 의미합니다.
(ex. Oracle, MySQL, PostgreSQL, MariaDB...)

Entity

여러 개의 속성을 지닌 명사를 의미합니다.
(ex. 회원이라는 엔터티는 이름, 아이디, 주소, 전화번호의 속성을 갖습니다)

Relation

정보를 구분하여 저장하는 기본 단위입니다.
엔터티에 관한 데이터를 릴레이션 하나에 담아서 관리합니다.
관계형 데이터베이스에서는 '테이블'이라고 하며, NoSQL 데이터베이스에서는 '컬렉션'이라고 합니다.

속성

릴레이션에서 관리하는, 구체적이고 고유한 이름을 갖는 정보입니다.

도메인

릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합을 말합니다.

member 테이블

속성 : 이름, 아이디, 주소, 폰 번호
필드 : name, Id, address, phonenumber

필드는 타입을 갖습니다. (ex. 숫자타입, 문자타입, 날짜타입...)

  • 문자타입
    • CHAR : 고정 길이 문자열
    • VARCHAR : 가변 길이 문자열

테이블 간 관계

유일성 : 중복되는 값이 없습니다.
최소성 : 필드를 조합하지 않고 최소 필드만 써서 키를 형성합니다.

기본기 (Primary Key) : 유일성과 최소성을 만족하는 키입니다.
외래키 (Foreign Key) : 다른 테이블의 기본키를 그대로 참조하는 값으로 개체와의 관계를 식별하는데 사용합니다.


정규화 과정

릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리 하는 과정입니다.

  • 제1정규형
    릴레이션의 모든 도메인이 더이상 분해될 수 없는 원자 값만으로 구성되어야 합니다. (반복 집합 제거)

  • 제2정규형
    부분 함수의 종속성을 제거한 형태를 말합니다. 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것을 말합니다.

  • 제3정규형
    기본키가 아닌 모든 속성이 이행적 함수 종속을 만족하지 않는 상태를 말합니다.

  • 보이스/코드 정규형(BCNF)
    결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태를 말합니다.


트랜잭션

  • 원자성 (atomicity) : 트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장하는 특징입니다.

    • 커밋 (commit) : 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어.
      update, insert, delete의 쿼리가 하나의 트랜잭션 단위로 수행되고 이후에 db에 영구 저장됩니다.
    • 롤백 (rollback) : 트랜잭션으로 처리한 하나의 묶음 과정을 일언가ㅣ 전으로 돌리는 취소를 말합니다.
  • 일관성 (consistency) : 허용된 방식으로만 데이터를 변경해야 하는 것을 의미합니다.

  • 격리성 (isolation) : 트랜잭션 수행 시 서로 끼어들지 못하는 것을 말합니다.

    • 격리 수준 : SERIALIZABLE > REPEATABLE_READ > READ_COMMITTED (가장 많이 사용되는 격리 수준. 커밋 완료된 데이터에 대해서만 조회 허용) > READ_UNCOMMITTED
  • 지속성 (durability) : 성공적으로 수행된 트랜잭션을 영원히 반영되어야 함을 의미합니다.

무결성

데이터의 정확성, 일관성, 유효성을 유지하는 것을 말합니다.


데이터베이스의 종류

  • 관계형 데이터베이스 (RDBMS)
    행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 가리키며 SQL 언어를 써서 조작합니다.

인덱스

인덱스는 보통 B-트리라는 자료구조로 이루어져 있습니다.

  • 루트 노드
  • 브랜치노드
  • 리프 노드

인덱스를 설정하면 테이블 안에 찾고자 하는 데이터를 빠르게 찾을 수 있습니다. 효율적인 단계를 거쳐 모든 요소에 접근할 수 있는 균형잡힌 트리구조와 트리 깊이의 대수확장성 때문입니다. 대수확장성이란 트리 깊이가 리프노드 수에 비해 매우 느리게 성장하는 것을 의미합니다.


조인 (Join)

조인이란 하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것을 말합니다.


참고 사이트 : https://sql-joins.leopard.in.ua/

profile
앞으로 나아가는 사람

0개의 댓글