Cơ sở dữ liệu là gì — khác file ra sao, bảng và SQL

Bài viết này nằm trong khóa Kiến thức nền tảng về CNTT, xây dựng từ đầu những kiến thức CNTT thực tế tối thiểu mà bạn cần để lập trình và vibe coding.
Cơ sở dữ liệu nhận ba việc: tìm kiếm, xử lý các lượt ghi tới cùng lúc, và cố định hình dạng của bản ghi. Các sơ đồ cho thấy bảng gồm hàng và cột, cùng với SQL để ra lệnh đọc ghi.

Bài viết này nói về tầng DB, tức là cơ sở dữ liệu.

Cơ sở dữ liệu là phần mềm lưu dữ liệu ở dạng tìm kiếm và cập nhật được.

Điểm khác với file không phải là chỗ đặt bản ghi, mà là nó nhận luôn cả việc tìm kiếm và việc sắp xếp các lượt ghi.

Các từ trong hướng dẫn nhập môn, và vị trí của cơ sở dữ liệu, bảng và SQL
===Lưu vàocơ sở dữ liệuTạobảngViết SQLCơ sở dữ liệuBảngSQLPhần mềmở tầng DBBảng nằm trongcơ sở dữ liệuLệnh gửi từtầng App
Hàng trên là cách nói xuất hiện trong hướng dẫn, hàng giữa là ba thứ bài này đề cập, hàng dưới là vị trí trong mô hình ba tầng. Hai thứ nối bằng đường đôi chỉ khác cách nói, còn vẫn là cùng một thứ.

Cơ sở dữ liệu khác file ở chỗ nào — tìm kiếm, ghi đồng thời, cố định hình dạng

Cơ sở dữ liệu không chỉ là chỗ chứa để lưu bản ghi.

Nó nhận ba việc: tìm những hàng khớp điều kiện, xử lý lần lượt các lượt ghi tới cùng lúc, và giữ cho hình dạng bản ghi thống nhất.

Dù tới cùng một thời điểm, các lượt ghi vẫn được xử lý lần lượt từng cái một.

Nếu ghi thẳng vào file, chính chương trình của bạn phải quyết định thứ tự đó.

Cùng một vai trò, với file và với cơ sở dữ liệu thì ai đảm nhận
===Tìm bản ghi khớpđiều kiệnSắp xếp các lượtghi đồng thờiGiữ hình dạngbản ghi thống nhấtChương trình của bạnđọc hết rồi chọnBạn tự quyết địnhthứ tự trướcBên ghi phảitự để ýCơ sở dữ liệu chỉtrả hàng khớpCơ sở dữ liệu xửlý lần lượtTừ chối hàngkhông đúng dạngNhiều hàng lênthì chậm điGhi cùng lúc thìmất một cáiBản ghi khác dạnglẫn vào
Cột trái là vai trò, hai cột giữa là trường hợp file và trường hợp cơ sở dữ liệu. Cột ngoài cùng bên phải là điều dễ xảy ra khi bạn tự đảm nhận.

Các cơ sở dữ liệu hay dùng là PostgreSQL, MySQL và SQLite.

Những bản ghi chỉ một người sửa, như cấu hình, để nguyên dạng file cũng không sao.

Những bản ghi mà nhiều người cùng đọc ghi và bạn tìm theo điều kiện mới là thứ đặt vào cơ sở dữ liệu.

Cơ sở dữ liệu nhận ba việc

Với file cũng như với cơ sở dữ liệu, bản ghi đều nằm lại trên lưu trữ; khác nhau là ai làm việc tìm kiếm, ai định thứ tự khi các lượt ghi tới cùng lúc, và ai giữ cho hình dạng bản ghi thống nhất.

Với file thì chính chương trình của bạn làm hết, còn với cơ sở dữ liệu bạn chỉ cần nói mình muốn những bản ghi như thế nào, và những hàng không đúng dạng sẽ được từ chối giúp bạn.

Bảng lưu bản ghi dưới dạng lưới gồm hàng và cột

Đơn vị lưu bản ghi bên trong cơ sở dữ liệu là bảng (table. Lưới gồm hàng và cột, gom lại những bản ghi cùng loại).

ID đặt chỗID thành viênNgàySố người
1122026-10-032
272026-10-034
3122026-10-103

Mỗi tiêu đề là một cột (column. Một mục của bản ghi), còn mỗi dòng ngang bên dưới là một hàng (row. Một bản ghi trọn vẹn, cũng gọi là record).

Cột dùng để xác định đúng một hàng là khóa chính (primary key. Cột không thể có hai hàng cùng giá trị).

Các cột được quyết định từ trước, và mỗi lần thêm một bản ghi thì thêm một hàng.

Bên trong cơ sở dữ liệu của ứng dụng đặt chỗ
Cơ sở dữ liệu của ứng dụng đặt chỗ
Bảng đặt chỗ
  • Cột: ID đặt chỗ, ID thành viên, ngày, số người
  • 1 hàng = 1 lượt đặt chỗ
  • Mỗi lượt đặt chỗ lại thêm một hàng
Bảng thành viên
  • Cột: ID thành viên, tên, địa chỉ email
  • 1 hàng = 1 thành viên
  • Mỗi lần đăng ký lại thêm một hàng
Khung ngoài là một cơ sở dữ liệu. Hai thứ bên trong là bảng, và mỗi danh sách gạch đầu dòng cho biết tên các cột và một hàng biểu thị cái gì.

