Giải SGK Tin học 11 Bài 13 (Kết nối tri thức): Cơ sở dữ liệu quan hệ

Trả lời nhanh

Cơ sở dữ liệu quan hệ lưu dữ liệu trong các bảng gồm hàng (bản ghi) và cột (thuộc tính). Khoá chính là thuộc tính hoặc tập thuộc tính xác định duy nhất mỗi hàng của bảng. Khoá ngoài là thuộc tính của bảng này nhưng là khoá chính của bảng khác, dùng để liên kết các bảng với nhau.

Tóm tắt lý thuyết Bài 13

Bài 13 giúp em hiểu cách các bảng “nói chuyện” với nhau trong một CSDL quan hệ. Nếu ở Bài 12 em học về hệ quản trị CSDL thì ở bài này em học cách tổ chức dữ liệu bên trong CSDL đó. Xem lại kiến thức nền tại Bài 12: Hệ quản trị CSDL và hệ CSDL.

1. Mô hình CSDL quan hệ

Mô hình quan hệ do Edgar Frank Codd đề xuất từ những năm 1970. Dữ liệu được tổ chức thành các bảng (còn gọi là quan hệ). Đây là mô hình phổ biến nhất hiện nay trong các ứng dụng quản lí.

Thuật ngữ Ý nghĩa Ví dụ (bảng Bản nhạc)
Bảng Tập hợp dữ liệu về một loại đối tượng Bảng Bản nhạc
Hàng (bản ghi) Thông tin về một đối tượng cụ thể Một bản nhạc
Cột (thuộc tính, trường) Một loại thông tin của đối tượng, có tên và kiểu dữ liệu Mid, Aid, TenBN

Tính chất cần nhớ: tên cột trong một bảng không trùng nhau, các giá trị trong cùng một cột có cùng kiểu dữ liệu, và không có hai hàng giống hệt nhau.

2. Khoá chính và khoá ngoài

  • Khoá chính: thuộc tính (hoặc nhóm thuộc tính) có giá trị khác nhau ở mọi hàng, nên xác định được đúng một hàng. Giá trị khoá chính không được để trống.
  • Khoá ngoài: thuộc tính của bảng A mà các giá trị của nó phải lấy từ khoá chính của bảng B. Nhờ đó ta nối được dữ liệu hai bảng.
  • Liên kết: quan hệ giữa hai bảng thông qua cặp (khoá ngoài – khoá chính). Nếu một hàng khoá ngoài tham chiếu đến giá trị không tồn tại ở bảng kia thì dữ liệu bị sai (mất tính toàn vẹn tham chiếu).
Sơ đồ bốn bảng Nhạc sĩ, Bản nhạc, Bản thu âm, Ca sĩ với khoá chính, khoá ngoài và mũi tên liên kết
Sơ đồ minh hoạ các bảng trong CSDL bản nhạc và các liên kết khoá ngoài – khoá chính.

Giải bài tập trong SGK

Khởi động: Mô hình cơ sở dữ liệu là gì?

Mô hình CSDL là cách xác định cấu trúc logic của CSDL, tức là dữ liệu được lưu trữ, sắp xếp và thao tác theo kiểu nào. Mô hình phổ biến nhất là mô hình quan hệ, trong đó dữ liệu được biểu diễn bằng các bảng.

Xem lời giải riêng: Khởi động trang 64.

Hoạt động 1 (trang 64)

CSDL bản nhạc gồm bốn bảng: Nhạc sĩ (mã Aid), Ca sĩ (mã Sid), Bản nhạc (mã Mid, kèm Aid của tác giả) và Bản thu âm (kèm Mid và Sid).

  1. Để biết tác giả một bản nhạc, em tìm bản nhạc trong bảng Bản nhạc, đọc giá trị Aid ở hàng đó rồi tra Aid này trong bảng Nhạc sĩ. Theo cách này: “Trường ca sông Lô” là của nhạc sĩ Văn Cao; “Xa khơi” là của nhạc sĩ Nguyễn Tài Tuệ.
  2. Với dòng 0005 TN của bảng Bản thu âm, em lấy Mid tra ở bảng Bản nhạc để biết tên bản nhạc, lấy Sid tra ở bảng Ca sĩ để biết ca sĩ thể hiện. Em đối chiếu số liệu cụ thể trong Hình 13.1 SGK để ghi kết quả.

