Tin học 11 · SGK

Bài 13. Cơ sở dữ liệu quan hệ

CƠ SỞ DỮ LIỆU QUAN HỆ

SAU BÀI HỌC NÀY EM SẼ:

Trong bài trước, các em đã biết khái niệm CSDL. Đã có khá nhiều mô hình CSDL khác nhau. Từ những năm 1970, Edgar Frank Codd (1923-2003) đã đề xuất mô hình CSDL quan hệ. Mô hình này nhanh chóng trở thành mô hình phổ biến nhất; nó xuất hiện trong hầu khắp các ứng dụng quản lí, kể cả trong các ứng dụng thư tín điện tử, mạng xã hội. Vậy mô hình CSDL quan hệ là gì?

Hoạt động 1. Tìm hiểu về một CSDL thông tin âm nhạc

Một CSDL các bản nhạc trên một website âm nhạc được tổ chức như mô tả trong Hình 13.1, gồm có danh sách các tên nhạc sĩ với mã (định danh) là Aid (Hình 13.1a), danh sách các tên ca sĩ với mã (định danh) là Sid (Hình 13.1b), danh sách các bản nhạc với tên bản nhạc, mã nhạc sĩ (tác giả bản nhạc) và mã Mid định danh bản nhạc (Hình 13.1c), danh sách các bản thu âm gồm có mã bản nhạc và mã ca sĩ (Hình 13.1d). Hãy quan sát và trả lời các câu hỏi sau:

Nhạc sĩCa sĩBản nhạcBản thu âm
AidTenNSSidTenCSMidAidTenBNMidSid
1Đỗ NhuậnTKTrần Khánh00011Du kích Sông Thao0001TK
2Văn CaoLDLê Dung00022Trường ca Sông Lô0002LD
3Hoàng ViệtTNTân Nhân00033Tình ca0003TK
4Nguyễn Tài TuệQHQuốc Hương0004Xa khơi0004TN
0005Việt Nam quê hương tôi0005QH
a)b)00062Tiến về Hà Nội0006QH

Hình 13.1. CSDL âm nhạc

CSDL này được xây dựng nhằm đáp ứng nhu cầu tìm kiếm các bản nhạc, bản thu âm lưu trữ trong hệ thống theo tên bản nhạc, tên nhạc sĩ, tên ca sĩ. Có thể thấy tất cả các dữ liệu của CSDL này được tổ chức ở dạng các bảng lưu trữ dữ liệu của các đối tượng có các thuộc tính (được hiểu là các đặc tính xác định đối tượng) giống nhau; mỗi đối tượng một hàng. Dữ liệu của mỗi thuộc tính được ghi trong một cột. Ví dụ, bảng Nhạc sĩ lưu trữ những thông tin liên quan đến nhạc sĩ với các cột thuộc tính là mã định danh (Aid) và tên nhạc sĩ (TenNS). Còn bảng Ca sĩ mang thông tin của các ca sĩ với các cột thuộc tính là mã định danh (Sid) và tên ca sĩ (TenCS).

Mỗi bảng có quan hệ với một số bảng còn lại thông qua một thuộc tính nào đó: Bản nhạc và Nhạc sĩ có chung thuộc tính Aid; Bản thu âm và Bản nhạc có chung thuộc tính Mid.

Từ các phân tích trên, có thể thấy Hình 13.2 chính là tóm tắt cách tìm câu trả lời cho các câu hỏi nêu trong Hoạt động 1.

Hình 13.2. Quan hệ giữa các bảng trong CSDL âm nhạc
Hình 13.2. Quan hệ giữa các bảng trong CSDL âm nhạc

Mô hình tổ chức dữ liệu thành các bảng dữ liệu của các đối tượng có các thuộc tính giống nhau, có thể có quan hệ với nhau theo cách tương tự như trên được gọi là mô hình dữ liệu quan hệ, và các CSDL tương ứng được gọi là CSDL quan hệ.

Sau đây, chúng ta sẽ chỉ xem xét các CSDL quan hệ. Vì vậy, để cho gọn, nếu không gây nhầm lẫn, ta sẽ dùng thuật ngữ CSDL thay cho CSDL quan hệ.

CSDL quan hệ là CSDL lưu trữ dữ liệu dưới dạng các bảng có quan hệ với nhau.

Bảng, bản ghi và trường

Về mặt cấu trúc, CSDL quan hệ tổ chức lưu trữ dữ liệu dưới dạng các bảng gồm các hàng và cột. Mỗi hàng của bảng được gọi là một bản ghi, chứa các thông tin về một đối tượng cụ thể được quản lí trong bảng. Mỗi cột trong bảng được gọi là trường (field), thể hiện thuộc tính của đối tượng được quản lí trong bảng. Giá trị ghi trong các trường tương ứng với các thuộc tính của đối tượng.

Ví dụ, bảng Nhạc sĩ có bốn bản ghi là (1, Đỗ Nhuận), (2, Văn Cao), (3, Hoàng Việt), (4, Nguyễn Tài Tuệ). Bảng này có hai trường dữ liệu là Aid và TenNS. Cũng có thể nói, mỗi bản ghi của bảng này có hai thuộc tính là Aid và TenNS.

Nhờ sự nhất quán về cấu trúc như thế, việc thực hiện các thao tác truy xuất dữ liệu (cập nhật, xuất dữ liệu) sẽ có nhiều thuận lợi.

Mỗi bảng có thể có một hay một nhóm trường mà giá trị của chúng tại các bản ghi không trùng nhau, xác định duy nhất một bản ghi; nói cách khác là bộ giá trị của chúng cho phép xác định và phân biệt các bản ghi của bảng. Trường hay nhóm trường ấy được gọi là khoá của bảng.

Một bảng có thể có nhiều khoá. Người ta có thể chọn một khoá (chỉ định) trong các khoá đó làm khoá chính của bảng và thường chọn khoá có số trường ít nhất.

Ví dụ, ở bảng Nhạc sĩ, trường Aid có giá trị phân biệt tại mỗi bản ghi, nó là khoá của bảng Nhạc sĩ.

Ví dụ, ở bảng Bản nhạc, nhóm ba trường Mid, Aid, TenBN có giá trị không trùng nhau tại các bản ghi, chúng làm thành một khoá của bảng Bản nhạc. Mỗi bản nhạc được phân biệt bởi Aid và TenBN, vì vậy nhóm hai trường Aid và TenBN làm thành một khoá của bảng Bản nhạc. Mỗi giá trị của trường Mid cũng xác định phân biệt một bản nhạc, vì vậy Mid cũng là một khoá của bảng Bản nhạc. Để chọn khoá chính của bảng này, rõ ràng chọn Mid là tốt hơn cả. Khoá chính xác định duy nhất các bản ghi của bảng.

Mỗi bảng (A) có thể có một trường hay nhóm các trường (k) làm thành khoá chính ở một bảng khác (B). Khi đó k được gọi là khoá ngoài của A. Hai bảng A và B được gọi là có quan hệ với nhau qua khoá ngoài k của A.

Ví dụ: Trường Aid trong bảng Bản nhạc là một khoá ngoài của bảng này, vì Aid là khoá chính ở bảng Nhạc sĩ.

d) Liên kết dữ liệu

Có thể dùng khoá ngoài của các bảng để thực hiện ghép nối dữ liệu hai bảng với nhau. Người ta gọi việc ghép nối như thế là liên kết (join) dữ liệu theo khoá. Ví dụ: Có thể liên kết bảng Bản nhạc với bảng Nhạc sĩ theo trường Aid để biết được tên nhạc sĩ sáng tác bản nhạc.

