Bài 11. Cơ sở dữ liệu
SAU BÀI HỌC NÀY EM SẼ:
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?
1. YÊU CẦU TỔ CHỨC LƯU TRỮ DỮ LIỆU MỘT CÁCH KHOA HỌC
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 xem có cần lưu trữ bảng điểm của lớp học không?
a) Hạn chế dư thừa trong lưu trữ dữ liệu
Ví dụ về bảng điểm môn học và bảng điểm của lớp ở Mục 1 Bài 10 được xem xét từ thực tế thầy cô giáo ghi chép dữ liệu trên giấy.
Khi ghi chép, lưu trữ trên giấy, giáo viên chủ nhiệm thường lưu trữ cả các bảng điểm môn học và 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ụ: bảng điểm môn Toán, ĐĐG cuối kì của Nguyễn Kì Duyên là 9.
| STT | Họ và tên | ĐĐG thường xuyên | ĐĐG giữa kì | ĐĐG cuối kì |
| 3 | Nguyễn Kì Duyên | 8 | 10 |
Nhưng ở bảng điểm lớp học, ĐĐG cuối kì môn Toán của Nguyễn Kì Duyên có thể bị ghi nhầm là 8 (Hình 11.2). Thói quen cá nhân của người ghi chép có thể dẫn đến sự không nhất quán của dữ liệu khi lưu trữ thủ công. Ví dụ, điểm có thể được ghi bằng chữ hoặc các kí hiệu riêng thay vì các cột điểm bằng số dễ nhận biết và tính toán. Khi dữ liệu được lưu trữ trên máy tính, việc lập bảng điểm lớp học từ dữ liệu cơ sở (các bảng điểm môn học) có thể được thực hiện một cách dễ dàng. Vì thế, không cần lưu trữ bảng điểm lớp học vì bảng điểm này chỉ là một khung nhìn tổng hợp từ dữ liệu cơ sở bằng cách ghép các bảng điểm môn học. Ví dụ trên cho thấy việc lưu trữ dữ liệu trên máy tính không đơn thuần là việc chuyển các văn bản trên giấy thành các tệp văn bản trên máy tính. Cần tổ chức việc lưu trữ sao cho có thể hạn chế sự lặp lại, trùng lặp, dư thừa dữ liệu, khắc phục những lỗi không nhất quán về dữ liệu. Đây là yêu cầu chung đối với việc lưu trữ dữ liệu của mọi bài toán quản lí.
| STT | Họ và tên | Toán | Tin học | Vật lí | |
| 3 | Nguyễn Kì Duyên | 10 | 10 | 10 | 8 |
b) Sự phụ thuộc giữa phần mềm và dữ liệu
Việc lưu trữ dữ liệu không tách rời với việc khai thác thông tin nhờ các phần mềm ứng dụng, vì khai thác thông tin chính là mục đích của việc lưu trữ dữ liệu. Để thấy rõ cách tiếp cận gắn kết chương trình và dữ liệu để khai thác thông tin.
Việc lưu trữ dữ liệu điểm các môn học trên máy tính đòi hỏi cần có những phần mềm hỗ trợ cập nhật dữ liệu điểm và khai thác thông tin từ những dữ liệu đó. Có thể chỉ ra một số thành phần cần có của phần mềm (thường được gọi là các mô đun phần mềm) đó là: cập nhật điểm môn học (Điểm môn học), quản lí danh sách lớp học (Danh sách lớp) và lập bảng điểm lớp học từ dữ liệu điểm môn học (Lập bảng điểm). Nếu viết các mô đun phần mềm này bằng một ngôn ngữ lập trình, ví dụ Python, giải pháp lưu trữ đơn giản nhất thường được nghĩ đến là sử dụng trực tiếp hệ thống tệp, ví dụ tệp văn bản (text).
Danh sách lớp học sẽ gồm các dòng, mỗi dòng có nội dung lần lượt là: tên lớp, số thứ tự, họ và tên của một học sinh, ngăn cách nhau bởi dấu phẩy. Ví dụ:
11A, 1, Dương Hoàng Anh
11A, 2, Lương Việt Anh
11A, 3, Nguyễn Kì Duyên
Bảng điểm môn học sẽ gồm các dòng, mỗi dòng có nội dung lần lượt là: tên lớp, số thứ tự, họ và tên của một học sinh, 4 ĐĐG thường xuyên, 1 ĐĐG giữa kì và 1 ĐĐG cuối kì, ngăn cách nhau bởi dấu phẩy (,). Ví dụ:
11A, 1, Dương Hoà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, 10, 9
Hình 11.3 là sơ đồ cho thấy quan hệ giữa các mô đun phần mềm và các tệp dữ liệu. Khi viết mỗi mô đun phần mềm, người lập trình phải biết cấu trúc của các tệp rồi tách các thành phần dữ liệu tương ứng theo dấu phẩy trong các dòng.