Ý nghĩa của hoạt động: không cần ghi lặp tên nhạc sĩ ở mỗi bản nhạc, chỉ cần lưu mã rồi “tra” sang bảng khác. Xem thêm lời giải Hoạt động 1.

Câu hỏi 1 (trang 65): Các cột của bảng Bản nhạc

Bảng Bản nhạc có 3 cột: Mid (mã bản nhạc), Aid (mã nhạc sĩ) và TenBN (tên bản nhạc). Xem lời giải chi tiết.

Câu hỏi 2 (trang 65): Thuộc tính chung của bảng Bản thu âm và bảng Ca sĩ

Hai bảng có chung thuộc tính Sid (mã ca sĩ). Đây chính là “cầu nối” cho biết bản thu âm nào do ca sĩ nào thể hiện. Xem lời giải.

Câu hỏi 1 (trang 68): Khoá chính của bảng Ca sĩ và bảng Bản nhạc

  • Bảng Ca sĩ: khoá chính là Sid.
  • Bảng Bản nhạc: khoá chính là Mid.

Lí do bảng Bản nhạc không chọn Aid: một nhạc sĩ có thể sáng tác nhiều bản nhạc nên Aid lặp lại ở nhiều hàng, không xác định duy nhất một hàng. Aid ở bảng này là khoá ngoài, không phải khoá chính. (Một số lời giải lưu hành ghi Aid là khoá chính của bảng Bản nhạc, cách ghi đó chưa đúng.) Xem lời giải Câu hỏi 1 trang 68.

Câu hỏi 2 (trang 68): Khoá ngoài của bảng Bản nhạc và bảng Bản thu âm

Bảng Khoá ngoài Tham chiếu đến
Bản nhạc Aid Khoá chính Aid của bảng Nhạc sĩ
Bản thu âm Mid Khoá chính Mid của bảng Bản nhạc
Bản thu âm Sid Khoá chính Sid của bảng Ca sĩ

Xem lời giải Câu hỏi 2 trang 68.

Luyện tập (trang 68): CSDL học tập

Các bảng: Hocsinh (họ tên, số CCCD, số thẻ học sinh, ngày sinh, địa chỉ); Monhoc (tên, mã môn); Diem (số thẻ học sinh, mã môn, năm, học kì, loại điểm, điểm).

Bảng Khoá chính Khoá ngoài
Hocsinh Số thẻ học sinh (hoặc số CCCD) Không có
Monhoc Mã môn Không có
Diem (Số thẻ học sinh, mã môn, năm, học kì, loại điểm) Số thẻ học sinh → Hocsinh; mã môn → Monhoc

Có thể lấy số CCCD làm khoá chính không? Có thể, vì mỗi người chỉ có một số CCCD nên giá trị này không trùng nhau. Tuy nhiên, thực tế nên chọn số thẻ học sinh vì mọi học sinh đều có thẻ, còn CCCD thì học sinh nhỏ tuổi có thể chưa có (giá trị khoá chính không được để trống). Ngoài ra bảng Diem đang dùng số thẻ học sinh để liên kết, nên chọn số thẻ làm khoá chính của Hocsinh sẽ khớp hơn.

Lưu ý riêng cho bảng Diem: nếu một học kì có nhiều điểm đánh giá thường xuyên của cùng một môn thì năm cột trên vẫn chưa phân biệt được các hàng. Khi đó cần thêm cột “lần” vào khoá chính. Xem lời giải Luyện tập.

Vận dụng (trang 68): CSDL kì thi tốt nghiệp THPT

Đề bài cho: thí sinh có số báo danh, thi một số môn, được xếp vào các phòng thi có đánh số, sau chấm có điểm từng môn. Một phương án thiết kế hợp lí (em có thể thiết kế khác miễn là đúng nguyên tắc khoá):

Bảng Các trường Khoá chính Khoá ngoài
ThiSinh SBD, họ tên, ngày sinh, địa chỉ SBD Không có
MonThi Mã môn, tên môn Mã môn Không có
PhongThi Mã phòng, tên phòng (hoặc địa điểm) Mã phòng Không có
BaiThi SBD, mã môn, mã phòng, điểm (SBD, mã môn) SBD → ThiSinh; mã môn → MonThi; mã phòng → PhongThi

