Chủ đề 4: Giới thiệu các hệ cơ sở dữ liệu

Bài 11: Cơ sở dữ liệu

1. Khởi động

"Theo em, việc lưu trữ dữ liệu phục vụ các bài toán quản lí có phải chỉ là việc chuyển các ghi chép trên giấy thành văn bản trên máy tính không?" — Câu hỏi mở đầu, SGK Tin học 11.

Hoạt động 1 – Có cần lưu trữ bảng điểm lớp học không?

Giáo viên dạy mỗi môn học bắt buộc phải có một sổ điểm – bảng điểm môn học. Một bản sao của bảng điểm môn học được gửi cho giáo viên chủ nhiệm lớp. Hãy cùng thảo luận: có cần lưu trữ bảng điểm lớp học không?

SỔ ĐIỂM TOÁN Điểm: 9 ! SỔ ĐIỂM LỚP Điểm: 8

Cùng một học sinh, cùng một môn Toán — nhưng sổ giấy ở hai nơi lại ghi hai điểm khác nhau vì không ai đồng bộ dữ liệu.

Hãy tưởng tượng trường học lưu trữ điểm bằng sổ giấy: giáo viên môn Toán có một cuốn sổ điểm riêng, giáo viên chủ nhiệm lại có thêm một cuốn sổ tổng hợp điểm của cả lớp. Cùng một thông tin — điểm của một học sinh — bị ghi chép và lưu trữ ở hai nơi khác nhau.

Nếu kì thi vừa rồi một học sinh được phúc khảo từ 8 lên 9 điểm môn Toán, giáo viên Toán sửa lại trong sổ của mình nhưng quên báo cho giáo viên chủ nhiệm — sổ điểm lớp vẫn ghi 8. Điều gì sẽ xảy ra khi nhà trường tính điểm tổng kết?

Gợi ý: Dữ liệu đang bị lưu trữ lặp lại ở nhiều nơi khác nhau — đây chính là mầm mống của sự không nhất quán dữ liệu mà bài học sẽ giải thích ở Mục "Yêu cầu dữ liệu".

Mô phỏng nhanh: Thử tự tay phúc khảo điểm

Sổ điểm Toán
8
Sổ điểm Lớp
8

Việc lưu trữ dữ liệu bằng máy tính không chỉ đơn thuần là gõ lại văn bản trên giấy. Cần phải tổ chức một cách khoa học để giải quyết vấn đề trên, đó chính là vai trò của Cơ sở dữ liệu (CSDL).

2. Mục tiêu bài học

Hiểu khái niệm Cơ sở dữ liệu (CSDL): Vì sao cần tổ chức dữ liệu một cách khoa học thay vì chỉ chuyển ghi chép trên giấy thành tệp trên máy tính.

Nắm vững 6 thuộc tính cơ bản của CSDL: tính cấu trúc, không dư thừa, độc lập, toàn vẹn, nhất quán, bảo mật và an toàn.

Vận dụng vào tình huống thực tế: nhận diện từng thuộc tính qua mô phỏng, truy vấn SQL và bài luyện tập.

3. Yêu cầu tổ chức lưu trữ dữ liệu một cách khoa học

a) Hạn chế dư thừa trong lưu trữ dữ liệu

Khi ghi chép, lưu trữ trên giấy, giáo viên chủ nhiệm lớp thường lưu trữ cả bảng điểm môn học bảng điểm lớp học. Tuy nhiên, có thể thấy nhiều dữ liệu lặp lại trong các bảng điểm này và có thể dẫn đến sự không nhất quán dữ liệu. Ví dụ dưới đây trích từ SGK:

Hình 11.1 — Trích bảng điểm môn Toán

STTHọ và tênĐĐG TXĐĐG GKĐĐG CK
3Nguyễn Kì Duyên78 9

Hình 11.2 — Trích bảng điểm lớp học

STTHọ và tênToánTin họcVật líHoá học
3Nguyễn Kì Duyên 8 101010

Cùng một học sinh, cùng một điểm Toán cuối kì — nhưng hai bảng lại ghi hai giá trị khác nhau.

Trò chơi nhỏ: Bắt lỗi không nhất quán!

Ở Hình 11.1, điểm cuối kì môn Toán của Nguyễn Kì Duyên là 9. Hãy nhấn vào ô trong Hình 11.2 đang ghi sai giá trị này.

Thói quen cá nhân của người lưu trữ cũng có thể dẫn đến sự không nhất quán khi lưu trữ thủ công (ví dụ điểm được ghi bằng chữ hoặc kí hiệu riêng thay vì số). Khi dữ liệu được lưu trên máy tính, bảng điểm lớp học có thể được tự động lập ra từ các bảng điểm môn học — vì vậy không cần lưu trữ nó như một bản sao riêng, nó chỉ là một "khung nhìn" tổng hợp.

Việc lưu trữ dữ liệu trên máy tính vì thế không đơn thuần là chuyển văn bản trên giấy thành tệp văn bản trên máy tính — cần tổ chức sao cho hạn chế trùng lặp, khắc phục lỗi không nhất quán. Đây là yêu cầu chung cho mọi bài toán quản lí.

b) Sự phụ thuộc phần mềm và dữ liệu

Việc lưu trữ dữ liệu điểm các môn học trên máy tính cần những phần mềm hỗ trợ cập nhật và khai thác thông tin. Ba mô đun phần mềm cần có là: Danh sách lớp (quản lí danh sách lớp học), Điểm môn học (cập nhật điểm) và Lập bảng điểm (tổng hợp bảng điểm lớp học từ dữ liệu điểm môn học).

Nếu viết các mô đun này bằng một ngôn ngữ lập trình — ví dụ Python — giải pháp đơn giản nhất thường là dùng trực tiếp hệ thống tệp văn bản (text), với mỗi dòng ngăn cách bởi dấu phẩy:

Tệp "Danh sách lớp học":
11A, 1, Dương Hồng Anh
11A, 2, Lương Việt Anh
11A, 3, Nguyễn Kì Duyên

Tệp "Bảng điểm môn học" (4 ĐĐG TX, 1 ĐĐG GK, 1 ĐĐG CK):
11A, 1, Dương Hồng Anh, 8, 7, , 7, 9, 8
11A, 2, Lương Việt Anh, , 5, 6, 5, 5, 5
11A, 3, Nguyễn Kì Duyên, 7, , 8, 0, 10, 9
Danh sách lớp Điểm môn học Lập bảng điểm Tệp Danh sách lớp học Tệp Bảng điểm môn học

Hình 11.3 (mô phỏng lại) — Các mô đun phần mềm và quan hệ với các tệp dữ liệu.

Khi viết mỗi mô đun, người lập trình phải biết cấu trúc của tệp dữ liệu để tách đúng các thành phần theo dấu phẩy. Nếu sau này quy định điểm có phần thập phân và cần đổi dấu phẩy thành dấu chấm để tránh nhầm lẫn, cả hai mô đun "Điểm môn học" và "Lập bảng điểm" đều phải sửa lại — dù bản chất công việc của chúng không hề thay đổi.

Đây chính là sự phụ thuộc giữa chương trình và dữ liệu: thay đổi cách lưu trữ dữ liệu kéo theo phải sửa đổi phần mềm, khiến việc thiết kế, bảo trì, phát triển tốn nhiều thời gian, công sức. Ý tưởng tổ chức dữ liệu độc lập với phần mềm — để phần mềm không cần "nhìn thấy" chi tiết cách lưu trữ mà vẫn dùng được dữ liệu — chính là nền tảng hình thành nên khoa học về Cơ sở dữ liệu (CSDL).

Ghi nhớ

Dữ liệu cần được tổ chức lưu trữ một cách độc lập với việc xây dựng, phát triển phần mềm, đảm bảo dễ dàng chia sẻ, dễ dàng bảo trì phát triển, đồng thời đảm bảo hạn chế tối đa việc dữ liệu lặp lại, gây dư thừa dữ liệu và hỗ trợ đảm bảo tính nhất quán dữ liệu.

Câu hỏi 1. Hãy giải thích yêu cầu về tính nhất quán dữ liệu trong lưu trữ dữ liệu.
Tính nhất quán yêu cầu dữ liệu phản ánh cùng một sự thật ở mọi nơi nó xuất hiện: nếu điểm Toán của một học sinh được sửa ở một chỗ (bảng điểm môn học), mọi nơi khác có chứa dữ liệu đó (bảng điểm lớp học) cũng phải được cập nhật theo — tránh tình trạng hai bản ghi mâu thuẫn nhau như ở Hình 11.1/11.2.
Câu hỏi 2. Tại sao cần tổ chức lưu trữ dữ liệu độc lập với phần mềm?
Vì nếu dữ liệu và phần mềm phụ thuộc chặt vào nhau, mỗi lần thay đổi cách lưu trữ dữ liệu đều buộc phải sửa lại phần mềm — tốn thời gian, công sức, dễ phát sinh lỗi. Tổ chức dữ liệu độc lập giúp nhiều phần mềm khác nhau cùng khai thác một nguồn dữ liệu mà không cần biết chi tiết kĩ thuật lưu trữ bên dưới, dễ bảo trì và mở rộng hơn.

4. Cơ sở dữ liệu và thuộc tính cơ bản

Cơ sở dữ liệu (CSDL) là một tập hợp dữ liệu có liên quan với nhau, được lưu trữ một cách có tổ chức trên hệ thống máy tính nhằm mục đích khai thác.

Dữ liệu rời rạc CSDL có cấu trúc

CSDL tổ chức dữ liệu rời rạc thành một khối có cấu trúc, để nhiều phần mềm khác nhau cùng khai thác mà không cần biết chi tiết cách lưu trữ bên dưới.