Mô đun Danh sách lớp chịu trách nhiệm đọc và ghi những dữ liệu cập nhật vào Danh sách lớp. Mô đun Điểm môn học phải đọc dữ liệu từ Danh sách lớp học, tạo lập dòng mới trong Danh sách lớp học, đọc và ghi dữ liệu cập nhật vào Bảng điểm môn học. Mô đun Lập bảng điểm phải đọc dữ liệu từ Bảng điểm môn học, xử lí dữ liệu để tạo và kết xuất ra bảng điểm lớp học.
Khi đổi cấu trúc các dữ liệu thì các mô đun phần mềm liên quan bắt buộc phải chỉnh sửa theo. Ví dụ, quy định mới về điểm có phần lẻ thập phân, dùng dấu phẩy làm dấu ngăn cách phần nguyên và phần thập phân của điểm, dẫn tới việc dùng dấu khác dấu phẩy để ngăn cách các thành phần của dòng dữ liệu. Khi đó, người viết chương trình buộc phải sửa mô đun Điểm môn học và Lập bảng điểm ở những câu lệnh phân tích, tách dữ liệu, thay đổi cách ghi dòng dữ liệu.
Như vậy, tình trạng phụ thuộc giữa chương trình và dữ liệu dẫn tới việc nếu đổi cách lưu trữ dữ liệu phải sửa đổi phần mềm, làm cho việc thiết kế, bảo trì, phát triển phần mềm mất nhiều thời gian và công sức. Bên cạnh đó, bài toán quản lí, nhất là khi liên quan tới những lĩnh vực lớn hoặc có nhiều biến động, lại thường xuất hiện các yêu cầu khai thác thông tin đa dạng khác nhau từ dữ liệu lưu trữ. Do vậy, việc tổ chức dữ liệu độc lập để phần mềm không cần "nhìn thấy" chi tiết về cách lưu trữ mà vẫn sử dụng được dữ liệu là một trong các ý tưởng quan trọng để hình thành nên khoa học về cơ sở dữ liệu (CSDL) được nêu trong mục tiếp theo.
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.
Hoạt động 2
Hãy so sánh cách thức ghi chép và lưu trữ kết quả điểm môn học nêu trong Mục 1 với cách ghi chép và lưu trữ dưới dạng bảng. Theo em, cách nào là phù hợp hơn? Thông qua ví dụ bảng điểm môn học, hãy chỉ ra một vài lí do cần lưu trữ dữ liệu theo một cấu trúc xác định.
Không thể tiếp tục với cách tiếp cận có sự phụ thuộc lẫn nhau giữa dữ liệu và phần mềm như mô tả ở trên. Cần chọn cách tiếp cận khác, theo đó việc lưu trữ dữ liệu là một vấn đề độc lập, cần được xem xét một cách khái quát. Nhu cầu tổ chức dữ liệu độc lập để giảm công sức và thời gian làm phần mềm là lí do chính cần tổ chức lưu trữ dữ liệu dưới dạng các CSDL.
CSDL là một tập hợp các 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.
Bảng điểm các môn học khi được lưu trữ trong máy tính có thể được xem là ví dụ về CSDL. Thông tin về tài khoản ngân hàng bao gồm tên chủ tài khoản, số căn cước công dân, số dư có trong tài khoản,... có thể được tổ chức thành CSDL để quản lí và phục vụ khách hàng một cách nhanh chóng và tiện lợi.
b) Một số thuộc tính cơ bản của CSDL
Hãy nêu ví dụ minh hoạ cho một vài thuộc tính cơ bản của CSDL.
LUYỆN TẬP
VẬN DỤNG
Thư viện là nơi em có thể đến để đọc hay mượn sách. Hãy đề xuất các dữ liệu cần quản lí của một thư viện.
Tài liệu bài học
Bản scan SGK xem ngay trên web · slide và phiếu mở từ Google Drive (cần đăng nhập Google để tải).
Xem nguyên văn trang sách của bài Cơ sở dữ liệu ngay dưới đây.
Xem ngay Slide bài giảngBài trình chiếu đã dạy trên lớp (PowerPoint).
Mở Drive Phiếu học tậpPhiếu ghi bài trên lớp của bài Cơ sở dữ liệu.
Mở Drive Phiếu thực hànhBài tập thực hành kèm theo bài Cơ sở dữ liệu.
Mở Drive Trắc nghiệm12 câu ôn tập bài Cơ sở dữ liệu — bấm Kiểm tra để xem đúng/sai ngay.
Làm ngayNội dung SGK · bản scan
Bài Cơ sở dữ liệu — trang 53–57 của sách giáo khoa.