Hình 13.3. Mô tả liên kết dữ liệu hai bảng Nhạc sĩ và Bản nhạc
Hình 13.3. Mô tả liên kết dữ liệu hai bảng Nhạc sĩ và Bản nhạc

Nếu liên kết bảng Bản thu âm với bảng Ca sĩ theo khoá Sid và liên kết với bảng Bản nhạc theo khoá Mid, sẽ có được kết quả là một bảng với dữ liệu đầy đủ nhất. Quan sát Bảng NBC (Bản thu âm – Bản nhạc – Ca sĩ), em lại thấy những điều quen thuộc: Bản thu âm thứ hai là bản thu âm do ca sĩ Lê Dung thể hiện bản nhạc Trường ca sông Lô của nhạc sĩ Văn Cao; bản thu âm thứ năm là bản thu âm do ca sĩ Quốc Hương thể hiện bản nhạc Việt Nam quê hương tôi của nhạc sĩ Đỗ Nhuận.

Hình 13.4. Mô tả liên kết dữ liệu ba bảng
Hình 13.4. Mô tả liên kết dữ liệu ba bảng

Lí do tạo CSDL âm nhạc với bốn bảng Nhạc sĩ, Ca sĩ, Bản nhạc, Bản thu âm như ở Hình 13.1 thay vì chỉ một bảng tương tự Bảng NBC có thể được nêu ngắn gọn như sau:

e) Các trường và dữ liệu

Bảng 13.1. Điểm thi tiếng Anh

Hãy xem xét một bảng phức tạp hơn: bảng điểm thi tiếng Anh ở một trung tâm ngoại ngữ.

SBDHọ và tênGiới tínhNgày sinhĐiểm
Phan Việt AnNam17/10/20056,25A1001
2Trần Anh DuyNam11/09/20048,00A1001
3Bùi Thị HươngNữ20/03/20069,50A1001
4Đỗ Hoa HồngNữ15/09/20057,75A1001
5Nguyễn Văn KhoaNam22/11/20037,25A101

Giả sử ta chỉ thiết lập một bảng trong CSDL để lưu trữ dữ liệu từ bảng điểm (sbd, hoten, gt, ngaysinh, điểm, makithi). Chúng ta cùng phân tích các đặc điểm dữ liệu trong các trường này.

Những phân tích trên cho thấy mỗi trường có các dữ liệu cùng một kiểu. Chúng được gọi là kiểu dữ liệu của trường. Trường sbd có kiểu số nguyên; trường hoten có kiểu xâu kí tự độ dài không quá 64 kí tự; trường gt có kiểu lôgic; trường ngaysinh có kiểu ngày tháng; trường điểm có kiểu số thập phân; trường makithi có kiểu xâu kí tự độ dài cố định 5 kí tự.

LUYỆN TẬP

Cho CSDL học tập có các bảng sau: Hocsinh (họ tên; số CCCD; số thẻ học sinh; ngày sinh; địa chỉ), monhoc (tên; mã môn), Điểm (số thẻ học sinh; mã môn; điểm giữa kì; ĐĐG cuối kì).

Hãy xác định các khoá chính và các khoá ngoài của từng bảng, có thể lấy số CCCD làm khoá chính được không?

VẬN DỤNG

Trong kì thi tốt nghiệp trung học phổ thông, học sinh được đánh số báo danh, có thể thi một số môn, được chia vào các phòng thi được đánh số; sau khi chấm sẽ có điểm thi với các môn đăng kí dự thi. Em hãy đề xuất một số bảng dữ liệu và các trường làm khoá chính và khoá ngoài cho các bảng đó.

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).

Nội dung SGK · bản scan

Bài Cơ sở dữ liệu quan hệ — trang 64–68 của sách giáo khoa.

SGK bài 13 – trang 64
Trang 64
SGK bài 13 – trang 65
Trang 65
SGK bài 13 – trang 66
Trang 66
SGK bài 13 – trang 67
Trang 67
SGK bài 13 – trang 68
Trang 68