Cơ sở dữ liệu, bảng, quan hệ và SQL

Cơ sở dữ liệu (Database) là một tập hợp các dữ liệu có tổ chức, được lưu trữ và truy xuất bằng các hệ thống máy tính. Dữ liệu trong cơ sở dữ liệu thường được lưu trữ trong các bảng (Tables) và được liên kết với nhau thông qua các mối quan hệ (Relationships).

Database là gì?

Cơ Sở Dữ Liệu (Database)

Cơ sở dữ liệu là một kho lưu trữ dữ liệu có cấu trúc. Mục tiêu chính của cơ sở dữ liệu là cung cấp cách lưu trữ và truy xuất dữ liệu hiệu quả.

Ví Dụ: Hệ thống quản lý sinh viên cần cơ sở dữ liệu để lưu thông tin về sinh viên, lớp học, môn học, điểm của từng mônHệ thống quản lý đơn hàng phải dùng cơ sở dữ liệu để lưu trữ đơn hàng, sản phẩm, khách hàng, tồn kho...

Ghi chú: Trong giới hạn của chương trình Data Literacy, chúng ta sẽ tìm hiểu chủ yếu là về cơ sở dữ liệu quan hệ (relational database) vì nó được dùng phổ biến trên toàn toán thế giới để lưu trữ các thông tin về kinh doanh.

Hệ quản trị cơ sở dữ liệu (Database Management System - DBMS)

Hệ quản trị cơ sở dữ liệu (Database Management System - DBMS) là một phần mềm được sử dụng để quản lý các cơ sở dữ liệu. DBMS cung cấp một giao diện giữa người dùng và cơ sở dữ liệu, cho phép người dùng truy cập, thao tác và quản lý dữ liệu một cách hiệu quả.

Các Chức Năng Chính của DBMS

  • Quản lý Dữ liệu: Tạo, đọc, cập nhật và xóa dữ liệu trong cơ sở dữ liệu.
  • Kiểm soát Truy cập: Quản lý quyền truy cập của người dùng vào dữ liệu.
  • Quản lý Giao dịch: Đảm bảo tính toàn vẹn và nhất quán của dữ liệu khi có nhiều giao dịch diễn ra đồng thời.
  • Sao lưu và Phục hồi: Cung cấp các cơ chế để sao lưu và khôi phục dữ liệu trong trường hợp xảy ra sự cố.

Ví Dụ về Các Hệ Quản Trị Cơ Sở Dữ Liệu Phổ Biến

  • MySQL: Hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến cho các ứng dụng web.
  • PostgreSQL: Hệ quản trị cơ sở dữ liệu mã nguồn mở mạnh mẽ với nhiều tính năng tiên tiến.
  • Oracle Database: Hệ quản trị cơ sở dữ liệu thương mại mạnh mẽ và bảo mật cao, thường dùng trong lĩnh vực tài chính, ngân hàng.
  • Microsoft SQL Server: Hệ quản trị cơ sở dữ liệu của Microsoft với tích hợp tốt trong môi trường Windows.

Bảng (Table)

Một bảng trong cơ sở dữ liệu là một cấu trúc bao gồm các hàng (rows) và cột (columns), trong đó mỗi hàng đại diện cho một bản ghi (record) và mỗi cột đại diện cho một trường dữ liệu (field).

Ví Dụ:

  • Bảng Sinh Viên

  • Bảng Sản phẩm

  • Bảng Đơn Hàng

Quan Hệ (Relationship)

Quan hệ trong cơ sở dữ liệu đề cập đến cách các bảng liên kết với nhau. Các loại quan hệ phổ biến bao gồm:

  • One-to-One (1-1): Một hàng trong bảng này liên kết với một hàng trong bảng khác.
  • One-to-Many (1-N): Một hàng trong bảng này liên kết với nhiều hàng trong bảng khác.
  • Many-to-Many (N-N): Nhiều hàng trong bảng này liên kết với nhiều hàng trong bảng khác.

Ví Dụ:

Quan hệ giữa bảng Sinh Viên và bảng Lớp Học:

  • Một sinh viên có thể học nhiều lớp.
  • Một lớp có thể có nhiều sinh viên.

SQL (Structured Query Language)

SQL là ngôn ngữ chuẩn để quản lý và thao tác cơ sở dữ liệu quan hệ. SQL cho phép bạn thực hiện các thao tác như:

  • SELECT: Truy vấn dữ liệu từ một bảng.
  • INSERT: Thêm dữ liệu mới vào một bảng.
  • UPDATE: Cập nhật dữ liệu trong một bảng.
  • DELETE: Xóa dữ liệu từ một bảng.

Ví dụ: Đây là câu SQL SELECT để Lấy danh sách các sinh viên, bao gồm tên và lớp học, của toàn trường từ xưa đến nay