Bảng đặt chỗ không ghi tên thành viên, chỉ đặt ID thành viên.

Tên chỉ nằm ở đúng một chỗ là bảng thành viên, nên khi tên đổi thì chỉ có một hàng phải sửa.

Một lượt đăng ký được tách vào hai bảng
Đăng ký của Minh10/03 · 2 ngườiTên và email vàobảng thành viênNgày và số ngườivào bảng đặt chỗBảng thành viênID 12 · MinhBảng đặt chỗID 1 · TV 12Cùng ID thành viên
Một lượt ở bên trái tách lên trên và xuống dưới, mỗi phần thành một hàng ở bảng khác nhau. Hai thứ ngoài cùng bên phải mang cùng giá trị ID thành viên 12, nên từ hàng đặt chỗ bạn lần ra được tên.

Cơ sở dữ liệu giữ dữ liệu dưới dạng lưới gồm hàng và cột là cơ sở dữ liệu quan hệ (relational database. Cũng viết là RDB), và các bảng nối được với nhau qua một cột chung.

Thứ bạn quyết định trước khi tạo bảng là schema (thứ quy định tên bảng, tên các cột và loại giá trị nằm trong mỗi cột), trong đó loại giá trị là sự phân biệt kiểu số, chữ hay ngày, cũng viết là kiểu (type).

Bảng cố định cột trước rồi lớn lên theo hàng

Bảng là lưới gồm các cột dọc và các hàng ngang.

Tên cột được quyết định trước, mỗi bản ghi mới lại thêm một hàng, và khi bạn đặt giá trị khóa chính dùng để phân biệt một bản ghi sang cả bảng khác thì hai bảng nối được với nhau.

SQL là cách viết các lệnh đọc ghi mà tầng App gửi tới cơ sở dữ liệu

Cách viết lệnh đọc ghi cho bảng là SQL (Structured Query Language. Ngôn ngữ ra lệnh đọc, thêm, sửa và xóa hàng), và một lệnh gọi là một truy vấn (query).

Trong sách nhập môn nó xuất hiện ở dạng sau.

SELECT date, guests
FROM reservations
WHERE member_id = 12;

Sau SELECT là các cột cần lấy ra, sau FROM là bảng, sau WHERE là điều kiện.

Ba dòng này là lệnh lấy ngày và số người từ những hàng có ID thành viên bằng 12 trong bảng đặt chỗ.

Nhìn từ đầu tiên là biết đó là đọc, thêm, sửa hay xóa.

Từ đầu tiên quyết định cơ sở dữ liệu làm gì
SELECT ...WHERE member_id= 12INSERT INTOreservations ...UPDATE ...SET guests = 4DELETE FROMreservations ...Chọn những hàng cóID thành viên 12Thêm một hàng vàobảng đặt chỗSửa số người ởnhững hàng khớpXóa những hàng khớpTrả về 2 hàngngày và số ngườiTăng một hàng2 thành 4Giảm một hàng
Bên trái là phần đầu của truy vấn bạn gửi, ở giữa là việc cơ sở dữ liệu làm, bên phải là thứ trả về và thứ còn lại. Ba mục dưới làm số hàng thay đổi, chỉ mục trên cùng là đọc.

Tìm hàng là việc của cơ sở dữ liệu, còn tầng App chỉ nói nó muốn những hàng nào.

Với sửa và xóa, thứ thay đổi không phải là hàng trả về mà là hàng còn lại trong bảng.

Thành phần cho phép bạn làm việc với bảng bằng cú pháp của ngôn ngữ thay vì viết SQL là ORM (Object-Relational Mapping. Thành phần xử lý hàng của bảng bằng cú pháp của ngôn ngữ rồi chuyển thành SQL và gửi đi).

Viết SQL trực tiếp hay viết bằng ORM thì thứ tới nơi vẫn như nhau
Viết SQL trực tiếpĐược gửi nguyên như vậyViết bằng cú pháp ORMORM chuyển nóthành SQLMột truy vấn SQLtới cơ sở dữ liệu
Dòng bạn viết ở trên và ở dưới khác nhau, nhưng tới bên phải thì gộp lại làm một. Thứ cơ sở dữ liệu nhận được, cả hai đường đều là một truy vấn SQL.

Dù bạn dùng ORM, thứ tới nơi vẫn là một truy vấn SQL.

Việc tự viết và chạy SQL được nói tới trong bài SELECT của khóa SQL nhập môn.

SQL là cách nói ra những hàng bạn muốn

SQL là cách viết khi bạn nhờ cơ sở dữ liệu đọc hoặc ghi.

Từ đầu tiên quyết định là đọc, thêm, sửa hay xóa, còn hàng nào là đối tượng thì bạn nói bằng điều kiện, và việc tìm kiếm do cơ sở dữ liệu làm.

QUIZ

Kiểm tra kiến thức

Hãy trả lời từng câu hỏi một.

Câu 1Theo khác biệt mà bài này nêu, lý do đặt bản ghi đặt chỗ vào cơ sở dữ liệu thay vì file là gì?

Câu 2Truy vấn SELECT date, guests FROM reservations WHERE member_id = 12; ra lệnh làm gì?

Câu 3Vì sao bảng đặt chỗ đặt ID thành viên chứ không phải tên thành viên?