Bài 10: Cơ sở dữ liệu quan hệ
1. Mô hình dữ liệu
Mô hình dữ liệu là một tập khái niệm dùng để mô tả cấu trúc dữ liệu, các thao tác dữ liệu, các ràng buộc dữ liệu của một CSDL.
Theo các mức mô tả chi tiết về CSDL, có thể phân chia các mô hình dữ liệu thành hai loại:
- Mô hình lôgic (còn gọi là mô hình dữ liệu bậc cao) cho mô tả CSDL ở mức khái niệm và mức khung nhìn, mô tả bản chất lôgic của dữ liệu được lưu trữ;
- Mô hình vật lí (còn gọi là mô hình dữ liệu bậc thấp) cho mô tả CSDL ở mức vật lí, trả lời cho câu hỏi "Dữ liệu được lưu trữ như thế nào?".
2. Mô hình dữ liệu quan hệ
Có nhiều mô hình dữ liệu bậc cao nhưng ở đây ta chỉ đề cập đến mô hình dữ liệu quan hệ vì cho đến nay đó là mô hình phổ biến nhất trong thực tế xây dựng các ứng dụng CSDL.
Mô hình dữ liệu quan hệ (gọi tắt là mô hình quan hệ) được E. F. Codd đề xuất năm 1970. Trong khoảng ba mươi năm trở lại đây, các hệ CSDL xây dựng theo mô hình quan hệ được dùng rất phổ biến.
Trong mô hình quan hệ:
- Về mặt cấu trúc:
+ Dữ liệu được thể hiện trong các bảng.
+ Mỗi bảng bao gồm các hàng và các cột thể hiện thông tin về một chủ thể.
+ Các cột biểu thị các thuộc tính của chủ thể và tên cột thường là tên của thuộc tính.
+ Mỗi hàng biểu thị cho một cá thể, gồm một bộ các giá trị tương ứng với các cột.
- Về mặt thao tác trên dữ liệu:
+ Có thể cập nhật dữ liệu như thêm, xóa hay sửa bản ghi trong một bảng.
+ Các kết quả tìm kiếm thông tin qua truy vấn dữ liệu có được nhờ thực hiện các thao tác trên dữ liệu.
- Về mặt các ràng buộc dữ liệu: Dữ liệu trong các bảng phải thoả mãn một số ràng buộc. Chẳng hạn, không được có hai bộ nào trong một bảng giống nhau hoàn toàn.
3. Cơ sở dữ liệu quan hệ
a. Khái niệm
- Cơ sở dữ liệu được xây dựng dựa trên mô hình dữ liệu quan hệ gọi là cơ sở dữ liệu quan hệ.
- Hệ QTCSDL dùng để tạo lập, cập nhật và khai thác CSDL quan hệ gọi là hệ QTCSDL quan hệ.
b. Các đặc trưng của một quan hệ
Một quan hệ trong hệ CSDL quan hệ có các đặc trưng chính sau:
- Mỗi quan hệ có tên để phân biệt với các quan hệ khác;
- Các bộ là duy nhất và không phân biệt thứ tự;
- Mỗi thuộc tính có tên phân biệt và không phân biệt thứ tự;
- Quan hệ không có thuộc tính đa trị hay phức hợp:
+ Thuộc tính đa trị: 1 thuộc tính tương ứng trong nhiều bộ giá trị;
+ Phức hợp: Một thuộc tính có 2 giá trị.
Lưu ý:
- Quan hệ là bảng;
- Thuộc tính là trường (cột);
- Bộ là bản ghi (hàng).
4. Khóa và liên kết giữa các bảng
a. Khóa
- Khoá của một bảng là một tập thuộc tính gồm một hay một số thuộc tính của bảng có hai tính chất:
+ Không có hai bộ (khác nhau) trong bảng có giá trị bằng nhau trên khoá.
+ Không có tập con thực sự nào của tập thuộc tính này có tính chất.
b. Khóa chính
- Một bảng có thể có nhiều khóa. Trong các khóa của một bảng người ta thường chọn (chỉ định) một khóa làm khoá chính (primary key).
- Trong một hệ QTCSDL quan hệ, khi nhập dữ liệu cho một bảng, giá trị của mọi bộ tại khóa chính không được để trống.
- Các hệ QTCSDL quan hệ kiểm soát điều đó và đảm bảo sự nhất quán dữ liệu, tránh trường hợp thông tin về một đối tượng xuất hiện hơn một lần sau những cập nhật dữ liệu. Trong mô hình quan hệ, ràng buộc như vậy về dữ liệu còn được gọi là ràng buộc toàn vẹn thực thể (hay gọi ngắn gọn là ràng buộc khóa).
Chú ý:
- Mỗi bảng có ít nhất một khóa. Việc xác định khoá phụ thuộc vào quan hệ lôgic của các dữ liệu chứ không phụ thuộc vào giá trị các dữ liệu.
- Nên chọn khoá chính là khoá có ít thuộc tính nhất.
c. Liên kết giữa các bảng
Thực chất sự liên kết giữa các bảng là dựa trên thuộc tính khóa.
Dạng 1: Mô hình dữ liệu quan hệ
Câu 1
Chỉ ra các điều kiện trong mô hình dữ liệu quan hệ Ql_hoctap
Hình 1. Mô hình dữ liệu quan hệ Ql_hoctap
Gợi ý trả lời:
- Cấu trúc dữ liệu: là các bảng dữ liệu, bảng hoc_sinh, Mon_hoc, Bang_diem gồm có các trường dữ liệu, các bản ghi.
- Các ràng buộc: khoá chính, trong bảng hoc_sinh thì dữ liệu trong trường khoá chính là duy nhất.
- Các thao tác cập nhật dữ liệu (thêm, sửa, xoá), khai thác dữ liệu, thống kê dữ liệu theo một điều kiện nào đó, có thể thực hiện trên một bảng hoặc nhiều bảng.
Dạng 2: Cơ sở dữ liệu quan hệ
Câu 2
Trong CSDL quan hệ Ql_hoctap ở ví dụ trên (ví dụ 1), xác định quan hệ, thuộc tính và bộ.
Gợi ý trả lời:
- Quan hệ Hoc_sinh
- Có các thuộc tính: ma_hoc_sinh, Ho_dem, Ten.
- Vì lớp có 50HS nên có 50 bộ, bộ thứ 10 là {12A9, Nguyễn Thị Thanh, An}
Câu 3
Trong CSDL quan hệ Ql_thuvien dưới đây, xác định thuộc tính đa trị và phức hợp.
Hình 2. Cơ sở dữ liệu quan hệ Ql_thuvien
Gợi ý trả lời:
- Bảng có thuộc tính đa trị
Bảng 1. Bảng có thuộc tính đa trị
Vì giá trị Số thẻ TV_02 có 2 bộ giá trị
- Bảng có thuộc tính phức hợp
Bảng 2. Bảng có thuộc tính phức hợp
Ngày mượn trả có 2 cột Ngày mượn và Ngày trả.
1. Mô hình dữ liệu
Mô hình dữ liệu là một tập khái niệm dùng để mô tả cấu trúc dữ liệu, các thao tác dữ liệu, các ràng buộc dữ liệu của một CSDL.
Theo các mức mô tả chi tiết về CSDL, có thể phân chia các mô hình dữ liệu thành hai loại:
- Mô hình lôgic (còn gọi là mô hình dữ liệu bậc cao) cho mô tả CSDL ở mức khái niệm và mức khung nhìn, mô tả bản chất lôgic của dữ liệu được lưu trữ;
- Mô hình vật lí (còn gọi là mô hình dữ liệu bậc thấp) cho mô tả CSDL ở mức vật lí, trả lời cho câu hỏi "Dữ liệu được lưu trữ như thế nào?".
2. Mô hình dữ liệu quan hệ
Có nhiều mô hình dữ liệu bậc cao nhưng ở đây ta chỉ đề cập đến mô hình dữ liệu quan hệ vì cho đến nay đó là mô hình phổ biến nhất trong thực tế xây dựng các ứng dụng CSDL.
Mô hình dữ liệu quan hệ (gọi tắt là mô hình quan hệ) được E. F. Codd đề xuất năm 1970. Trong khoảng ba mươi năm trở lại đây, các hệ CSDL xây dựng theo mô hình quan hệ được dùng rất phổ biến.
Trong mô hình quan hệ:
- Về mặt cấu trúc:
+ Dữ liệu được thể hiện trong các bảng.
+ Mỗi bảng bao gồm các hàng và các cột thể hiện thông tin về một chủ thể.
+ Các cột biểu thị các thuộc tính của chủ thể và tên cột thường là tên của thuộc tính.
+ Mỗi hàng biểu thị cho một cá thể, gồm một bộ các giá trị tương ứng với các cột.
- Về mặt thao tác trên dữ liệu:
+ Có thể cập nhật dữ liệu như thêm, xóa hay sửa bản ghi trong một bảng.
+ Các kết quả tìm kiếm thông tin qua truy vấn dữ liệu có được nhờ thực hiện các thao tác trên dữ liệu.
- Về mặt các ràng buộc dữ liệu: Dữ liệu trong các bảng phải thoả mãn một số ràng buộc. Chẳng hạn, không được có hai bộ nào trong một bảng giống nhau hoàn toàn.
3. Cơ sở dữ liệu quan hệ
a. Khái niệm
- Cơ sở dữ liệu được xây dựng dựa trên mô hình dữ liệu quan hệ gọi là cơ sở dữ liệu quan hệ.
- Hệ QTCSDL dùng để tạo lập, cập nhật và khai thác CSDL quan hệ gọi là hệ QTCSDL quan hệ.
b. Các đặc trưng của một quan hệ
Một quan hệ trong hệ CSDL quan hệ có các đặc trưng chính sau:
- Mỗi quan hệ có tên để phân biệt với các quan hệ khác;
- Các bộ là duy nhất và không phân biệt thứ tự;
- Mỗi thuộc tính có tên phân biệt và không phân biệt thứ tự;
- Quan hệ không có thuộc tính đa trị hay phức hợp:
+ Thuộc tính đa trị: 1 thuộc tính tương ứng trong nhiều bộ giá trị;
+ Phức hợp: Một thuộc tính có 2 giá trị.
Lưu ý:
- Quan hệ là bảng;
- Thuộc tính là trường (cột);
- Bộ là bản ghi (hàng).
4. Khóa và liên kết giữa các bảng
a. Khóa
- Khoá của một bảng là một tập thuộc tính gồm một hay một số thuộc tính của bảng có hai tính chất:
+ Không có hai bộ (khác nhau) trong bảng có giá trị bằng nhau trên khoá.
+ Không có tập con thực sự nào của tập thuộc tính này có tính chất.
b. Khóa chính
- Một bảng có thể có nhiều khóa. Trong các khóa của một bảng người ta thường chọn (chỉ định) một khóa làm khoá chính (primary key).
- Trong một hệ QTCSDL quan hệ, khi nhập dữ liệu cho một bảng, giá trị của mọi bộ tại khóa chính không được để trống.
- Các hệ QTCSDL quan hệ kiểm soát điều đó và đảm bảo sự nhất quán dữ liệu, tránh trường hợp thông tin về một đối tượng xuất hiện hơn một lần sau những cập nhật dữ liệu. Trong mô hình quan hệ, ràng buộc như vậy về dữ liệu còn được gọi là ràng buộc toàn vẹn thực thể (hay gọi ngắn gọn là ràng buộc khóa).
Chú ý:
- Mỗi bảng có ít nhất một khóa. Việc xác định khoá phụ thuộc vào quan hệ lôgic của các dữ liệu chứ không phụ thuộc vào giá trị các dữ liệu.
- Nên chọn khoá chính là khoá có ít thuộc tính nhất.
c. Liên kết giữa các bảng
Thực chất sự liên kết giữa các bảng là dựa trên thuộc tính khóa.
Dạng 1: Mô hình dữ liệu quan hệ
Câu 1
Chỉ ra các điều kiện trong mô hình dữ liệu quan hệ Ql_hoctap
Hình 1. Mô hình dữ liệu quan hệ Ql_hoctap
Gợi ý trả lời:
- Cấu trúc dữ liệu: là các bảng dữ liệu, bảng hoc_sinh, Mon_hoc, Bang_diem gồm có các trường dữ liệu, các bản ghi.
- Các ràng buộc: khoá chính, trong bảng hoc_sinh thì dữ liệu trong trường khoá chính là duy nhất.
- Các thao tác cập nhật dữ liệu (thêm, sửa, xoá), khai thác dữ liệu, thống kê dữ liệu theo một điều kiện nào đó, có thể thực hiện trên một bảng hoặc nhiều bảng.
Dạng 2: Cơ sở dữ liệu quan hệ
Câu 2
Trong CSDL quan hệ Ql_hoctap ở ví dụ trên (ví dụ 1), xác định quan hệ, thuộc tính và bộ.
Gợi ý trả lời:
- Quan hệ Hoc_sinh
- Có các thuộc tính: ma_hoc_sinh, Ho_dem, Ten.
- Vì lớp có 50HS nên có 50 bộ, bộ thứ 10 là {12A9, Nguyễn Thị Thanh, An}
Câu 3
Trong CSDL quan hệ Ql_thuvien dưới đây, xác định thuộc tính đa trị và phức hợp.
Hình 2. Cơ sở dữ liệu quan hệ Ql_thuvien
Gợi ý trả lời:
- Bảng có thuộc tính đa trị
Bảng 1. Bảng có thuộc tính đa trị
Vì giá trị Số thẻ TV_02 có 2 bộ giá trị
- Bảng có thuộc tính phức hợp
Bảng 2. Bảng có thuộc tính phức hợp
Ngày mượn trả có 2 cột Ngày mượn và Ngày trả.