0

[Java Backend Zero to Hello] BÀI 4.1: CƠ SỞ DỮ LIỆU QUAN HỆ

Java Backend Zero to Hello

📚 Bài viết thuộc series Java Backend Zero to Hello 📌 Phần: Phase 4: Database & SQL | Bài 36/86


BÀI 4.1: CƠ SỞ DỮ LIỆU QUAN HỆ

Mục tiêu

  • Hiểu khái niệm RDBMS
  • Nắm tính chất ACID
  • Hiểu về Normalization
  • Phân biệt các loại Database

1. DATABASE LÀ GÌ?

Database (Cơ sở dữ liệu) là tập hợp dữ liệu có tổ chức, được lưu trữ và quản lý để dễ dàng truy cập, thao tác.

DBMS vs RDBMS

DBMS RDBMS
Database Management System Relational DBMS
Lưu dữ liệu dạng bất kỳ Lưu dữ liệu dạng bảng có quan hệ
Có thể không có quan hệ Có quan hệ giữa các bảng
Ví dụ: MongoDB Ví dụ: MySQL, PostgreSQL

2. RDBMS PHỔ BIẾN

Database Đặc điểm
MySQL Phổ biến, miễn phí, dễ dùng
PostgreSQL Mạnh mẽ, hỗ trợ JSON, advanced features
Oracle Enterprise, trả phí
SQL Server Microsoft, tích hợp .NET
SQLite Nhẹ, embedded

3. CÁC KHÁI NIỆM CƠ BẢN

3.1 Bảng (Table)

users
+----+----------+-----------------+-----+
| id | name     | email           | age |
+----+----------+-----------------+-----+
| 1  | An       | an@example.com  | 25  |
| 2  | Bình     | binh@example.com| 30  |
+----+----------+-----------------+-----+
  • Row/Record/Tuple: Một bản ghi
  • Column/Field/Attribute: Một thuộc tính
  • Primary Key: Cột định danh duy nhất
  • Foreign Key: Tham chiếu đến bảng khác

3.2 Schema

Cấu trúc của database: các bảng, cột, kiểu dữ liệu, quan hệ.

3.3 Quan hệ (Relationship)

  • One-to-One: User - Profile
  • One-to-Many: User - Orders
  • Many-to-Many: Students - Courses (qua bảng trung gian)

4. TÍNH CHẤT ACID

Tính chất Mô tả
Atomicity Tất cả hoặc không có gì - transaction thành công hoàn toàn hoặc rollback
Consistency Dữ liệu luôn ở trạng thái hợp lệ
Isolation Các transaction không ảnh hưởng lẫn nhau
Durability Dữ liệu đã commit không bị mất

Ví dụ Transaction

BEGIN TRANSACTION;
  UPDATE accounts SET balance = balance - 100 WHERE id = 1;
  UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
-- Nếu lỗi: ROLLBACK;

5. NORMALIZATION (CHUẨN HÓA)

Quy trình tổ chức bảng để giảm redundancy và đảm bảo integrity.

5.1 First Normal Form (1NF)

  • Mỗi cột chứa giá trị nguyên tử (không chia nhỏ được)
  • Không có nhóm lặp lại

❌ Vi phạm:

| id | name | phones              |
| 1  | An   | 0901, 0902          |

✅ Tuân thủ:

| id | name | phone  |
| 1  | An   | 0901   |
| 1  | An   | 0902   |

5.2 Second Normal Form (2NF)

  • Đạt 1NF
  • Mọi cột non-key phụ thuộc đầy đủ vào Primary Key

5.3 Third Normal Form (3NF)

  • Đạt 2NF
  • Không có transitive dependency (cột non-key không phụ thuộc vào cột non-key khác)

❌ Vi phạm:

| id | name | department | dept_head  |

✅ Tuân thủ:

employees:           departments:
| id | name | dept_id |    | id | name | head  |

6. INDEX

Cấu trúc dữ liệu giúp tăng tốc truy vấn.

6.1 Các loại Index

  • Primary Key Index: Tự động tạo
  • Unique Index: Đảm bảo giá trị duy nhất
  • Composite Index: Index trên nhiều cột
  • Full-text Index: Tìm kiếm văn bản

6.2 Khi nào dùng

  • ✅ Cột thường dùng trong WHERE, JOIN
  • ✅ Cột có nhiều giá trị trùng (low cardinality)
  • ❌ Bảng nhỏ
  • ❌ Cột thường xuyên UPDATE

7. CAP THEOREM

Trong distributed database:

  • Consistency: Tất cả node thấy cùng dữ liệu
  • Availability: Luôn phản hồi
  • Partition tolerance: Chịu lỗi mạng

Chỉ chọn được 2/3.


8. SQL vs NoSQL

SQL NoSQL
Schema cố định Schema linh hoạt
Quan hệ chặt chẽ Không quan hệ
ACID BASE
Scale vertical Scale horizontal
MySQL, PostgreSQL MongoDB, Redis, Cassandra

9. CÀI ĐẶT MYSQL

9.1 Tải và cài đặt

docker run --name mysql -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 -d mysql:8

9.2 Kết nối

mysql -u root -p

9.3 Tạo database

CREATE DATABASE mydb;
USE mydb;

10. BÀI TẬP THỰC HÀNH

Bài 1: Phân tích thiết kế

Thiết kế database cho hệ thống quản lý sinh viên:

  • Sinh viên (id, tên, ngày sinh, email)
  • Khóa học (id, tên, số tín chỉ)
  • Đăng ký (sinh viên - khóa học, ngày đăng ký, điểm)

Bài 2: Xác định quan hệ

  • User - Profile: One-to-One
  • User - Orders: One-to-Many
  • Products - Categories: Many-to-Many

Bài 3: Normalization

Chuẩn hóa bảng sau về 3NF:

orders
| id | customer_name | customer_email | product1 | product2 | total |

11. TÓM TẮT

Khái niệm Mô tả
RDBMS Database quan hệ
ACID Atomicity, Consistency, Isolation, Durability
Normalization Chuẩn hóa dữ liệu
Index Tăng tốc truy vấn
Primary Key Định danh duy nhất
Foreign Key Tham chiếu giữa bảng
CAP Consistency, Availability, Partition tolerance

Bài tiếp theo: 4.2 SQL cơ bản


🧭 Điều Hướng Series

⬅️ Bài trước: PHASE 4: DATABASE & SQL - Tổng Quan & Mục Tiêu

📋 Lộ trình tổng quan: Xem Toàn Bộ Series

➡️ Bài tiếp theo: BÀI 4.2: SQL CƠ BẢN


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí