[DB] DB의 기초

do_it·2025년 10월 31일

database

목록 보기
1/11

1. DB & DBMS

1-1. DB(Database)

: 데이터를 효율적으로 저장하고 관리할 수 있도록 설계된 시스템

  • ⇒ 데이터를 체계적으로 저장하고 관리하는 논리적 집합
  • 목표: 데이터의 저장, 검색, 갱신을 효과적 / 효율적으로 처리하기 위함.

1-2. DBMS (Database Management System)

데이터를 효율적으로 관리하고, 데이터를 안전하게 저장하며, 여러 사용자들이 데이터베이스에 접근할 수 있도록 제어 / 관리를 수행하는 소프트웨어

  • ⇒ 데이터베이스를 생성, 관리, 조작할 수 있게 해주는 소프트웨어
  • DB를 직접 관리하지 않고, DBMS가 중간에서 요청을 처리함.
  • DBMS는 데이터의 CRUD를 효율적이고 안전하게 수행함.
  • 목표: 데이터베이스 내의 데이터를 효율적으로 관리하고, 이를 손쉽게 조작하고, 다수의 사용자가 동시에 데이터를 처리할 수 있도록 동시성 제어를 제공함.

CRUD

데이터베이스에서 데이터를 다룰 떄 수행하는 4가지 기본 작업

연산SQL 명령어의미예시
C (Create)INSERT새 데이터 추가INSERT INTO employees VALUES (...);
R (Read)SELECT데이터 조회SELECT * FROM employees;
U (Update)UPDATE기존 데이터 수정UPDATE employees SET salary = 5000 WHERE id = 1;
D (Delete)DELETE데이터 삭제DELETE FROM employees WHERE id = 1;


2. SQL

SQL, Structured Query Language

DBMS에게 지시를 내리는 명령어의 전체 집합

크게 데이터 정의, 조작, 제어, 트랜젝션 관리 기능 포함

분류역할SQL 명령어 예시
DDL데이터 구조 정의CREATE, ALTER, DROP, TRUNCATE
DML데이터 조작SELECT, INSERT, UPDATE, DELETE
DCL권한 제어GRANT, REVOKE
TCL트랜잭션 제어COMMIT, ROLLBACK, SAVEPOINT
  • DDL ⇒ 설계도를 그리는 도구
  • DML ⇒ 실제 데이터 작업 도구
  • DCL ⇒ 권한 관리 도구
  • TCL ⇒ 실행 기록 관리 도구

2-1.DDL (Data Definition Language)

데이터 구조를 정의하는 언어

스키마와 테이블 구조를 만드는 역할을 수행함.

명령어설명예시
CREATE데이터베이스, 테이블, 인덱스 생성CREATE TABLE employees (...);
ALTER테이블 구조 변경ALTER TABLE employees ADD COLUMN age INT;
DROP테이블, DB, 인덱스 삭제DROP TABLE employees;
TRUNCATE데이터 전체 삭제 (구조 유지)TRUNCATE TABLE employees;
  • DB의 설계도를 다루는 부분으로, 스키마 관리 계층에 속함.
  • 데이터 구조 변경 작업 (데이터 조작 X)
  • 자동 커밋 (즉시 반영)
  • 롤백 불가능

2-2. DML (Data Manipulation Language)

데이터를 조작하는 언어

CRUD와 직접적으로 관련 있음

명령어설명예시
INSERT새 데이터 추가INSERT INTO employees VALUES (...);
SELECT데이터 조회SELECT * FROM employees;
UPDATE데이터 수정UPDATE employees SET salary=6000 WHERE id=1;
DELETE데이터 삭제DELETE FROM employees WHERE id=1;
  • DBMS 내부에서 데이터 조작 계층에 속함. (Data Manipulation Layer)
  • TCL과 함꼐 사용 가능 (COMMIT, ROLLBACK)

2-3. DCL (Data Control Language)

데이터 접근 권한을 제어하는 언어
사용자, 권한, 보안 관련 제어를 담당

명령어설명예시
GRANT사용자에게 권한 부여GRANT SELECT ON employees TO user1;
REVOKE권한 회수REVOKE SELECT ON employees FROM user1;

