DBMS (Database Management System)란?

DBMS는 데이터베이스(Database)를 생성, 관리 및 조작하기 위해 사용하는 소프트웨어 시스템이다. 데이터를 효율적으로 저장하고, 검색하며, 관리할 수 있도록 도와준다.


DBMS의 주요 기능

  1. 데이터 정의 (DDL: Data Definition Language)

    • 데이터베이스 구조를 정의하고 관리하는 기능.
    • 예: 테이블 생성, 변경, 삭제.
    • 주요 명령어: CREATE, ALTER, DROP.
    • 예시:
    CREATE TABLE users (
        id INT PRIMARY KEY,
        name VARCHAR(100),
        email VARCHAR(100)
    );
  2. 데이터 조작 (DML: Data Manipulation Language)

    • 데이터를 삽입, 수정, 삭제 및 조회하는 기능.
    • 주요 명령어: INSERT, UPDATE, DELETE, SELECT.
    • 예시:
     INSERT INTO users (id, name, email) VALUES (1, 'John Doe', 'john@example.com');
      SELECT * FROM users;
    
  3. 데이터 제어 (DCL: Data Control Language)

    • 데이터 접근 권한을 관리하는 기능.
    • 주요 명령어: GRANT, REVOKE.
    • 예시:
    GRANT SELECT ON users TO 'user1';
     REVOKE SELECT ON users FROM 'user1';
  4. 트랜잭션 관리 (TCL: Transaction Control Language)

    • 트랜잭션을 제어하여 데이터 일관성을 보장.
    • 주요 명령어: COMMIT, ROLLBACK, SAVEPOINT.
    • 예시:
    BEGIN TRANSACTION;
     UPDATE users SET email = 'newemail@example.com' WHERE id = 1;
     COMMIT;

DBMS의 주요 개념

  1. 데이터 무결성 (Data Integrity)

    • 데이터의 정확성, 일관성, 신뢰성을 유지하는 것.
    • 종류:
      • 도메인 무결성: 데이터 형식 및 범위 준수.
      • 참조 무결성: 외래 키 관계 유지.
      • 고유 무결성: 중복 데이터 방지 (e.g., UNIQUE).
  2. 데이터 정규화 (Normalization)

    • 데이터를 중복 없이 체계적으로 저장하기 위해 테이블을 분해하는 과정.

    • 장점: 데이터 일관성, 저장 공간 절약.

    • 단계: 1NF → 2NF → 3NF 등. 주로 제 3정규화까지만 진행함.

    • 예시:

      정규화 전:

      ID이름주문 내역
      1John상품A, 상품B

      정규화 후:

    • 사용자 테이블:

      ID이름
      1John
    • 주문 테이블:

      주문 ID사용자 ID상품명
      11상품A
      21상품B
  3. 트랜잭션 (Transaction)

    • 데이터베이스에서 하나의 작업 단위를 의미하며, 모든 작업이 성공하거나 실패해야 함.
    • ACID 특성:
      • Atomicity(원자성): 모든 작업이 완전히 실행되거나 전혀 실행되지 않음.
      • Consistency(일관성): 트랜잭션 완료 후 데이터베이스가 일관된 상태로 유지됨.
      • Isolation(격리성): 트랜잭션끼리 서로 간섭하지 않음.
      • Durability(지속성): 트랜잭션이 성공하면 결과가 영구적으로 저장됨.
  4. 데이터베이스 인덱스 (Index)

    • 데이터를 빠르게 검색할 수 있도록 도와주는 데이터 구조.
    • 장점: 조회 속도 향상.
    • 단점: 삽입, 수정, 삭제 시 성능 저하.
    • 예시:
    CREATE INDEX idx_user_name ON users(name);

DBMS 종류

  1. 관계형 DBMS (RDBMS)

    • 데이터를 테이블 형식으로 저장하며, SQL을 사용.
    • : MySQL, PostgreSQL, Oracle, SQL Server.
    • 장점: 데이터 일관성 유지, 복잡한 쿼리 지원.
  2. NoSQL DBMS

    • 비정형 데이터, 대량의 데이터를 처리하는 데 적합.
    • : MongoDB, Cassandra, Redis.
    • 장점: 스키마 유연성, 빠른 데이터 처리.

DBMS 작성 시 주의사항

  1. SQL 인젝션 방지

    • 사용자 입력을 검증하고 PreparedStatement 사용.
    • 예시:
    String query = "SELECT * FROM users WHERE username = ?";
     PreparedStatement pstmt = connection.prepareStatement(query);
     pstmt.setString(1, username);
  2. 트랜잭션 관리

    • 중요한 데이터 조작 시 트랜잭션을 사용하여 일관성을 유지.
    • 예시:
    connection.setAutoCommit(false);
    try {
        // 데이터 조작
        connection.commit();
    } catch (Exception e) {
        connection.rollback();
    }
  3. 정규화와 성능 고려

    • 정규화를 적절히 사용하되, 성능을 위해 비정규화를 고려할 수도 있음.

DBMS의 장점

  • 데이터 일관성 및 무결성 보장.
  • 효율적인 데이터 저장 및 검색.
  • 다중 사용자 환경 지원.
  • 보안 및 권한 관리 기능 제공.

profile
다 먹어버릴거야!

0개의 댓글