Vì sao khoá chính của BaiThi là (SBD, mã môn)? Mỗi thí sinh chỉ thi một môn một lần, nên cặp này xác định đúng một bài thi. Mã phòng chỉ cho biết bài đó thi ở đâu, nên là khoá ngoài chứ không cần nằm trong khoá chính. Xem lời giải Vận dụng.

Cách xác định khoá chính và khoá ngoài nhanh

  1. Với mỗi bảng, hỏi: “Giá trị nào chắc chắn không lặp lại giữa hai hàng?” Đó là ứng viên khoá chính.
  2. Nếu không có một cột nào đủ, thử ghép hai hay ba cột (khoá gồm nhiều thuộc tính).
  3. Nhìn tên cột chung giữa hai bảng: cột đó là khoá chính ở bảng này thì ở bảng kia nó là khoá ngoài.
  4. Bảng nào chỉ chứa mã của các bảng khác (như Bản thu âm) thường có nhiều khoá ngoài.

Lỗi sai thường gặp

  • Chọn họ tên làm khoá chính: nhiều người trùng tên nên không đảm bảo duy nhất.
  • Nhầm khoá ngoài với khoá chính: cột Aid vừa xuất hiện ở bảng Nhạc sĩ vừa ở bảng Bản nhạc, nhưng chỉ là khoá chính ở bảng Nhạc sĩ.
  • Quên rằng khoá ngoài phải có giá trị tồn tại ở bảng được tham chiếu.
  • Cho rằng mỗi bảng chỉ có một khoá ngoài, trong khi có thể có nhiều.

Mẹo nhớ: “Chính thì độc nhất, ngoài thì đi mượn” – khoá chính là của riêng bảng đó và không trùng, khoá ngoài là “mượn” khoá chính của bảng khác.

Bài luyện tập tự kiểm tra

Cho CSDL thư viện: TheLoai(MaTL, TenTL); Sach(MaSach, TenSach, MaTL); DocGia(MaDG, HoTen, Lop); Muon(MaDG, MaSach, NgayMuon).

  1. Chỉ ra khoá chính của từng bảng.
  2. Chỉ ra các khoá ngoài và bảng được tham chiếu.
  3. Thêm một sách có MaTL = “TL99” mà bảng TheLoai không có mã này. Điều gì sai?

Đáp án:

  1. TheLoai: MaTL. Sach: MaSach. DocGia: MaDG. Muon: (MaDG, MaSach, NgayMuon) vì một bạn có thể mượn lại cùng một cuốn vào ngày khác.
  2. Sach.MaTL → TheLoai; Muon.MaDG → DocGia; Muon.MaSach → Sach.
  3. Khoá ngoài MaTL tham chiếu đến giá trị không tồn tại, vi phạm tính toàn vẹn tham chiếu. Hệ quản trị CSDL sẽ từ chối, hoặc em phải thêm thể loại “TL99” vào bảng TheLoai trước.

Liên kết các bài trong chương

  • Bài 12: Hệ quản trị cơ sở dữ liệu và hệ cơ sở dữ liệu
  • 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 16: Công việc quản trị cơ sở dữ liệu
  • Giải SBT Tin học 11 Bài 13
  • Giải SGK Tin học 11 – Kết nối tri thức (toàn bộ)

Câu hỏi thường gặp

Khoá chính và khoá ngoài khác nhau thế nào?

Khoá chính xác định duy nhất mỗi hàng trong chính bảng đó và không được trống. Khoá ngoài là cột của bảng này lấy giá trị từ khoá chính của bảng khác để tạo liên kết giữa hai bảng.

Khoá chính của bảng Bản nhạc trong Bài 13 là gì?

Là Mid (mã bản nhạc). Cột Aid là khoá ngoài tham chiếu đến bảng Nhạc sĩ, vì một nhạc sĩ có thể có nhiều bản nhạc nên Aid lặp lại.

Một bảng có thể có nhiều khoá ngoài không?

Có. Ví dụ bảng Bản thu âm có hai khoá ngoài là Mid (tham chiếu bảng Bản nhạc) và Sid (tham chiếu bảng Ca sĩ).

Có thể dùng số CCCD làm khoá chính của bảng học sinh không?

Về nguyên tắc có thể vì CCCD không trùng nhau. Nhưng học sinh nhỏ tuổi có thể chưa có CCCD, nên trong CSDL học tập thường chọn số thẻ học sinh làm khoá chính.