SELECT SinhVien.Ten, LopHoc.TenLop
FROM SinhVien
INNER JOIN LopHoc ON SinhVien.LopID = LopHoc.ID;

Ghi chú: Trong khuôn khổ của dự án Data Literacy, chúng tôi chỉ giới thiệu sơ lược về khái niệm để bạn biết được SQL là gì. Việc học SQL rất dễ dàng, như học công thức Excel vậy và hiện nay nhiều website online có cung cấp khóa học SQL miễn phí rất dễ đăng ký và học.

Phép JOIN

Phép JOIN trong SQL được sử dụng để kết hợp các hàng từ hai hoặc nhiều bảng dựa trên một điều kiện liên quan giữa chúng. Các loại JOIN phổ biến bao gồm:

  • INNER JOIN: Trả về các bản ghi có giá trị tương ứng trong cả hai bảng.
  • LEFT JOIN (LEFT OUTER JOIN): Trả về tất cả các bản ghi từ bảng bên trái và các bản ghi khớp từ bảng bên phải.
  • RIGHT JOIN (RIGHT OUTER JOIN): Trả về tất cả các bản ghi từ bảng bên phải và các bản ghi khớp từ bảng bên trái.
  • FULL JOIN (FULL OUTER JOIN): Trả về tất cả các bản ghi khi có một sự khớp trong bảng bên trái hoặc bảng bên phải.

Dùng SQL với điều kiện (WHERE)

Mệnh đề WHERE trong SQL được sử dụng để lọc các bản ghi trả về bởi một truy vấn SQL, chỉ chọn các bản ghi thỏa mãn điều kiện chỉ định.

Ví Dụ: Lấy tất cả sinh viên có tuổi trên 20

SELECT * FROM SinhVien WHERE Tuoi > 20;

Một ví dụ khác: Lấy danh sách đơn hàng được các sinh viên trên 20 tuổi mua, bao gồm chi tiết đơn và tên sinh viên đã mua, tên sản phẩm

SELECT DonHang.MaDonHang, SinhVien.Ten, SanPham.TenSanPham
FROM DonHang
INNER JOIN SinhVien ON DonHang.SinhVienID = SinhVien.ID
INNER JOIN SanPham ON DonHang.SanPhamID = SanPham.ID
WHERE SinhVien.Tuoi > 20;

Dùng SQL để tổng hợp dữ liệu (Aggregation)

SQL không chỉ dùng để lấy danh sách, mà nó còn có khả năng cộng trừ nhân chia và làm các phép tính phức tạp như lấy ngược lại X dòng, lấy ngược lại dữ liệu 1 năm, tính trung bình, thậm chí một số database hiện đại còn cho phép chạy các thuật toán AI chỉ bằng SQL mà thôi.

Các phép aggregration phổ biến là SUM, AVG (tính giá trị trung bình), COUNT (đếm dòng), COUNT DISTINCT (đếm dòng duy nhất).

Ví dụ: Tính số tiền mà các bạn sinh viên trên 20 tuổi đã mua trong cửa hàng của trường:

SELECT SUM(DonHang.SoTien)
FROM DonHang
INNER JOIN SinhVien ON DonHang.SinhVienID = SinhVien.ID
INNER JOIN SanPham ON DonHang.SanPhamID = SanPham.ID
WHERE SinhVien.Tuoi > 20;

Ví dụ 2: Tính số tiền mà các bạn sinh viên trên 20 tuổi đã mua trong cửa hàng của trường:, lần này chia theo từng sản phẩm

SELECT SanPham.TenSanPham, SUM(DonHang.SoTien)
FROM DonHang
INNER JOIN SinhVien ON DonHang.SinhVienID = SinhVien.ID
INNER JOIN SanPham ON DonHang.SanPhamID = SanPham.ID
WHERE SinhVien.Tuoi > 20
GROUP BY SanPham.TenSanPham;

Kết Luận

Hiểu biết cơ bản về cơ sở dữ liệu, bảng, quan hệ và SQL là rất cần thiết cho việc làm việc với các hệ thống quản lý dữ liệu. SQL cung cấp một bộ công cụ mạnh mẽ để truy cập và thao tác dữ liệu trong các cơ sở dữ liệu quan hệ.

Ngoài ra, SQL còn là một kỹ năng mà ngày càng nhiều công ty yêu cầu bạn có, không chỉ khi bạn đi làm việc về data mà kể cả khi bạn làm các việc vận hành, quảng cáo, marketing, truyền thông... SQL cũng chỉ là công cụ, giống như Excel có các hàm tính toán và công thức, thì các database / data warehouse sẽ dùng SQL để lấy số, tính toán số.

Cũng may là SQL tương đối "universal", nên bạn chỉ cần học 1 lần cho 1 database, các hệ thống khác sẽ gần giống nên bạn không cần phải học lại.