2-4. TCL (Transaction Control Language)

트랜젝션 단위를 제어하는 언어

데이터 조작(DML)의 변경 시점을 관리

명령어설명예시
COMMIT변경사항 확정COMMIT;
ROLLBACK변경사항 취소ROLLBACK;
SAVEPOINT중간 저장점 설정SAVEPOINT pointA;
SET TRANSACTION트랜잭션 속성 설정SET TRANSACTION READ ONLY;
  • TCL은 DBMS의 트랜잭션 관리 계층에 속함.
  • DML과 함께 사용됨.
  • DDL은 자동 커밋이므로 TCL의 영향을 받지 않음.


3. 테이블 & 스키마

3-1. DB 테이블

: DB에서 데이터를 구조적으로 저장하는 기본 단위

각 테이블은 하나의 엔티티를 나타내며,
행 & 열로 이루어져 있음.

  • 행 (Row, Tuple, Record)
    테이블에서 하나의 레코드 / 튜플을 나타냄.
    각 행은 테이블 내에서 하나의 개별 데이터를 나타내며, 여러 열(속성)을 포함함.
    (학생 테이블 - 한 명의 학생이 하나의 행을 차지)
  • 열 (Column, Attribute)
    테이블에서 데이터를 속성 단위로저장하는 부분
    각 열은 특정 속성의 데이터를 저장함.
    (학생 테이블 - 이름, 나이, 학번)

3-2. 스키마

스키마란?

: 테이블의 구조와 제약 조건을 정의한 설계도

  • DB내에 포함될 데이터의 구조, 테이블, 속성(필드), 관계, 제약 조건 등을 정의하는 것
  • 스키마 설계는 DB가 어떻게 구성될지에 대한 논리적 구조를 정의하며, DB 설계에서 매우 중요한 단계
  • 스키마는 DB를 효율적이고 일관성 있게 관리하고 무결성을 보장하기 위해 살용됨
  • 스키마 & DB
    스키마 ⇒ 데이터의 구조적 설계도
    데이터베이스 ⇒ 그 설계대로 채워진 실제 데이터 공간

스키마의 구성 요소

  • 테이블 구조
    각 테이블의 칼럼(속성)과 데이터 타입
  • 테이블 간의 관계
    1:1, 1:N, M:N 등
  • 제약 조건
    Primary Key, Foreign Key, Unique, Not Nul
  • 뷰(View), 인덱스(Index), 프로시저(Stored Procedures)

스키마 3계층

사용자, 설계자, 시스템의 관점을 분리하여 DB를 설계하고 관리하는 표준적인 방식

스키마를 3단계로 나누는 가장 큰 이유는 데이터 독립성을 확보하기 위함임.

  • 논리적 데이터 독립성
    개념 스키마가 변경되어도, 기존 외부 스키마는 영향을 받지 않는 것을 의미함.
    DB의 논리적 구조가 확장되거나 변경되어도, 기존에 사용하던 프로그램 코드를 수정할 필요가 없음.
  • 물리적 데이터 독립성
    내부 스키마가 변경되어도, 개념 스키마와 외부 스키마는 영향을 받지 않는 것을 의미함.
    DB 관리자가 성능 튜닝을 위해 물리적 구조를 바꿔도, 사용자나 애플리케이션은 동일하게 DB를 사용할 수 있음.
  1. 외부 스키마 (External Schema)

    [관점] 최종 사용자 / 응용 프로그램

    개별 사용자나 특정 애플리케이션이 필요로 하는 DB의 일부를 정의한 것

    전체 DB 중 사용자가 보게 될 창 / 뷰로 생각할 수 있음.

    e.g. 쇼핑몰 DB) 고객 - 자신의 주문 내역만 볼 수 있고, 배송팀- 배송지 주소와 상품명만 볼 수 있음.

    • 하나의 DB에 여러 개의 외부 스키마가 존재할 수 있음
    • DB의 전체 구조를 숨기고, 사용자가 필요한 부분에만 간단하게 접근할 수 있게 함.
    • 서브 스키마라고도 불림
  2. 개념 스키마 (Conceptual Schema)

    [관점] DBA(DB 관리자 / 설계자)관맂

    DB의 전체적인 논리적 구조를 정의한 것

    DB에 무엇이 저장되는지 나타냄
    : 어떤 엔티티가 있고, 어떤 속성을 가지며, 개체들 간 어떤 관계를 가지는지?

    스키마 / ERD로 그리는 대상

    • DB에 단 하나만 존재함
    • 데이터의 무결성, 보안 규칙, 제약 조건 등 모두 이곳에 정의됨
    • 물리적 저장 방식(내부 스키마)이나 개별 사용자 뷰(외부 스키마)와는 독립적임
  3. 내부 스키마 (Internal Schema)

    [관점] DBMS / 시스템 프로그래머

    데이터가 하드디스크와 같은 물리적 저장 장치에 실제로 어떻게 저장되는지 정의한 것

    데이터의 물리적인 저장 구조, 파일 구성 방식, 인덱스 생성 방법, 데이터 압축 등을 다룸

    DB의 성능, 효율성에 직접적인 영향을 줌

    • DB에 단 하나만 존재함
    • 물리적 스키마(Physical Schcema)라고도 부름
    • 개념 스키마와 논리적 구조가 실제로 어떻게 구현될지 구체적으로 명시함

3-3. 스키마 설계

스키마 설계는 데이터의 논리적 관계와 제약을 설계하는 과정임.

  1. 데이터 무결성 & 정확성 확보
  • PK 정의
    모든 테이블의 각 행은 고유하게 식별할 수 있는 기본 키를 가져야 함.
  • 정확한 데이터 타입 설정
    데이터를 가장 잘 표현할 수 있는 타입을 사용하여야 함.
    e.g. 나이 (INT)
  • 제약조건 적극 활용
    NOT NULL, UNIQUE, FK,…
  1. 데이터 중복 최소화 (정규화, Normalization)
  • 정규화 (Normalization)
    중복된 데이터를 최소화 & 데이터 무결성을 유지하기 위해 데이터를 적절히 분할하는 과정
    보통 1NF (제1정규형)부터 5NF(제5정규형)까지 여러 단계로 나뉘어 데이터 구조를 최적화
    정규화는 데이터 중복을 피하고 갱신 / 삭제 이상 문제를 예방하는 데 유리하지만, 조인 연산이 많아져서 성능에 영향을 미칠 수 있음.
    • 1NF: 각 컬럼에 원자값(Atomic Value)만을 포함하여 데이터를 중복하지 않도록 함.
    • 2NF: 부분 종속성을 제거하여 데이터 무결성을 강화함.
    • 3NF: 이행적 종속성을 제거하여 데이터의 의존 관계를 단순화함.
    • BCNF(보이스-코드 정규형): 3NF보다 한 단계 더 엄격한 정규화
  1. 명확성 & 일관성 유지
  • 일관된 이름 규칙 (Naming Convention)
    테이블 이름: 복수형 / 단수형 중 하나로 통일 (복수형이 일반적)
    컬럼 이름: 보통 snake_case
    직곽적인 이름 & 주석 추가 (설명)
  1. 성능 & 확장성 고려

    데이터와 사용자가 많아졌을 때도 시스템이 원활하게 동작하도록 설계해야 함.

  • 적절한 인덱스 설계
    WHERE 절에서 자주 조회되거나, JOIN의 연결고리가 되는 컬럼에서는 인덱스를 생성하여 조회속도를 향상시킴.
    단 ,인덱스는 INSERT / UPDATE 성능을 저하시킬 수 있으므로 무분별한 사용 X
  • 반정규화의 전략적 사용
    정규화(원칙 2)를 철저하게 지킬 경우 JOIN이 많아져 성능이 저하될 수 있음.
    조회 성능을 높이기 위해 의도적으로 중복을 허용하거나 테이블을 합침. (반정규화)
    반정규화는 정규화를 충분히 거친 후 성능상 이점이 확실할 때만 선택적으로 적용되어야 함.

0개의 댓글