Bài 13. Tách một quyển sổ ghi tay thành các bảng dữ liệu liên kết
Biết thế nào là bảng, bản ghi, trường và khoá mới chỉ là một nửa câu chuyện. Nửa còn lại - cũng là phần hay bị hỏi trong đề thi - là tự thiết kế được bộ bảng cho một bài toán quản lí có thật. Bài này đi trọn một ví dụ: từ quyển sổ mượn - trả sách của thư viện trường đến ba bảng dữ liệu nối với nhau bằng khoá.
- Cánh DiềuTin học 11 (Khoa học máy tính) - Chủ đề F · Bài 3. Quan hệ giữa các bảng và khoá ngoài trong cơ sở dữ liệu quan hệtr. 57
- Cánh DiềuTin học 11 (Tin học ứng dụng) - Chủ đề F · Bài 3. Quan hệ giữa các bảng và khoá ngoài trong cơ sở dữ liệu quan hệtr. 57
- Kết nối tri thứcTin học 11 (Khoa học máy tính) - Bài 10. Lưu trữ dữ liệu và khai thác thông tin phục vụ quản lítr. 49–52
- Kết nối tri thứcTin học 11 (Tin học ứng dụng) - Bài 10. Lưu trữ dữ liệu và khai thác thông tin phục vụ quản lítr. 49
Bắt đầu bằng một hình dung
Đầu năm học, thư viện trường của Minh tuyển cộng tác viên, và Minh xung phong nhận việc ghi sổ. Cô phụ trách thư viện đưa cho Minh một quyển sổ kẻ ô to đùng, dặn rằng cứ mỗi lần có bạn nào tới mượn sách thì ghi một dòng: ngày hôm đó, họ tên bạn mượn, lớp của bạn ấy, tên cuốn sách, tên tác giả và ngày hẹn phải trả. Nghe qua thì đơn giản, và trong hai tuần đầu mọi thứ trôi chảy.
Rắc rối bắt đầu từ tháng thứ hai. Bạn Lan lớp 11A2 chuyển sang lớp 11A5. Minh phải lật lại toàn bộ quyển sổ, tìm cho ra mười mấy dòng có tên Lan để sửa lớp. Sửa được mười ba dòng thì Minh mỏi mắt, bỏ sót mất một dòng ở trang trước. Từ hôm đó, cùng một quyển sổ, cùng một người, mà trang này ghi Lan học 11A5, trang kia lại ghi 11A2 - chẳng ai biết chỗ nào mới đúng.
Chưa hết. Có hôm Minh ghi ‘Nguyễn Thị Lan’, hôm khác vội quá ghi ‘Ng. T. Lan’, hôm sau nữa lại có một bạn Lan khác ở lớp 10 tới mượn. Đến cuối học kì, khi cô hỏi lớp nào mượn nhiều sách nhất, ai đang giữ sách quá hạn và cuốn nào được các bạn ưa chuộng nhất, Minh chỉ biết ngồi lật từng trang đếm tay suốt một buổi chiều mà vẫn không dám chắc con số của mình là đúng.
Điều đáng nói là Minh không hề lười, cũng không ghi thiếu chữ nào. Thứ sai ở đây không phải người ghi, mà là cách quyển sổ được kẻ ra ngay từ đầu.
Nội dung bài học
- 1) Bài toán quản lí và những thông tin cần lưu
- 2) Cái bẫy mang tên ‘một bảng cho tất cả’
- 3) Tách thành ba bảng và nối chúng bằng khoá
- 4) Kiểu dữ liệu, trường bắt buộc và phép thử thiết kế
Tóm tắt lý thuyết cần nhớ
- Thiết kế cơ sở dữ liệu bắt đầu từ các câu hỏi quản lí cần trả lời, rồi mới liệt kê thông tin phải lưu - không kẻ bảng trước rồi mới nghĩ sau.
- Dồn mọi thứ vào một bảng duy nhất gây dư thừa dữ liệu và khiến bảng tự mâu thuẫn khi cập nhật mà sót một dòng.
- Nguyên tắc tách bảng: mỗi loại đối tượng một bảng, và mỗi thông tin chỉ được lưu ở đúng một nơi; các bảng nối nhau bằng khoá chính và khoá ngoại chứ không chép lại dữ liệu.
- Nên dùng mã số làm khoá chính thay cho họ tên, chọn đúng kiểu dữ liệu cho từng trường (nhất là kiểu ngày tháng), và tự kiểm tra thiết kế bằng cách thử trả lời lại các câu hỏi khai thác.
Thuật ngữ tiếng Anh trong bài
| Tiếng Anh | Đọc là | Nghĩa |
|---|---|---|
| database | ĐÊI-tơ-bêi | cơ sở dữ liệu (CSDL) Một kho chứa dữ liệu được sắp xếp gọn gàng để tìm và dùng lại dễ dàng - như thư viện xếp sách theo thứ tự. |
| data | ĐÂY-tơ (như 'day' + tơ) | dữ liệu Những con số, chữ, hình còn thô mà máy lưu lại nhưng chưa hiểu ý nghĩa - giống rau củ để trong tủ lạnh, chưa nấu thành món ăn. |
| record | RE-cợt | bản ghi (một hàng) Một hàng trong bảng, chứa đủ thông tin của một đối tượng - như dòng ghi tên, tuổi, lớp của một bạn. |
| field | phin(-đờ) | trường (một cột) Một cột trong bảng, cho biết một loại thông tin - như cột 'Họ tên' hay cột 'Điểm'. |
Câu hỏi trắc nghiệm có đáp án
Mấy câu mẫu để bạn tự kiểm tra ngay. Trong ứng dụng, bài này có đủ 22 câu, chấm điểm tự động và giải thích từng câu sai.
- Bảng có quá nhiều cột nên không in vừa một trang giấy A4, thủ thư buộc phải chia nhỏ khi in.
- Máy tính không thể sắp xếp bảng theo cột ngày mượn được nữa vì một người nằm ở nhiều dòng.
- Dữ liệu bị dư thừa, và khi một độc giả đổi lớp mà sửa sót một dòng thì bảng tự mâu thuẫn với chính nó.
- Không thể thêm dòng mới vào bảng một khi bảng đã có quá nhiều dòng, phần mềm sẽ chặn nhập tiếp.
- Mã độc giả và mã sách, đóng vai trò khoá ngoại trỏ về khoá chính của hai bảng kia.
- Họ tên độc giả và nhan đề sách, chép lại đầy đủ cho người xem dễ đọc.
- Chỉ cần ngày mượn và hạn trả, vì thủ thư đã nhớ ai mượn cuốn nào.
- Toàn bộ các trường của bảng ĐỘC GIẢ và toàn bộ các trường của bảng SÁCH.
- Vì trường họ tên chiếm nhiều bộ nhớ hơn nên làm chương trình chạy chậm hẳn đi, còn mã độc giả chỉ vài kí tự nên tra cứu nhanh.
- Vì các hệ quản trị cơ sở dữ liệu không cho phép khoá chính có kiểu dữ liệu văn bản, khoá chính bắt buộc phải là một số nguyên.
- Vì họ tên của học sinh sẽ thay đổi theo từng năm học nên không dùng lâu dài được, còn mã độc giả thì giữ nguyên suốt các năm.
- Vì hai độc giả có thể trùng họ tên, lại hay bị viết tắt hoặc gõ sai dấu, nên họ tên không phân biệt chắc chắn được từng người.
- a)Nguyên tắc khi tách bảng là mỗi thông tin chỉ được lưu ở đúng một nơi, các bảng khác cần dùng thì tham chiếu tới bằng khoá chứ không chép lại.Đúng
- b)Bảng LƯỢT MƯỢN đã có mã sách rồi, nhưng vẫn nên chép thêm nhan đề và tác giả vào bảng này để tra cứu cho nhanh.Sai
- c)Các trường ngày mượn và hạn trả nên đặt kiểu ngày tháng thay vì kiểu văn bản, để máy tính so sánh được ngày và tính được số ngày quá hạn.Đúng
- d)Khi một độc giả chuyển lớp, với thiết kế ba bảng ta vẫn phải sửa lại lớp ở tất cả các dòng của bảng LƯỢT MƯỢN mà bạn đó xuất hiện.Sai
- (a) Đúng - đây chính là nguyên tắc cốt lõi của việc tách bảng, giúp loại bỏ dư thừa và ngăn dữ liệu mâu thuẫn.
- (b) Sai - chép thêm nhan đề và tác giả là quay lại đúng lỗi của bảng gộp: mỗi lần đính chính tên tác giả lại phải sửa ở rất nhiều dòng, sót một dòng là dữ liệu vênh nhau; đã có mã sách thì lấy chi tiết từ bảng SÁCH là đủ.
- (c) Đúng - nếu lưu ngày dưới dạng xâu kí tự tuỳ ý thì máy không so sánh và không trừ hai ngày cho nhau được, nên không lọc ra được các lượt quá hạn.
- (d) Sai - bảng LƯỢT MƯỢN không hề chứa cột lớp; lớp chỉ nằm ở một ô duy nhất trong bảng ĐỘC GIẢ nên chỉ cần sửa đúng một chỗ là toàn hệ thống được cập nhật.
Thử ngay: minh hoạ từng bước
Bấm từng bước để tự xem cơ chế hoạt động, hoặc bấm “Tự chạy” cho nó tiến mỗi giây một lần. Đổi được dữ liệu đầu vào - không cần đăng nhập.
Học trọn bài này trong ứng dụng
Bài giảng đầy đủ, 22 câu luyện tập chấm tự động, thi thử đúng cấu trúc đề tốt nghiệp (24 trắc nghiệm + 4 Đúng/Sai), bài thực hành máy tự chấm và gia sư AI giải thích chỗ sai.
Phần học miễn phí, không cần tạo tài khoản.
Bài liên quan - Tổ chức, lưu trữ & tìm kiếm thông tin
Cùng mạch kiến thức với bài này, học nối tiếp cho chắc phần lí thuyết.