Một CSDL được thiết kế tốt cần đảm bảo các thuộc tính cơ bản sau. Nhấn vào từng thẻ để xem ví dụ minh hoạ:

1. Tính cấu trúc

Dữ liệu được tổ chức theo những quy tắc nhất định (VD: lưu dưới dạng bảng gồm các hàng và cột).

Nhấn để xem ví dụ
Ví dụ minh hoạ

Bảng điểm gồm các cột "Họ tên", "Điểm TX", "Điểm GK", "Điểm CK" và mỗi hàng ứng với một học sinh.

2. Tính không dư thừa

Hạn chế tối đa việc lưu trữ lặp lại một thông tin, giúp tiết kiệm bộ nhớ và dễ dàng cập nhật.

Nhấn để xem ví dụ
Ví dụ minh hoạ

Không cần lưu riêng "Bảng điểm lớp" vì có thể tổng hợp trực tiếp từ các "Bảng điểm môn học" đã có.

3. Tính độc lập dữ liệu

Dữ liệu độc lập với phần mềm khai thác. Thay đổi cấu trúc dữ liệu không bắt buộc phải viết lại toàn bộ phần mềm.

Nhấn để xem ví dụ
Ví dụ minh hoạ

Khi CSDL đổi cách lưu điểm từ số nguyên sang số thập phân, phần mềm tra cứu điểm vẫn hoạt động bình thường mà không cần viết lại.

4. Tính toàn vẹn

Dữ liệu phải thoả mãn các ràng buộc thực tế (VD: Điểm học tập phải từ 0 đến 10, không được là số âm).

Nhấn để xem ví dụ
Ví dụ minh hoạ

Hệ thống sẽ từ chối nếu ai đó nhập điểm là −5 hoặc 15, vì điểm chỉ được phép trong khoảng 0–10.

5. Tính nhất quán

Đảm bảo dữ liệu không bị mâu thuẫn sau các thao tác cập nhật (VD: Điểm ở bảng môn và bảng lớp phải giống nhau).

Nhấn để xem ví dụ
Ví dụ minh hoạ

Khi chuyển khoản ngân hàng, số dư ở tài khoản gửi và tài khoản nhận phải luôn khớp nhau, kể cả khi xảy ra sự cố giữa chừng.

6. Tính bảo mật và an toàn

Ngăn chặn truy cập trái phép, bảo vệ dữ liệu khỏi mất mát do sự cố phần cứng/phần mềm.

Nhấn để xem ví dụ
Ví dụ minh hoạ

Chỉ giáo viên bộ môn mới có quyền sửa điểm; dữ liệu được sao lưu định kì để phục hồi khi máy tính gặp sự cố.

4. Khám phá: Câu lệnh SQL và Cấu trúc bảng dữ liệu

Một Hệ quản trị CSDL như MySQL giúp tổ chức dữ liệu bài bản dưới dạng các bảng có cấu trúc rõ ràng (tên cột, kiểu dữ liệu). Tuy nhiên, phần mềm khai thác — cụ thể là các câu lệnh SQL — vẫn luôn phải tuân thủ đúng cấu trúc đó. Đây chính là lí do vì sao việc thiết kế CSDL cẩn thận lại quan trọng đến vậy.

Nhiệm vụ:
1. Nhấn Chạy truy vấn để xem MySQL tạo bảng diem_so, nạp dữ liệu và truy xuất kết quả.
2. Ở dòng SELECT cuối cùng, đổi tên cột ho_ten thành ten rồi nhấn chạy lại.
3. Quan sát thông báo lỗi no such column để hiểu vì sao câu lệnh SQL luôn phải khớp chính xác với cấu trúc bảng đã định nghĩa trong CSDL.

Phòng thực hành MySQL Đang tải công cụ SQL...

Kết quả hiển thị ở đây...

5. Mô phỏng: Hạn chế dư thừa & Đảm bảo nhất quán

Khi sử dụng CSDL, thay vì lưu hai bảng điểm rời rạc (Bảng môn Toán và Bảng tổng hợp Lớp), ta chỉ lưu dữ liệu gốc một lần. Bảng tổng hợp chỉ là một "khung nhìn" (view) lấy từ dữ liệu gốc.

Lưu trữ thủ công: Dữ liệu bị sao chép. Hãy thử đổi điểm của Kì Duyên ở Bảng môn Toán thành 10 rồi nhấn phím Enter (hoặc click ra ngoài) xem Bảng Lớp có tự cập nhật không?

Bảng điểm môn Toán

Họ tênĐiểm CK
Việt Anh8
Kì Duyên

Bảng điểm Lớp học (Tổng hợp)

Họ tênToánTin
Việt Anh810
Kì Duyên910

6. Luyện tập củng cố

Hãy vận dụng kiến thức vừa học để trả lời các câu hỏi sau. Chọn đáp án đúng nhất.

Đang tải câu hỏi...

Hoàn thành!

Điểm của em: 0/5