TÓM TẮT NỘI DUNG:
1. Xem xét bài toán
2. Tạo lập bảng
3. Tổ chức lại bảng dữ liệu
4. Các loại khoá
5. Về các kiểu dữ liệu của các trường
1. Xem xét bài toán
2. Tạo lập bảng
3. Tổ chức lại bảng dữ liệu
4. Các loại khoá
5. Về các kiểu dữ liệu của các trường
Cùng xem xét lại bài toán quản lí các bản thu âm nhạc. Ta sẽ quy ước nói đến nhạc sĩ sáng tác bản nhạc là nói đến tên một nhạc sĩ hay tên một nhóm nhạc sĩ sáng tác bản nhạc đó. Tương tự như vậy, ta cũng quy ước khi nói đến tên ca sĩ là nói đến một ca sĩ hay một nhóm ca sĩ biểu diễn tác phẩm. Dưới đây là một ví dụ về một bản ghi chép lại thông tin các bản thu âm.
Tổng kết tất cả các thông tin cần quản lí, viết ra thành dãy: Số hiệu bản thu âm (STT), tên bản nhạc, tên nhạc sĩ sáng tác, tên ca sĩ thể hiện. Từ đó em có thể hình dung về một bảng dữ liệu tên là banthuam, với các trường idbanthuam (để lưu số hiệu bản thu âm), tenBannhac (để lưu tên bản nhạc), tenNhacsi (để lưu tên nhạc sĩ), tenCasi (để lưu tên ca sĩ) và viết mô tả ngắn gọn ở dạng:
banthuam(idBanthuam, tenBannhac, tenNhacsi, tenCasi)
Trong bảng này, trường idbanthuam xác định duy nhất một bản thu âm nên được lấy làm khoá chính của bảng. Nhóm cả ba trường tenBannhac, tenNhacsi, tenCasi cũng xác định duy nhất một bản thu âm, nên nhóm các trường này cũng có thể dùng làm khoá chính của bảng, nhưng rõ ràng dùng idBanthuam là ngắn gọn và thuận lợi hơn. Có thể viết lại mô tả bảng trên với tên trường khoá chính có gạch chân như sau:
banthuam(idBanthuam, tenBanthuam, tenNhacsi, tenCasi)
Phân tích và sắp xếp lại để hạn chế lượng dữ liệu lặp lại.
Một ca sĩ có thể là người thể hiện nhiều bản nhạc khác nhau nên trường tenCasi có giá trị lặp lại, tên ca sĩ lại dài, làm lớn dung lượng lưu trữ và khó khăn khi cần sửa chữa. Ví dụ, trong Bảng 18.1 ca sĩ Trần Khánh thể hiện hai bản nhạc (ở dòng số 3 và 9), khi cần sửa chữa tên của ca sĩ, sẽ phải tìm sửa ở tất cả những dòng có tên ca sĩ này.
Để khắc phục hạn chế này, cách làm tốt hơn là lập bảng casi(idCasi, tenCasi) với trường khoá là idCasi và thay tenCasi trong bảng banthuam bởi idCasi. Như vậy, idCasi trong bảng banthuam sẽ là khoá ngoài tham chiếu đến khoá chính idCasi trong bảng casi.
banthuam(idBanthuam, tenBannhac, tenNhacsi, idCasi)
casi(idCasi, tenCasi)
Tương tự, một bản nhạc có thể có nhiều bản thu âm khác nhau do những ca sĩ khác nhau thể hiện. Ví dụ, trong Bảng 18.1, bản nhạc Trường ca Sông Lô xuất hiện ở dòng số 2 và số 9. Do đó, cách tốt hơn là tạo bảng bannhac(idBannhac, tenBannhac, tenNhacsi) với trường khoá là idbannhac và thay cặp (tenBannhac, tenNhacsi) trong bảng banthuam bởi idBannhac.
banthuam(idBanthuam, idBannhac, idCasi)
casi(idCasi, tenCasi)
bannhac(idbannhac, tenBannhac, tenNhacsi)
Tên nhạc sĩ trong bảng bannhac bị lặp lại do một nhạc sĩ có thể sáng tác nhiều bản nhạc; Ví dụ, trong bảng 18.1, nhạc sĩ Văn Cao xuất hiện trong hai dòng số 2 và số 6; vì vậy lại lập bảng nhacsi(idNhacsi, tenNhacsi) và thay thế trường tenNhacsi trong bảng bannhac bởi idNhacsi.
Các bảng dữ liệu thu được bây giờ sẽ là:
- Mỗi bảng đã có một khoá chính (tên trường được gạch chân).
- Khoá ngoài của các bảng:
bannhac: idNhacsi tham chiếu đến idNhacsi trong bảng nhacsi.
banthuam: idBannhac tham chiếu đến idBannhac trong bảng bannhac.
idCasi tham chiếu đến idCasi trong bảng casi.
Có thể tóm tắt lại về cấu trúc các bảng và quan hệ của các bảng theo tham chiếu từ khoá ngoài đến khoá chính ở dạng sơ đồ như Hình 18.2.
- Khoá cấm trùng lặp giá trị (Unique): Cặp (tenBannhac, idNhacsi) trong bảng bannhac không được trùng lặp giá trị. Cặp (idbannhac, idCasi) cũng không được trùng lặp giá trị. Để ghi nhớ điều này người ta cũng nói rằng các trường này phải đặt khoá cấm trùng lặp.
Các trường tên tenNhacsi, tenCasi, tenBannhac có thể chọn là xâu kí tự có độ dài tối đa 255 kí tự (VARCHAR (255)).
Tổng kết tất cả các thông tin cần quản lí, viết ra thành dãy: Số hiệu bản thu âm (STT), tên bản nhạc, tên nhạc sĩ sáng tác, tên ca sĩ thể hiện. Từ đó em có thể hình dung về một bảng dữ liệu tên là banthuam, với các trường idbanthuam (để lưu số hiệu bản thu âm), tenBannhac (để lưu tên bản nhạc), tenNhacsi (để lưu tên nhạc sĩ), tenCasi (để lưu tên ca sĩ) và viết mô tả ngắn gọn ở dạng:
banthuam(idBanthuam, tenBannhac, tenNhacsi, tenCasi)
Trong bảng này, trường idbanthuam xác định duy nhất một bản thu âm nên được lấy làm khoá chính của bảng. Nhóm cả ba trường tenBannhac, tenNhacsi, tenCasi cũng xác định duy nhất một bản thu âm, nên nhóm các trường này cũng có thể dùng làm khoá chính của bảng, nhưng rõ ràng dùng idBanthuam là ngắn gọn và thuận lợi hơn. Có thể viết lại mô tả bảng trên với tên trường khoá chính có gạch chân như sau:
banthuam(idBanthuam, tenBanthuam, tenNhacsi, tenCasi)
Phân tích và sắp xếp lại để hạn chế lượng dữ liệu lặp lại.
Một ca sĩ có thể là người thể hiện nhiều bản nhạc khác nhau nên trường tenCasi có giá trị lặp lại, tên ca sĩ lại dài, làm lớn dung lượng lưu trữ và khó khăn khi cần sửa chữa. Ví dụ, trong Bảng 18.1 ca sĩ Trần Khánh thể hiện hai bản nhạc (ở dòng số 3 và 9), khi cần sửa chữa tên của ca sĩ, sẽ phải tìm sửa ở tất cả những dòng có tên ca sĩ này.
Để khắc phục hạn chế này, cách làm tốt hơn là lập bảng casi(idCasi, tenCasi) với trường khoá là idCasi và thay tenCasi trong bảng banthuam bởi idCasi. Như vậy, idCasi trong bảng banthuam sẽ là khoá ngoài tham chiếu đến khoá chính idCasi trong bảng casi.
banthuam(idBanthuam, tenBannhac, tenNhacsi, idCasi)
casi(idCasi, tenCasi)
Tương tự, một bản nhạc có thể có nhiều bản thu âm khác nhau do những ca sĩ khác nhau thể hiện. Ví dụ, trong Bảng 18.1, bản nhạc Trường ca Sông Lô xuất hiện ở dòng số 2 và số 9. Do đó, cách tốt hơn là tạo bảng bannhac(idBannhac, tenBannhac, tenNhacsi) với trường khoá là idbannhac và thay cặp (tenBannhac, tenNhacsi) trong bảng banthuam bởi idBannhac.
banthuam(idBanthuam, idBannhac, idCasi)
casi(idCasi, tenCasi)
bannhac(idbannhac, tenBannhac, tenNhacsi)
Tên nhạc sĩ trong bảng bannhac bị lặp lại do một nhạc sĩ có thể sáng tác nhiều bản nhạc; Ví dụ, trong bảng 18.1, nhạc sĩ Văn Cao xuất hiện trong hai dòng số 2 và số 6; vì vậy lại lập bảng nhacsi(idNhacsi, tenNhacsi) và thay thế trường tenNhacsi trong bảng bannhac bởi idNhacsi.
Các bảng dữ liệu thu được bây giờ sẽ là:
- Mỗi bảng đã có một khoá chính (tên trường được gạch chân).
- Khoá ngoài của các bảng:
bannhac: idNhacsi tham chiếu đến idNhacsi trong bảng nhacsi.
banthuam: idBannhac tham chiếu đến idBannhac trong bảng bannhac.
idCasi tham chiếu đến idCasi trong bảng casi.
Có thể tóm tắt lại về cấu trúc các bảng và quan hệ của các bảng theo tham chiếu từ khoá ngoài đến khoá chính ở dạng sơ đồ như Hình 18.2.
- Khoá cấm trùng lặp giá trị (Unique): Cặp (tenBannhac, idNhacsi) trong bảng bannhac không được trùng lặp giá trị. Cặp (idbannhac, idCasi) cũng không được trùng lặp giá trị. Để ghi nhớ điều này người ta cũng nói rằng các trường này phải đặt khoá cấm trùng lặp.
5. VỀ CÁC KIỂU DỮ LIỆU CỦA CÁC TRƯỜNG
Để đơn giản, các trường khóa chính thường có kiểu dữ INT và tự động tăng giá trị (AUTO_INCREMENT).Các trường tên tenNhacsi, tenCasi, tenBannhac có thể chọn là xâu kí tự có độ dài tối đa 255 kí tự (VARCHAR (255)).
“Thiên tài chỉ có 1% năng khiếu bẩm sinh, còn 99% là do khổ luyện.” - Thomas Edison
--- The end! ---
CÙNG CHUYÊN MỤC:
PHẦN I. KIẾN THỨC CỐT LÕI CHUNG CHO CẢ HAI ĐỊNH HƯỚNG (CS) VÀ (ICT) - 16 bài.
CHỦ ĐỀ 1. MÁY TÍNH VÀ XÃ HỘI TRI THỨC
Bài 1. Hệ điều hành
Bài 2. Thực hành sử dụng hệ điều hành
Bài 3. Phần mềm nguồn mở và phần mềm chạy trên Internet
Bài 4. Bên trong máy tính
Bài 5. Kết nối máy tính với các thiết bị số
Bài 2. Thực hành sử dụng hệ điều hành
Bài 3. Phần mềm nguồn mở và phần mềm chạy trên Internet
Bài 4. Bên trong máy tính
Bài 5. Kết nối máy tính với các thiết bị số
CHỦ ĐỀ 2. TỔ CHỨC LƯU TRỮ, TÌM KIẾM VÀ TRAO ĐỔI THÔNG TIN
Bài 6. Lưu trữ và chia sẻ tệp tin trên Internet
Bài 7. Thực hành tìm kiếm thông tin trên Internet
Bài 8. Thực hành nâng cao sử dụng thư điện tử và mạng xã hội
Bài 7. Thực hành tìm kiếm thông tin trên Internet
Bài 8. Thực hành nâng cao sử dụng thư điện tử và mạng xã hội
CHỦ ĐỀ 3. ĐẠO ĐỨC, PHÁP LUẬT VÀ VĂN HÓA TRONG MÔI TRƯỜNG SỐ
CHỦ ĐỀ 4. GIỚI THIỆU CÁC HỆ CƠ SỞ DỮ LIỆU
Bài 10. Lưu trữ dữ liệu và khai thác thông tin phục vụ quản lí
Bài 11. Cơ sở dữ liệu
Bài 12. Hệ quản trị cơ sở dữ liệu và hệ cơ sở dữ liệu
Bài 13. Cơ sở dữ liệu quan hệ
Bài 14. SQL - Ngôn ngữ truy vấn có cấu trúc
Bài 15. Bảo mật và an toàn hệ cơ sở dữ liệu
Bài 11. Cơ sở dữ liệu
Bài 12. Hệ quản trị cơ sở dữ liệu và hệ cơ sở dữ liệu
Bài 13. Cơ sở dữ liệu quan hệ
Bài 14. SQL - Ngôn ngữ truy vấn có cấu trúc
Bài 15. Bảo mật và an toàn hệ cơ sở dữ liệu
CHỦ ĐỀ 5. HƯỚNG NGHIỆP VỚI TIN HỌC
PHẦN II. ĐỊNH HƯỚNG KHOA HỌC MÁY TÍNH (CS) - 15 bài.
CHỦ ĐỀ 6. KĨ THUẬT LẬP TRÌNH
Bài 17. Dữ liệu mảng một chiều và hai chiều
Bài 18. Thực hành dữ liệu mảng một chiều và hai chiều
Bài 19. Bài toán tìm kiếm
Bài 20. Thực hành bài toán tìm kiếm
Bài 21. Các thuật toán sắp xếp đơn giản
Bài 22. Thực hành bài toán sắp xếp
Bài 23. Kiểm thử và đánh giá chương trình
Bài 24. Đánh giá độ phức tạp thời gian thuật toán
Bài 25. Thực hành xác định độ phức tạp thời gian thuật toán
Bài 26. Phương pháp làm mịn dần trong thiết kế chương trình
Bài 27. Thực hành thiết kế chương trình theo phương pháp làm mịn dần
Bài 28. Thiết kế chương trình theo mô đun
Bài 29. Thực hành thiết kế chương trình theo mô đun
Bài 30. Thiết lập thư viện cho chương trình
Bài 31. Thực hành thiết lập thư viện cho chương trình
Bài 18. Thực hành dữ liệu mảng một chiều và hai chiều
Bài 19. Bài toán tìm kiếm
Bài 20. Thực hành bài toán tìm kiếm
Bài 21. Các thuật toán sắp xếp đơn giản
Bài 22. Thực hành bài toán sắp xếp
Bài 23. Kiểm thử và đánh giá chương trình
Bài 24. Đánh giá độ phức tạp thời gian thuật toán
Bài 25. Thực hành xác định độ phức tạp thời gian thuật toán
Bài 26. Phương pháp làm mịn dần trong thiết kế chương trình
Bài 27. Thực hành thiết kế chương trình theo phương pháp làm mịn dần
Bài 28. Thiết kế chương trình theo mô đun
Bài 29. Thực hành thiết kế chương trình theo mô đun
Bài 30. Thiết lập thư viện cho chương trình
Bài 31. Thực hành thiết lập thư viện cho chương trình
PHẦN III. ĐỊNH HƯỚNG TIN HỌC ỨNG DỤNG (ICT) - 15 bài.
CHỦ ĐỀ 6. THỰC HÀNH TẠO VÀ KHAI THÁC CƠ SỞ DỮ LIỆU
Bài 17. Quản trị cơ sở dữ liệu trên máy tính
Bài 18. Thực hành xác định cấu trúc bảng và các trường khóa
Bài 19. Thực hành tạo lập cơ sở dữ liệu và các bảng
Bài 20. Thực hành tạo lập các bảng có khóa ngoài
Bài 21. Thực hành cập nhật và truy xuất dữ liệu các bảng
Bài 22. Thực hành cập nhật bảng dữ liệu có tham chiếu
Bài 23. Thực hành truy xuất dữ liệu qua liên kết các bảng
Bài 24. Thực hành sao lưu dữ liệu
Bài 18. Thực hành xác định cấu trúc bảng và các trường khóa
Bài 19. Thực hành tạo lập cơ sở dữ liệu và các bảng
Bài 20. Thực hành tạo lập các bảng có khóa ngoài
Bài 21. Thực hành cập nhật và truy xuất dữ liệu các bảng
Bài 22. Thực hành cập nhật bảng dữ liệu có tham chiếu
Bài 23. Thực hành truy xuất dữ liệu qua liên kết các bảng
Bài 24. Thực hành sao lưu dữ liệu
CHỦ ĐỀ 7. PHẦN MỀM CHỈNH SỬA ẢNH VÀ LÀM VIDEO
Bài 25. Phần mềm chỉnh sửa ảnh
Bài 26. Công cụ tinh chỉnh màu sắc và công cụ chọn
Bài 27. Công cụ vẽ và một số ứng dụng
Bài 28. Tạo ảnh động
Bài 29. Khám phá phần mềm làm phim
Bài 30. Biên tập phim
Bài 31. Thực hành tạo phim hoạt hình
Bài 26. Công cụ tinh chỉnh màu sắc và công cụ chọn
Bài 27. Công cụ vẽ và một số ứng dụng
Bài 28. Tạo ảnh động
Bài 29. Khám phá phần mềm làm phim
Bài 30. Biên tập phim
Bài 31. Thực hành tạo phim hoạt hình
CÁC CHUYÊN MỤC LIÊN QUAN: