Bài tập 2_1 về cửa hàng mỹ phẩm. Ta có hai mẫu hồ sơ: hóa đơn đặt hàng và hóa đơn bán giao hàng. Bước một, liệt kê tất cả thuộc tính xuất hiện trong hai hóa đơn như số hóa đơn, mã khách, họ tên khách, địa chỉ, ngày đặt hoặc bán, địa chỉ giao, số thứ tự, mã hàng, tên hàng, đơn vị tính, đơn giá, số lượng, thành tiền. Việc liệt kê đầy đủ giúp không bỏ sót thông tin và là cơ sở để gom nhóm. Bước hai, gom các thuộc tính thành kiểu thực thể. Từ họ tên khách và địa chỉ ta có kiểu thực thể khách hàng với khóa là mã khách, vì mã khách duy nhất cho mỗi khách. Từ tên hàng, đơn vị tính, đơn giá ta có kiểu thực thể hàng với khóa là mã hàng, vì mã hàng duy nhất cho mỗi mặt hàng. Khóa là thuộc tính giúp phân biệt các thực thể với nhau, ví dụ hai khách cùng tên nhưng khác mã. Bước ba, xác định kiểu liên kết. Có liên kết đặt giữa khách hàng và hàng, mang các thuộc tính số hóa đơn đặt, ngày đặt, số lượng đặt, vì mỗi lần đặt hàng là một sự kiện riêng. Có liên kết giao giữa khách hàng và hàng, mang các thuộc tính số hóa đơn giao, ngày giao, địa chỉ giao, số lượng giao. Bước bốn, bản số. Một khách hàng có thể đặt nhiều mặt hàng và một mặt hàng có thể được nhiều khách đặt, nên liên kết đặt là nhiều nhiều. Tương tự liên kết giao cũng là nhiều nhiều vì một khách có thể được giao nhiều mặt hàng và một mặt hàng có thể giao cho nhiều khách. Như vậy mô hình thực thể liên kết mở rộng có hai thực thể và hai liên kết nhiều nhiều, mỗi liên kết mang thuộc tính riêng. Ví dụ khách hàng mã KH01 đặt son và kem; cùng mặt hàng son có thể được giao cho nhiều khách khác nhau. Khi vẽ ERD, thực thể là hình chữ nhật, liên kết là hình thoi, thuộc tính là hình oval, khóa gạch chân.
Bài tập 2_1 - Cửa hàng mỹ phẩm (Hóa đơn đặt hàng & bán hàng)
Bước 1 - Xác định thuộc tính: Từ hai mẫu hồ sơ, liệt kê toàn bộ thuộc tính: Số HĐ, Mã khách, Họ tên khách, Địa chỉ, Ngày đặt/bán, Địa chỉ giao, Số TT, Mã hàng, Tên hàng, ĐVT, Đơn giá, Số lượng, Thành tiền.
Bước 2 - Xác định kiểu thực thể, thuộc tính, khóa:
KHÁCH HÀNG(Mã khách, Họ tên khách, Địa chỉ) - khóa: Mã khách.
HÀNG(Mã hàng, Tên hàng, ĐVT, Đơn giá) - khóa: Mã hàng.
Bước 3 - Xác định kiểu liên kết và thuộc tính của liên kết:
Liên kết đặt giữa KHÁCH HÀNG và HÀNG: Số HĐ đặt, Ngày đặt, Số lượng đặt.
Liên kết giao giữa KHÁCH HÀNG và HÀNG: Số HĐ giao, Ngày giao, Địa chỉ giao, Số lượng giao.
Bước 4 - Bản số: Cả hai liên kết đều là nhiều-nhiều (M:N): một khách hàng có thể đặt/giao nhiều mặt hàng và một mặt hàng có thể được đặt/giao cho nhiều khách hàng.
ERD text:
KHÁCH HÀNG (Mã khách PK, Họ tên, Địa chỉ)
|| (đặt) M:N || (giao) M:N
HÀNG (Mã hàng PK, Tên hàng, ĐVT, Đơn giá)
Thuộc tính liên kết đặt: Số HĐ đặt, Ngày đặt, Số lượng đặt
Thuộc tính liên kết giao: Số HĐ giao, Ngày giao, Địa chỉ giao, Số lượng giao
Ví dụ: Khách hàng mã KH01 đặt 2 mặt hàng son và kem; cùng mặt hàng son có thể được giao cho nhiều khách khác nhau.
Bài tập 2_2 - Công ty dịch vụ thể thao ABC
Chương 2 - Mô hình thực thể liên kết
0:00
Bài tập 2_2 về công ty dịch vụ thể dục thể thao. Có ba mẫu hồ sơ: bảng quảng cáo dịch vụ, thẻ thành viên, phiếu sử dụng dịch vụ. Bước một liệt kê thuộc tính: số khu vực, tên khu vực, địa chỉ, mã dịch vụ, tên dịch vụ, đơn giá mỗi giờ, số thẻ, họ tên thành viên, ngày sinh, địa chỉ, năm đăng ký, số phiếu, khu vực số, giờ bắt đầu, giờ kết thúc. Việc có nhiều khu vực và nhiều dịch vụ với đơn giá khác nhau cho thấy cần liên kết mang thuộc tính đơn giá. Bước hai xác định thực thể. Khu vực có khóa số khu vực và các thuộc tính tên khu vực, địa chỉ. Dịch vụ có khóa mã dịch vụ và tên dịch vụ. Thành viên có khóa số thẻ và các thuộc tính họ tên, ngày sinh, địa chỉ, năm đăng ký. Bước ba xác định liên kết. Khu vực và dịch vụ có liên kết cung cấp, là nhiều nhiều, mang thuộc tính đơn giá mỗi giờ vì cùng một dịch vụ có giá khác nhau ở từng khu vực. Thành viên sử dụng dịch vụ tại một khu vực là liên kết ba ngôi giữa thành viên, dịch vụ và khu vực, mang thuộc tính số phiếu, giờ bắt đầu, giờ kết thúc. Liên kết ba ngôi dùng khi một sự kiện liên quan đến ba thực thể cùng lúc, không thể tách thành hai liên kết hai ngôi mà không mất thông tin. Bước bốn bản số: một khu vực cung cấp nhiều dịch vụ, một dịch vụ có ở nhiều khu vực. Một thành viên có thể sử dụng nhiều dịch vụ và một dịch vụ được nhiều thành viên sử dụng. Mô hình mở rộng gồm ba thực thể, một liên kết hai ngôi nhiều nhiều và một liên kết ba ngôi. Ví dụ thành viên Nguyễn Văn A dùng dịch vụ Tennis ở khu vực số 2 từ 17 giờ đến 21 giờ.
Bài tập 2_2 - Công ty dịch vụ thể dục thể thao ABC
Bước 1 - Xác định thuộc tính: Từ 3 mẫu hồ sơ: Số khu vực, Tên khu vực, Địa chỉ, Mã dịch vụ, Tên dịch vụ, Đơn giá/Giờ, Số thẻ, Họ tên thành viên, Ngày sinh, Địa chỉ, Năm đăng ký, Số phiếu, Khu vực số, Bắt đầu, Kết thúc.
Bước 2 - Kiểu thực thể, thuộc tính, khóa:
KHU VỰC(Số khu vực, Tên khu vực, Địa chỉ) - khóa: Số khu vực.
DỊCH VỤ(Mã dịch vụ, Tên dịch vụ) - khóa: Mã dịch vụ.
THÀNH VIÊN(Số thẻ, Họ tên, Ngày sinh, Địa chỉ, Năm đăng ký) - khóa: Số thẻ.
Bước 3 - Kiểu liên kết:
Liên kết cung cấp/quảng cáo giữa KHU VỰC và DỊCH VỤ (M:N) với thuộc tính Đơn giá/Giờ.
Liên kết sử dụng ba ngôi giữa THÀNH VIÊN, DỊCH VỤ, KHU VỰC với thuộc tính Số phiếu, Giờ bắt đầu, Giờ kết thúc.
Bước 4 - Bản số: Một khu vực cung cấp nhiều dịch vụ, một dịch vụ có thể có ở nhiều khu vực (M:N). Một thành viên có thể sử dụng nhiều dịch vụ ở nhiều khu vực.
ERD text:
KHU VỰC (Số khu vực PK, Tên khu vực, Địa chỉ)
|| (cung cấp) M:N || (đơn giá/giờ)
DỊCH VỤ (Mã DV PK, Tên DV)
|| (sử dụng) ternary ||
THÀNH VIÊN (Số thẻ PK, Họ tên, Ngày sinh, Địa chỉ, Năm ĐK)
Thuộc tính liên kết sử dụng: Số phiếu, Bắt đầu, Kết thúc
Bài tập 2_3 - Quản lý điểm sinh viên
Chương 2 - Mô hình thực thể liên kết
0:00
Bài tập 2_3 về quản lý điểm sinh viên. Thực thể sinh viên có các thuộc tính họ tên, ngày sinh, giới tính, nơi sinh, hộ khẩu thường trú, khóa là mã số sinh viên. Mỗi sinh viên chỉ thuộc một khoa, nên liên kết thuộc giữa sinh viên và khoa là nhiều một. Khoa có tên gọi và mã số duy nhất để phân biệt. Lớp học phần có mã lớp duy nhất, tên lớp và thuộc một khoa quản lý. Học phần có tên gọi cụ thể, số tín chỉ và mã số duy nhất. Giảng viên có họ tên, học vị và mã giảng viên duy nhất. Giảng viên phải thuộc sự quản lý hành chính của một khoa, nên liên kết thuộc giữa giảng viên và khoa là nhiều một. Giảng viên có thể dạy nhiều học phần, nhưng mỗi lớp học phần chỉ được phân công cho một giảng viên, nên liên kết phân công từ lớp học phần đến giảng viên là nhiều một. Mỗi lớp học phần thuộc một học phần, nên liên kết thuộc giữa lớp học phần và học phần là nhiều một. Sinh viên có thể đăng ký học nhiều học phần và mỗi sinh viên ứng với một học phần có điểm thi gồm điểm bằng số và điểm bằng chữ. Vì vậy liên kết đăng ký giữa sinh viên và lớp học phần là nhiều nhiều, mang hai thuộc tính điểm số và điểm chữ. Liên kết nhiều nhiều cần bảng trung gian khi chuyển sang mô hình quan hệ sau này. Mô hình mở rộng gồm năm thực thể và sáu liên kết. Ví dụ sinh viên SV01 đăng ký lớp HP01 và có điểm 8.5 chữ B. Khi chuyển sang mô hình quan hệ, liên kết nhiều nhiều đăng ký sẽ trở thành một quan hệ riêng với khóa là mã sinh viên và mã lớp. Thuộc tính điểm số và điểm chữ phụ thuộc vào cả sinh viên và lớp học phần, nên đặt trong quan hệ đăng ký. Sinh viên năm nhất nên nhớ: thực thể là danh từ, liên kết là động từ, thuộc tính là tính từ hoặc thông tin đi kèm.
Bài tập 2_3 - Quản lý điểm sinh viên (bản 1)
Thực thể và thuộc tính:
SINH VIÊN(Mã SV, Họ tên, Ngày sinh, Giới tính, Nơi sinh, Hộ khẩu) - khóa: Mã SV.
KHOA(Mã khoa, Tên khoa) - khóa: Mã khoa.
LỚP HỌC PHẦN(Mã lớp, Tên lớp) - khóa: Mã lớp.
HỌC PHẦN(Mã HP, Tên HP, Số tín chỉ) - khóa: Mã HP.
GIẢNG VIÊN(Mã GV, Họ tên, Học vị) - khóa: Mã GV.
Liên kết và bản số:
SINH VIÊN thuộc KHOA: N:1 (nhiều sinh viên - một khoa).
LỚP HỌC PHẦN thuộc KHOA: N:1.
GIẢNG VIÊN thuộc KHOA: N:1.
LỚP HỌC PHẦN thuộc HỌC PHẦN: N:1 (nhiều lớp - một học phần).
GIẢNG VIÊN phân công giảng dạy LỚP HỌC PHẦN: 1:N (một giảng viên - nhiều lớp).
SINH VIÊN đăng ký LỚP HỌC PHẦN: M:N với thuộc tính Điểm số, Điểm chữ.
ERD text:
SINH VIÊN(Mã SV PK, Họ tên, Ngày sinh, Giới tính, Nơi sinh, Hộ khẩu)
--thuộc--> KHOA(Mã khoa PK, Tên khoa) [N:1]
LỚP HP(Mã lớp PK, Tên lớp) --thuộc--> KHOA [N:1]
LỚP HP --thuộc--> HỌC PHẦN(Mã HP PK, Tên HP, Số tín chỉ) [N:1]
GIẢNG VIÊN(Mã GV PK, Họ tên, Học vị) --thuộc--> KHOA [N:1]
LỚP HP --phân công--> GIẢNG VIÊN [N:1]
SINH VIÊN (đăng ký) LỚP HP [M:N]: Điểm số, Điểm chữ
Bài tập 2_4 - Công ty và đề án
Chương 2 - Mô hình thực thể liên kết
0:00
Bài tập 2_4 về quản lý công ty. Công ty gồm nhiều nhân viên, mỗi nhân viên có mã nhân viên, họ tên, ngày sinh, giới tính, mức lương. Công ty gồm nhiều phòng ban, mỗi phòng ban có mã phòng, tên phòng. Mỗi phòng có một nhân viên là trưởng phòng quản lý phòng và có thông tin ngày nhận chức. Mỗi nhân viên chỉ thuộc vào một phòng ban và một phòng có thể có nhiều nhân viên, nên liên kết thuộc là nhiều một. Liên kết quản lý giữa nhân viên và phòng ban là một một vì một phòng chỉ có một trưởng phòng và một nhân viên làm trưởng phòng cho nhiều nhất một phòng, mang thuộc tính ngày nhận chức. Mỗi đề án có mã đề án, tên đề án, địa điểm thực hiện và do một phòng ban chịu trách nhiệm chủ trì, một phòng ban có thể quản lý nhiều đề án, nên liên kết chủ trì là một nhiều. Quá trình thực hiện mỗi đề án được phân công cho các nhân viên, ghi nhận số giờ làm việc, nên liên kết tham gia giữa nhân viên và đề án là nhiều nhiều mang thuộc tính số giờ. Nhằm chăm lo đời sống, công ty ghi nhận thân nhân của nhân viên như mã thân nhân, họ tên, ngày sinh, giới tính, quan hệ cha mẹ chồng vợ con. Thân nhân là thực thể yếu vì không có khóa riêng, phụ thuộc vào nhân viên, liên kết có là một nhiều liên kết nhận dạng. Mô hình mở rộng gồm bốn thực thể trong đó một thực thể yếu, và năm liên kết. Ví dụ nhân viên NV01 thuộc phòng ban PB01 và là trưởng phòng với ngày nhận chức 01/01/2025.
Bài tập 2_4 - Công ty (nhân viên, phòng ban, đề án, thân nhân)
Thực thể và thuộc tính:
NHÂN VIÊN(Mã NV, Họ tên, Ngày sinh, Giới tính, Lương) - khóa: Mã NV.
PHÒNG BAN(Mã phòng, Tên phòng) - khóa: Mã phòng.
ĐỀ ÁN(Mã đề án, Tên đề án, Địa điểm) - khóa: Mã đề án.
THÂN NHÂN (thực thể yếu, khóa từng phần Mã thân nhân, Họ tên, Ngày sinh, Giới tính, Quan hệ) - chủ sở hữu: NHÂN VIÊN.
Liên kết và bản số:
NHÂN VIÊN thuộc PHÒNG BAN: N:1.
NHÂN VIÊN làm TRƯỞNG PHÒNG của PHÒNG BAN: 1:1 với thuộc tính Ngày nhận chức.
PHÒNG BAN chủ trì ĐỀ ÁN: 1:N.
NHÂN VIÊN tham gia ĐỀ ÁN: M:N với thuộc tính Số giờ làm việc.
NHÂN VIÊN có THÂN NHÂN: 1:N (liên kết nhận dạng, thực thể yếu).
ERD text:
NHÂN VIÊN(Mã NV PK, Họ tên, Ngày sinh, Giới tính, Lương)
--thuộc--> PHÒNG BAN(Mã phòng PK, Tên phòng) [N:1]
--quản lý (trưởng phòng)--> PHÒNG BAN [1:1], Ngày nhận chức
PHÒNG BAN --chủ trì--> ĐỀ ÁN(Mã ĐA PK, Tên ĐA, Địa điểm) [1:N]
NHÂN VIÊN (tham gia) ĐỀ ÁN [M:N], Số giờ
NHÂN VIÊN (có) THÂN NHÂN(Mã TN, Họ tên, Ngày sinh, Giới tính, Quan hệ) [1:N, weak]
Bài tập 2_5 - Siêu thị
Chương 2 - Mô hình thực thể liên kết
0:00
Bài tập 2_5 về siêu thị. Nhà cung cấp có số hiệu, tên, địa chỉ, số điện thoại. Mặt hàng có mã hàng, tên hàng, màu sắc, trọng lượng, đơn vị tính, số lượng tồn. Gian hàng có mã gian và tên gian. Nhân viên có mã nhân viên, họ tên, lương. Khách hàng có mã khách hàng, họ tên, địa chỉ. Thân nhân là thực thể yếu phụ thuộc nhân viên, gồm mã thân nhân, họ tên, ngày sinh, giới tính, quan hệ. Nhà cung cấp cung cấp mặt hàng là nhiều nhiều vì một nhà cung cấp cung cấp nhiều mặt hàng và một mặt hàng được nhiều nhà cung cấp cung cấp. Mỗi nhà cung cấp ấn định đơn giá riêng cho mỗi mặt hàng họ cung cấp, nên liên kết cung cấp mang thuộc tính đơn giá, số lượng, số hóa đơn, ngày bán. Mỗi mặt hàng chỉ được bán ở một gian hàng, một gian bán nhiều mặt hàng, nên liên kết bán là một nhiều. Một nhân viên tư vấn làm việc với nhiều gian hàng, nên liên kết tư vấn là một nhiều. Khách hàng mua mặt hàng là nhiều nhiều với thuộc tính mã hóa đơn, ngày mua, đơn giá, số lượng. Nhân viên có thân nhân là một nhiều liên kết nhận dạng vì thân nhân là thực thể yếu. Số lượng hàng cung cấp được cập nhật thêm vào số lượng tồn của mặt hàng. Mô hình mở rộng gồm sáu thực thể và năm liên kết. Ví dụ nhà cung cấp NCC01 cung cấp mặt hàng MH01 với đơn giá riêng và số lượng 100. Liên kết cung cấp là nhiều nhiều vì một nhà cung cấp cung cấp nhiều mặt hàng và một mặt hàng có nhiều nhà cung cấp. Liên kết mua cũng là nhiều nhiều vì một khách mua nhiều mặt hàng và một mặt hàng được nhiều khách mua. Thực thể yếu thân nhân phụ thuộc vào nhân viên, không có khóa độc lập, nên dùng liên kết nhận dạng. Khi vẽ ERD, thực thể yếu vẽ bằng hình chữ nhật kép và liên kết nhận dạng bằng hình thoi kép.
Bài tập 2_5 - Siêu thị (nhà cung cấp, gian hàng, khách hàng)
Thực thể và thuộc tính:
NHÀ CUNG CẤP(Số hiệu NCC, Tên NCC, Địa chỉ, SĐT) - khóa: Số hiệu NCC.
MẶT HÀNG(Mã hàng, Tên hàng, Màu sắc, Trọng lượng, ĐVT, Số lượng tồn) - khóa: Mã hàng.
GIAN HÀNG(Mã gian, Tên gian) - khóa: Mã gian.
NHÂN VIÊN(Mã NV, Họ tên, Lương) - khóa: Mã NV.
KHÁCH HÀNG(Mã KH, Họ tên, Địa chỉ) - khóa: Mã KH.
THÂN NHÂN (thực thể yếu, Mã TN, Họ tên, Ngày sinh, Giới tính, Quan hệ) - chủ sở hữu: NHÂN VIÊN.
Liên kết và bản số:
NHÀ CUNG CẤP cung cấp MẶT HÀNG: M:N với thuộc tính Đơn giá, Số lượng, Số HĐ, Ngày bán.
GIAN HÀNG bán MẶT HÀNG: 1:N (một gian - nhiều mặt hàng; mỗi mặt hàng một gian).
NHÂN VIÊN tư vấn cho GIAN HÀNG: 1:N (một nhân viên - nhiều gian).
KHÁCH HÀNG mua MẶT HÀNG: M:N với thuộc tính Mã HĐ, Ngày mua, Đơn giá, Số lượng.
NHÂN VIÊN có THÂN NHÂN: 1:N (thực thể yếu).
ERD text:
NCC(Số hiệu NCC PK, Tên NCC, Địa chỉ, SĐT)
(cung cấp) M:N MẶT HÀNG(Mã hàng PK, Tên hàng, Màu sắc, Trọng lượng, ĐVT, Số lượng tồn)
thuộc tính liên kết: Đơn giá, Số lượng, Số HĐ, Ngày bán
GIAN HÀNG(Mã gian PK, Tên gian) --bán--> MẶT HÀNG [1:N]
NHÂN VIÊN(Mã NV PK, Họ tên, Lương) --tư vấn--> GIAN HÀNG [1:N]
KHÁCH HÀNG(Mã KH PK, Họ tên, Địa chỉ) (mua) MẶT HÀNG [M:N]
thuộc tính liên kết: Mã HĐ, Ngày mua, Đơn giá, Số lượng
NHÂN VIÊN (có) THÂN NHÂN(Mã TN, Họ tên, Ngày sinh, Giới tính, Quan hệ) [1:N, weak]
Bài tập 3_1 - Hệ thống mua bán mỹ phẩm
Chương 3 - Mô hình quan hệ
0:00
Bài tập 3_1 chuyển đổi hệ thống mua bán mỹ phẩm từ mô hình thực thể liên kết kinh điển sang mô hình quan hệ. Ngữ cảnh gồm hai loại hồ sơ: hóa đơn đặt hàng và hóa đơn bán giao hàng. Trong mô hình kinh điển, khách hàng và hàng hóa là hai thực thể mạnh, vì thông tin của họ tồn tại độc lập. Mỗi hóa đơn đặt hàng và mỗi hóa đơn giao hàng là các thực thể phát sinh từ liên kết một nhiều giữa khách hàng và đơn hàng, bởi một khách hàng có thể có nhiều hóa đơn đặt hoặc giao, còn mỗi hóa đơn chỉ thuộc về một khách hàng. Chi tiết đặt hàng và chi tiết giao hàng là các liên kết nhiều nhiều giữa hóa đơn và hàng hóa, vì một hóa đơn có thể chứa nhiều mặt hàng và một mặt hàng có thể xuất hiện trong nhiều hóa đơn khác nhau. Áp dụng quy tắc một, mỗi thực thể mạnh trở thành một quan hệ độc lập: quan hệ khách hàng với khóa chính là mã khách, quan hệ hàng với khóa chính là mã hàng, lưu các thuộc tính mô tả như họ tên, địa chỉ, tên hàng, đơn vị tính và đơn giá. Áp dụng quy tắc ba cho liên kết một nhiều, khóa chính mã khách được đưa sang quan hệ hóa đơn đặt và hóa đơn giao làm khóa ngoại, thể hiện mỗi hóa đơn thuộc về một khách hàng cụ thể. Các thuộc tính ngày đặt, ngày giao và địa chỉ giao được lưu ngay trong quan hệ hóa đơn tương ứng, vì chúng phụ thuộc vào hóa đơn. Áp dụng quy tắc bốn cho liên kết nhiều nhiều, ta tạo hai quan hệ mới là chi tiết đặt hàng và chi tiết giao hàng. Khóa chính của mỗi quan hệ là tổ hợp mã hóa đơn và mã hàng, bởi cùng một hóa đơn có thể chứa nhiều mặt hàng và cùng một mặt hàng có thể xuất hiện trong nhiều hóa đơn. Các khóa ngoại trong hai quan hệ này tham chiếu tới hóa đơn và hàng, đảm bảo toàn vẹn tham chiếu và tránh dữ liệu mồ côi. Thuộc tính số lượng đặt và số lượng giao được đặt trong các quan hệ chi tiết, vì chúng phụ thuộc vào cả hóa đơn và mặt hàng. Kết quả cuối cùng có sáu quan hệ: khách hàng, hàng, hóa đơn đặt, chi tiết đặt hàng, hóa đơn giao và chi tiết giao hàng. Mọi khóa chính và khóa ngoại đều được xác định rõ ràng, không còn liên kết nhiều nhiều trực tiếp, dữ liệu được tách thành các bảng nhỏ gọn, dễ quản lý, giảm dư thừa và sẵn sàng cho các bước chuẩn hóa ở các chương sau. Ví dụ, khách hàng mã KH01 có thể có hóa đơn đặt số HD01 chứa hai mặt hàng son và kem, và cùng mặt hàng son có thể xuất hiện trong hóa đơn giao của khách khác mà không làm lặp thông tin khách hàng.
Bài tập 3_1 - Chuyển đổi hệ thống mua bán mỹ phẩm
Ngữ cảnh nghiệp vụ: Cửa hàng mỹ phẩm có hai loại hồ sơ: hóa đơn đặt hàng (Số HĐ đặt, Mã khách, Họ tên khách, Địa chỉ, Ngày đặt, danh sách mặt hàng) và hóa đơn bán/giao hàng (Số HĐ giao, Mã khách, Họ tên khách, Địa chỉ, Địa chỉ giao, Ngày giao, danh sách mặt hàng).
1. Mô hình ER kinh điển:
KHACH_HANG(MaKhach, HoTenKhach, DiaChi) - thực thể mạnh.
HANG(MaHang, TenHang, DVT, DonGia) - thực thể mạnh.
HOA_DON_DAT(SoHDDat, NgayDat, MaKhach) - liên kết 1-n giữa khách hàng và đơn đặt.
HOA_DON_GIAO(SoHDGiao, NgayGiao, DiaChiGiao, MaKhach) - liên kết 1-n giữa khách hàng và đơn giao.
Liên kết n-n CHI_TIET_DAT_HANG giữa HOA_DON_DAT và HANG, thuộc tính SoLuongDat.
Liên kết n-n CHI_TIET_GIAO_HANG giữa HOA_DON_GIAO và HANG, thuộc tính SoLuongGiao.
2. Áp dụng quy tắc chuyển đổi:
Quy tắc 1 & 3: Chuyển các thực thể mạnh thành quan hệ; đưa MaKhach từ KHACH_HANG sang HOA_DON_DAT và HOA_DON_GIAO làm khóa ngoại.
Quy tắc 4: Tạo quan hệ CHI_TIET_DAT_HANG và CHI_TIET_GIAO_HANG, khóa chính là tổ hợp (SoHDDat, MaHang) và (SoHDGiao, MaHang), kèm khóa ngoại tới hóa đơn và hàng.
SoHDDat tham chiếu HOA_DON_DAT(SoHDDat); MaHang tham chiếu HANG(MaHang)
HOA_DON_GIAO
SoHDGiao
MaKhach tham chiếu KHACH_HANG(MaKhach)
CHI_TIET_GIAO_HANG
(SoHDGiao, MaHang)
SoHDGiao tham chiếu HOA_DON_GIAO(SoHDGiao); MaHang tham chiếu HANG(MaHang)
Bài tập 3_2 - Công ty dịch vụ thể thao ABC
Chương 3 - Mô hình quan hệ
0:00
Bài tập 3_2 chuyển đổi hệ thống dịch vụ thể dục thể thao ABC sang mô hình quan hệ. Công ty có nhiều khu vực kinh doanh, nhiều dịch vụ và nhiều thành viên. Mỗi khu vực có thể cung cấp nhiều dịch vụ, mỗi dịch vụ có thể có ở nhiều khu vực, và đơn giá mỗi giờ khác nhau theo từng khu vực, nên liên kết giữa khu vực và dịch vụ là nhiều nhiều với thuộc tính đơn giá giờ. Áp dụng quy tắc bốn, ta tạo quan hệ khu vực dịch vụ với khóa chính là tổ hợp mã khu vực và mã dịch vụ, chứa thuộc tính đơn giá giờ và hai khóa ngoại tham chiếu tới khu vực và dịch vụ. Điều này cho phép lưu đơn giá riêng cho từng cặp khu vực và dịch vụ mà không lặp thông tin khu vực hay dịch vụ. Thành viên là thực thể mạnh, chuyển thành quan hệ thành viên với khóa chính số thẻ, lưu họ tên, ngày sinh, địa chỉ và năm đăng ký. Phiếu sử dụng dịch vụ ghi nhận một lần tham gia của thành viên vào một dịch vụ tại một khu vực cụ thể, có giờ bắt đầu và giờ kết thúc. Vì mỗi phiếu thuộc về một thành viên, áp dụng quy tắc ba đưa số thẻ từ thành viên sang phiếu sử dụng làm khóa ngoại. Đồng thời phiếu phải tham chiếu tới một cặp khu vực và dịch vụ đã tồn tại trong quan hệ khu vực dịch vụ, nên khóa ngoại là tổ hợp mã khu vực và mã dịch vụ. Khóa chính của phiếu sử dụng là số phiếu, vì mỗi phiếu có số riêng. Kết quả có năm quan hệ: thành viên, khu vực, dịch vụ, khu vực dịch vụ và phiếu sử dụng. Các ràng buộc tham chiếu đảm bảo rằng một phiếu chỉ được lập cho thành viên đã đăng ký và cho dịch vụ đang được cung cấp tại khu vực đó. Mô hình này tránh dư thừa dữ liệu quảng cáo dịch vụ, vì đơn giá chỉ lưu một lần cho mỗi cặp khu vực và dịch vụ, đồng thời hỗ trợ truy vấn lịch sử sử dụng dịch vụ của từng thành viên theo thời gian. Ví dụ thành viên số thẻ B21 sử dụng dịch vụ tennis tại khu vực số hai từ 17 giờ đến 21 giờ sẽ được lưu trong một bộ của quan hệ phiếu sử dụng với khóa ngoại tới thành viên và tới cặp khu vực dịch vụ tương ứng.
Bài tập 3_2 - Chuyển đổi hệ thống dịch vụ thể dục thể thao ABC
Ngữ cảnh nghiệp vụ: Công ty ABC kinh doanh dịch vụ thể dục thể thao, có ba hồ sơ: bảng quảng cáo dịch vụ theo khu vực, thẻ thành viên và phiếu sử dụng dịch vụ.
1. Mô hình ER kinh điển:
KHU_VUC(MaKV, TenKV, DiaChi) - thực thể mạnh.
DICH_VU(MaDV, TenDV) - thực thể mạnh.
Liên kết n-n CUNG_CAP giữa KHU_VUC và DICH_VU, thuộc tính DonGiaGio.
THANH_VIEN(SoThe, HoTen, NgaySinh, DiaChi, NamDangKy) - thực thể mạnh.
PHIEU_SU_DUNG(SoPhieu, GioBatDau, GioKetThuc) - liên kết với thành viên và dịch vụ tại khu vực.
2. Áp dụng quy tắc chuyển đổi:
Quy tắc 1: Chuyển THANH_VIEN, KHU_VUC, DICH_VU thành các quan hệ.
Quy tắc 4: Tạo KHUVUC_DICHVU(MaKV, MaDV, DonGiaGio) cho liên kết nhiều-nhiều giữa khu vực và dịch vụ.
Quy tắc 3: PHIEU_SU_DUNG nhận SoThe từ THANH_VIEN, cùng MaKV và MaDV đại diện cho dịch vụ tại địa điểm sử dụng.
MaKV tham chiếu KHU_VUC(MaKV); MaDV tham chiếu DICH_VU(MaDV)
PHIEU_SU_DUNG
SoPhieu
SoThe tham chiếu THANH_VIEN(SoThe); (MaKV, MaDV) tham chiếu KHUVUC_DICHVU(MaKV, MaDV)
Bài tập 3_3 - Quản lý điểm sinh viên
Chương 3 - Mô hình quan hệ
0:00
Bài tập 3_3 chuyển đổi hệ thống quản lý điểm sinh viên sang mô hình quan hệ. Trong mô hình kinh điển, khoa là thực thể trung tâm, vì mỗi sinh viên chỉ thuộc một khoa, mỗi giảng viên thuộc một khoa quản lý hành chính và mỗi lớp học phần thuộc một khoa. Áp dụng quy tắc ba cho các liên kết một nhiều, khóa chính mã khoa được đưa sang quan hệ sinh viên, quan hệ giảng viên và quan hệ lớp học phần làm khóa ngoại, thể hiện mối quan hệ thuộc về một khoa. Học phần là thực thể độc lập với khóa chính mã học phần, lưu tên học phần và số tín chỉ. Lớp học phần thuộc một học phần cụ thể và được phân công cho một giảng viên giảng dạy, nên khóa chính mã học phần và khóa chính mã giảng viên cũng được đưa sang quan hệ lớp học phần làm khóa ngoại. Như vậy lớp học phần mang đồng thời mã khoa, mã học phần và mã giảng viên, phản ánh đầy đủ các ràng buộc nghiệp vụ: lớp thuộc khoa nào, dạy học phần nào và do giảng viên nào giảng dạy. Sinh viên đăng ký học nhiều lớp học phần, một lớp học phần có nhiều sinh viên, và mỗi lần đăng ký có điểm số và điểm chữ. Đây là liên kết nhiều nhiều, nên áp dụng quy tắc bốn tạo quan hệ kết quả với khóa chính là tổ hợp mã sinh viên và mã lớp. Quan hệ này chứa hai khóa ngoại tham chiếu tới sinh viên và lớp học phần, cùng hai thuộc tính điểm số và điểm chữ. Khóa chính hỗn hợp đảm bảo một sinh viên chỉ có một kết quả cho một lớp học phần cụ thể, tránh trùng lặp. Kết quả có sáu quan hệ: khoa, sinh viên, giảng viên, học phần, lớp học phần và kết quả. Các ràng buộc tham chiếu bảo đảm sinh viên phải thuộc khoa hợp lệ, giảng viên phải thuộc khoa hợp lệ, lớp phải thuộc khoa, học phần và giảng viên hợp lệ, và kết quả chỉ được ghi nhận cho sinh viên và lớp đã tồn tại. Mô hình này tách biệt rõ ràng thông tin sinh viên, thông tin lớp và kết quả học tập, tạo cơ sở để tính điểm trung bình, thống kê theo khoa và theo học phần. Ví dụ sinh viên mã SV01 đăng ký lớp HP01 sẽ có một bộ trong quan hệ kết quả với điểm số và điểm chữ tương ứng.
Bài tập 3_3 - Chuyển đổi hệ thống quản lý điểm sinh viên
Ngữ cảnh nghiệp vụ: Quản lý điểm sinh viên đại học: sinh viên, khoa, giảng viên, học phần, lớp học phần và kết quả đăng ký học.
1. Mô hình ER kinh điển:
KHOA(MaKhoa, TenKhoa) - thực thể mạnh.
SINH_VIEN(MaSV, HoTen, NgaySinh, GioiTinh, NoiSinh, HoKhauThuongTru) - thực thể mạnh.
GIANG_VIEN(MaGV, HoTen, HocVi) - thực thể mạnh.
HOC_PHAN(MaHP, TenHP, SoTinChi) - thực thể mạnh.
LOP_HOC_PHAN(MaLop, TenLop) - thực thể mạnh.
Các liên kết 1-n: Khoa-Sinh viên (Thuộc), Khoa-Giảng viên (Trực thuộc), Khoa-Lớp (Quản lý), Học phần-Lớp, Giảng viên-Lớp (Giảng dạy).
Liên kết n-n SINH_VIEN đăng ký LOP_HOC_PHAN với thuộc tính DiemSo, DiemChu.
2. Áp dụng quy tắc chuyển đổi:
Quy tắc 3 (1-n): SINH_VIEN nhận MaKhoa; GIANG_VIEN nhận MaKhoa; LOP_HOC_PHAN nhận MaKhoa, MaHP và MaGV làm khóa ngoại.
Quy tắc 4 (n-n): Tạo KET_QUA(MaSV, MaLop, DiemSo, DiemChu) với khóa chính (MaSV, MaLop).
MaKhoa tham chiếu KHOA(MaKhoa); MaHP tham chiếu HOC_PHAN(MaHP); MaGV tham chiếu GIANG_VIEN(MaGV)
KET_QUA
(MaSV, MaLop)
MaSV tham chiếu SINH_VIEN(MaSV); MaLop tham chiếu LOP_HOC_PHAN(MaLop)
Bài tập 3_4 - Quản lý đề án công ty
Chương 3 - Mô hình quan hệ
0:00
Bài tập 3_4 chuyển đổi hệ thống quản lý đề án công ty sang mô hình quan hệ. Trong mô hình kinh điển, công ty có ba thực thể mạnh là nhân viên, phòng ban và đề án. Mỗi nhân viên thuộc một phòng ban, nên liên kết làm việc tại là nhiều một; áp dụng quy tắc ba đưa mã phòng từ phòng ban sang nhân viên làm khóa ngoại, thể hiện mỗi nhân viên thuộc về một phòng ban. Mỗi phòng ban có một trưởng phòng là nhân viên và có ngày nhận chức, đây là liên kết một một. Áp dụng quy tắc hai, ta đưa mã nhân viên của trưởng phòng cùng thuộc tính ngày nhận chức vào quan hệ phòng ban dưới dạng khóa ngoại truong_phong_ma_nv, vì mỗi phòng chỉ có một trưởng phòng. Mỗi đề án do một phòng ban chủ trì, cũng là liên kết một nhiều, nên mã phòng được đưa sang quan hệ đề án làm khóa ngoại. Nhân viên tham gia thực hiện đề án là liên kết nhiều nhiều với thuộc tính số giờ làm việc, áp dụng quy tắc bốn tạo quan hệ phân công với khóa chính là tổ hợp mã nhân viên và mã đề án, chứa thuộc tính số giờ và hai khóa ngoại tham chiếu tới nhân viên và đề án. Thân nhân là thực thể yếu phụ thuộc vào nhân viên, vì mã thân nhân chỉ có ý nghĩa phân biệt trong phạm vi một nhân viên. Áp dụng quy tắc thực thể yếu, quan hệ thân nhân có khóa chính là tổ hợp mã nhân viên và mã thân nhân, cùng khóa ngoại mã nhân viên tham chiếu tới nhân viên. Quan hệ này lưu họ tên thân nhân, ngày sinh, giới tính và quan hệ như cha, mẹ, chồng, vợ, con. Kết quả có năm quan hệ: phòng ban, nhân viên, đề án, phân công và thân nhân. Các ràng buộc tham chiếu bảo đảm nhân viên thuộc phòng ban hợp lệ, trưởng phòng phải là nhân viên đã tồn tại, đề án phải do phòng ban hợp lệ chủ trì, phân công chỉ dành cho nhân viên và đề án đã tồn tại, và thân nhân chỉ thuộc nhân viên đã tồn tại. Mô hình này tách rõ thông tin nhân viên, phòng ban, đề án và quá trình phân công, tránh lặp thông tin phòng ban trong mỗi nhân viên và đề án. Ví dụ nhân viên mã NV01 thuộc phòng ban PB01, tham gia đề án DA01 với 20 giờ, và có thân nhân là vợ sẽ được lưu trong các quan hệ tương ứng.
Bài tập 3_4 - Chuyển đổi hệ thống quản lý đề án công ty
Ngữ cảnh nghiệp vụ: Công ty có nhân viên, phòng ban, đề án, phân công thực hiện và thân nhân (thực thể yếu).
1. Mô hình ER kinh điển:
NHAN_VIEN(MaNV, HoTen, NgaySinh, GioiTinh, Luong) - thực thể mạnh.
PHONG_BAN(MaPhong, TenPhong) - thực thể mạnh.
DE_AN(MaDA, TenDA, DiaDiem) - thực thể mạnh.
THAN_NHAN - thực thể yếu phụ thuộc NHAN_VIEN (MaTN, HoTenTN, NgaySinh, GioiTinh, QuanHe).
Liên kết 1-n: PHONG_BAN - NHAN_VIEN (Làm việc tại).
Liên kết 1-1: PHONG_BAN - NHAN_VIEN (Quản lý/Trưởng phòng) có thuộc tính NgayNhanChuc.
Liên kết 1-n: PHONG_BAN - DE_AN (Chủ trì đề án).
Liên kết n-n: NHAN_VIEN - DE_AN (Phân công thực hiện) có thuộc tính SoGio.
2. Áp dụng quy tắc chuyển đổi:
Quy tắc 2 & 3: Đưa MaPhong vào NHAN_VIEN (thuộc phòng). Đưa TruongPhong_MaNV và NgayNhanChuc vào PHONG_BAN. Đưa MaPhong vào DE_AN (phòng chủ trì).
Quy tắc 4: Tạo PHAN_CONG(MaNV, MaDA, SoGio).
Quy tắc thực thể yếu: THAN_NHAN có khóa chính (MaNV, MaTN).
MaNV tham chiếu NHAN_VIEN(MaNV); MaDA tham chiếu DE_AN(MaDA)
THAN_NHAN
(MaNV, MaTN)
MaNV tham chiếu NHAN_VIEN(MaNV)
Bài tập 3_5 - Quản lý siêu thị
Chương 3 - Mô hình quan hệ
0:00
Bài tập 3_5 chuyển đổi hệ thống quản lý siêu thị sang mô hình quan hệ, là bài phức tạp nhất với nhiều thực thể và liên kết. Nhà cung cấp, gian hàng, nhân viên, mặt hàng, khách hàng là các thực thể mạnh, mỗi thực thể trở thành một quan hệ với khóa chính riêng. Mặt hàng thuộc một gian hàng cụ thể, mỗi gian hàng bán nhiều mặt hàng nhưng mỗi mặt hàng chỉ thuộc một gian hàng, nên đây là liên kết một nhiều; áp dụng quy tắc ba đưa mã gian hàng sang quan hệ mặt hàng làm khóa ngoại. Khách hàng mua hàng thông qua hóa đơn bán, mỗi hóa đơn bán thuộc về một khách hàng, nên mã khách được đưa sang quan hệ hóa đơn bán làm khóa ngoại. Nhà cung cấp cung cấp hàng thông qua hóa đơn nhập, mỗi hóa đơn nhập do một nhà cung cấp phát hành, nên mã nhà cung cấp được đưa sang quan hệ hóa đơn nhập làm khóa ngoại. Nhân viên tư vấn cho gian hàng là liên kết nhiều nhiều, vì một nhân viên có thể làm việc tại nhiều gian hàng và một gian hàng có thể có nhiều nhân viên tư vấn; áp dụng quy tắc bốn tạo quan hệ nhân viên gian hàng với khóa chính là tổ hợp mã nhân viên và mã gian hàng. Nhà cung cấp cung cấp mặt hàng với đơn giá riêng, đây là liên kết nhiều nhiều, nên tạo quan hệ cung cấp với khóa chính là tổ hợp mã nhà cung cấp và mã hàng, chứa thuộc tính đơn giá cung cấp. Hóa đơn nhập chứa nhiều mặt hàng và một mặt hàng có thể xuất hiện trong nhiều hóa đơn nhập, nên tạo quan hệ chi tiết hóa đơn nhập với khóa chính là tổ hợp mã hóa đơn nhập và mã hàng, chứa số lượng nhập. Tương tự, hóa đơn bán chứa nhiều mặt hàng và một mặt hàng có thể xuất hiện trong nhiều hóa đơn bán, nên tạo quan hệ chi tiết hóa đơn bán với khóa chính là tổ hợp mã hóa đơn bán và mã hàng, chứa số lượng bán và đơn giá bán. Thân nhân nhân viên là thực thể yếu phụ thuộc nhân viên, nên quan hệ thân nhân nhân viên có khóa chính là tổ hợp mã nhân viên và mã thân nhân, cùng khóa ngoại mã nhân viên. Kết quả có mười hai quan hệ: nhà cung cấp, gian hàng, nhân viên, nhân viên gian hàng, mặt hàng, cung cấp, hóa đơn nhập, chi tiết hóa đơn nhập, khách hàng, hóa đơn bán, chi tiết hóa đơn bán và thân nhân nhân viên. Các ràng buộc tham chiếu đảm bảo mọi dữ liệu chi tiết đều tham chiếu tới các thực thể và hóa đơn đã tồn tại, tránh dữ liệu mồ côi. Mô hình này tách biệt thông tin nhập hàng và bán hàng, cho phép theo dõi tồn kho, doanh thu và nhà cung cấp hiệu quả. Ví dụ một mặt hàng mã MH01 thuộc gian hàng GH01, được nhà cung cấp NCC01 cung cấp với đơn giá riêng, được nhập qua hóa đơn HN01 và bán qua hóa đơn HB01 cho khách hàng KH01, tất cả các thông tin này được lưu trong các quan hệ tương ứng mà không lặp dữ liệu.
Bài tập 3_5 - Chuyển đổi hệ thống quản lý siêu thị
Ngữ cảnh nghiệp vụ: Siêu thị làm việc với nhà cung cấp, mặt hàng, gian hàng, nhân viên, khách hàng, hóa đơn nhập, hóa đơn bán và thân nhân nhân viên.
1. Mô hình ER kinh điển:
NHA_CUNG_CAP(MaNCC, TenNCC, DiaChi, SoDT) - thực thể mạnh.
GIAN_HANG(MaGianHang, TenGianHang) - thực thể mạnh.
NHAN_VIEN(MaNV, HoTen, Luong) - thực thể mạnh.
MAT_HANG(MaHang, TenHang, MauSac, TrongLuong, DVT, SoLuongTon) - thực thể mạnh.
KHACH_HANG(MaKH, HoTenKH, DiaChi) - thực thể mạnh.
HOA_DON_NHAP(MaHDNhap, NgayNhap) - thực thể/hóa đơn nhập.
HOA_DON_BAN(MaHDBan, NgayMua) - thực thể/hóa đơn bán.
THAN_NHAN_NV - thực thể yếu phụ thuộc NHAN_VIEN.
Liên kết 1-n: GIAN_HANG - MAT_HANG; KHACH_HANG - HOA_DON_BAN; NHA_CUNG_CAP - HOA_DON_NHAP.
Liên kết n-n: NHAN_VIEN - GIAN_HANG; HOA_DON_NHAP - MAT_HANG; HOA_DON_BAN - MAT_HANG; NHA_CUNG_CAP - MAT_HANG (Cung ứng, DonGiaCungCap).
2. Áp dụng quy tắc chuyển đổi:
Quy tắc 1, 2, 3: Chuyển các thực thể mạnh và thiết lập khóa ngoại cho các liên kết 1-n: MaGianHang vào MAT_HANG; MaKH vào HOA_DON_BAN; MaNCC vào HOA_DON_NHAP.
Quy tắc 4: Tạo các bảng kết hợp n-n: CUNG_CAP, NV_GIANHANG, CHI_TIET_HD_NHAP, CHI_TIET_HD_BAN.
Quy tắc thực thể yếu: THAN_NHAN_NV(MaNV, MaTN, ...).
MaNV tham chiếu NHAN_VIEN(MaNV); MaGianHang tham chiếu GIAN_HANG(MaGianHang)
MAT_HANG
MaHang
MaGianHang tham chiếu GIAN_HANG(MaGianHang)
CUNG_CAP
(MaNCC, MaHang)
MaNCC tham chiếu NHA_CUNG_CAP(MaNCC); MaHang tham chiếu MAT_HANG(MaHang)
HOA_DON_NHAP
MaHDNhap
MaNCC tham chiếu NHA_CUNG_CAP(MaNCC)
CHI_TIET_HD_NHAP
(MaHDNhap, MaHang)
MaHDNhap tham chiếu HOA_DON_NHAP(MaHDNhap); MaHang tham chiếu MAT_HANG(MaHang)
KHACH_HANG
MaKH
-
HOA_DON_BAN
MaHDBan
MaKH tham chiếu KHACH_HANG(MaKH)
CHI_TIET_HD_BAN
(MaHDBan, MaHang)
MaHDBan tham chiếu HOA_DON_BAN(MaHDBan); MaHang tham chiếu MAT_HANG(MaHang)
THAN_NHAN_NV
(MaNV, MaTN)
MaNV tham chiếu NHAN_VIEN(MaNV)
Bài tập 4_1 - Hợp, hiệu, giao của hai quan hệ
Chương 4 - Đại số quan hệ
0:00
Bài tập 4_1 thực hiện các phép toán lý thuyết tập hợp trên hai quan hệ tương thích R và S có cùng lược đồ ABC. Quan hệ R có ba bộ: a1 b1 c1, a1 b2 c1 và a2 b2 c2. Quan hệ S có hai bộ: a2 b1 c2 và a2 b2 c2. Phép hợp R hợp S gộp tất cả các bộ của hai quan hệ và loại bỏ bộ trùng lặp, kết quả gồm bốn bộ: a1 b1 c1, a1 b2 c1, a2 b1 c2 và a2 b2 c2. Phép hiệu R trừ S giữ lại các bộ thuộc R mà không thuộc S; bộ a2 b2 c2 xuất hiện trong S nên bị loại, còn lại hai bộ a1 b1 c1 và a1 b2 c1. Phép giao R giao S giữ lại những bộ chung của hai quan hệ, chỉ còn bộ a2 b2 c2. Ba phép toán này yêu cầu hai quan hệ phải tương thích: cùng số thuộc tính, cùng miền giá trị và cùng thứ tự thuộc tính, và kết quả không có bộ trùng lặp.
Bài tập 4_1 - Các phép toán lý thuyết tập hợp trên hai quan hệ tương thích
Cho hai quan hệ R(ABC) và S(ABC) có cùng lược đồ nên tương thích (khả hợp), dữ liệu như sau.
Quan hệ R:
A
B
C
a1
b1
c1
a1
b2
c1
a2
b2
c2
Quan hệ S:
A
B
C
a2
b1
c2
a2
b2
c2
1. R ∪ S (hợp): lấy mọi bộ thuộc R hoặc S, loại bỏ bộ trùng. Bộ (a2,b2,c2) xuất hiện ở cả R và S nên chỉ giữ một lần.
A
B
C
a1
b1
c1
a1
b2
c1
a2
b1
c2
a2
b2
c2
2. R − S (hiệu): các bộ thuộc R nhưng không thuộc S. Bộ (a2,b2,c2) có trong S nên bị loại.
A
B
C
a1
b1
c1
a1
b2
c1
3. R ∩ S (giao): các bộ xuất hiện đồng thời trong cả R và S.
A
B
C
a2
b2
c2
Bài tập 4_2 - Tích Đề-các R × S
Chương 4 - Đại số quan hệ
0:00
Bài tập 4_2 tính tích Đề-các của hai quan hệ R và S. R có ba bộ và S có hai bộ, nên kết quả có sáu bộ. Phép tích Đề-các không yêu cầu hai quan hệ tương thích; nó kết hợp mọi bộ của R với mọi bộ của S. Thuộc tính của kết quả là hợp của các thuộc tính hai quan hệ: A, B, C, D, E, F. Các bộ kết quả được liệt kê bằng cách ghép từng bộ của R với từng bộ của S theo thứ tự. Phép tích này thường là cơ sở để xây dựng các phép kết nối, và trong thực tế nên kết hợp với phép chọn để tránh bùng nổ dữ liệu.
Bài tập 4_2 - Tích Đề-các của hai quan hệ
Cho R(ABC) và S(DEF) không cần tương thích. Tính R × S.
R:
A
B
C
a
b
C
d
a
F
c
b
D
S:
D
E
F
a
b
c
d
a
f
Kết quả R × S có 3 × 2 = 6 bộ, lược đồ ABCDEF (thuộc tính D,E,F của S được nối thêm).
A
B
C
D
E
F
a
b
C
a
b
c
a
b
C
d
a
f
d
a
F
a
b
c
d
a
F
d
a
f
c
b
D
a
b
c
c
b
D
d
a
f
Bài tập 4_3 - Phép chia R : S
Chương 4 - Đại số quan hệ
0:00
Bài tập 4_3 thực hiện phép chia R chia S. R có lược đồ ABCD, S có lược đồ CD, nên phép chia cho kết quả lược đồ AB. Ý nghĩa là tìm các cặp giá trị A, B sao cho kết hợp với mọi cặp C, D trong S đều tồn tại trong R. S gồm hai bộ c1 d2 và c2 d3. Xét cặp a1 b1: R chứa cả a1 b1 c1 d2 và a1 b1 c2 d3 nên thỏa điều kiện với mọi. Cặp a1 b2 chỉ có c1 d2, thiếu c2 d3 nên không thỏa. Các cặp a2 b1 có D là d1, không khớp với S. Vậy kết quả chỉ có một bộ a1 b1. Phép chia thường dùng cho các truy vấn dạng với mọi, ví dụ sinh viên đăng ký tất cả học phần bắt buộc.
Bài tập 4_3 - Phép chia R : S
Cho R(ABCD) và S(CD). Tính R : S (tức R ÷ S).
R:
A
B
C
D
a1
b1
c1
d2
a1
b1
c2
d3
a1
b2
c1
d2
a2
b1
c1
d1
a2
b1
c2
d1
S:
C
D
c1
d2
c2
d3
Phép chia tìm các giá trị (A,B) sao cho với mọi bộ (C,D) trong S, bộ (A,B,C,D) đều có trong R.
Xét (a1,b1): có (c1,d2) và (c2,d3) trong R → thỏa. Xét (a1,b2): thiếu (c2,d3). Xét (a2,b1): các bộ của R có D=d1, không khớp S.
Kết quả R : S:
A
B
a1
b1
Bài tập 4_4 - Thuật toán thực hiện biểu thức quan hệ
Chương 4 - Đại số quan hệ
0:00
Bài tập 4_4 yêu cầu viết thuật toán cho các biểu thức đại số quan hệ. Biểu thức R(E)[X] có nghĩa chọn các bộ của R thỏa điều kiện E rồi chiếu lên tập thuộc tính X, nên thuật toán duyệt R, kiểm tra điều kiện, nếu thỏa thì thêm phần chiếu X vào kết quả nếu chưa có. Biểu thức (P*Q)(E) là kết nối tự nhiên P và Q rồi chọn theo E trên toàn bộ thuộc tính XY; thuật toán trước tiên tạo quan hệ trung gian bằng kết nối tự nhiên trên các thuộc tính chung, sau đó lọc theo E. Biểu thức (P*Q)[Z] cũng kết nối tự nhiên trước, rồi chiếu lên Z và loại trùng. Biểu thức P*Q(E) kết nối tự nhiên rồi chọn theo điều kiện E phát biểu trên Y, tức chỉ kiểm tra phần thuộc tính của Q. Biểu thức P*Q[Z] kết nối tự nhiên rồi chiếu lên Z, với Z nằm trong Y và có giao với X. Tất cả đều tuân theo nguyên tắc mỗi phép toán nhận quan hệ và trả về quan hệ, kết quả không có bộ trùng lặp.
Bài tập 4_4 - Thuật toán thực hiện các biểu thức quan hệ
Viết thuật toán cho các biểu thức sau (U,V là tập thuộc tính; X,Y,Z là tập thuộc tính; E là biểu thức logic).
1. R(E)[X] với R(U), X ⊆ U, E phát biểu trên U. Nghĩa là chọn các bộ của R thỏa E rồi chiếu lên X.
Create(T, X); // T rỗng
For each tuple t in R do
If t(E) = TRUE then
If !(t.X in T) then Add(T, t.X);
End if;
End for;
Return T;
2. (P*Q)(E) với P(X), Q(Y), X∩Y ≠ ∅, E phát biểu trên XY. Nghĩa là kết nối tự nhiên P và Q rồi chọn theo E.
Create(T1, X∪Y); // T1 rỗng
Xc = X ∩ Y;
For each tuple p in P do
For each tuple q in Q do
If p.Xc = q.Xc then
Add(T1, (p, q.(Y-Xc)));
End if;
End for;
End for;
Create(T, X∪Y); // T rỗng
For each tuple t in T1 do
If t(E) = TRUE then Add(T, t);
End for;
Return T;
3. (P*Q)[Z] với P(X), Q(Y), X∩Y ≠ ∅, Z ⊆ XY. Nghĩa là kết nối tự nhiên rồi chiếu lên Z.
Create(T1, X∪Y); // T1 rỗng
Xc = X ∩ Y;
For each tuple p in P do
For each tuple q in Q do
If p.Xc = q.Xc then Add(T1, (p, q.(Y-Xc)));
End for;
End for;
Create(T, Z); // T rỗng
For each tuple t in T1 do
If !(t.Z in T) then Add(T, t.Z);
End for;
Return T;
4. P*Q(E) với P(X), Q(Y), X∩Y ≠ ∅, E phát biểu trên Y. Nghĩa là kết nối tự nhiên rồi chọn theo điều kiện trên thuộc tính của Q.
Create(T1, X∪Y); // T1 rỗng
Xc = X ∩ Y;
For each tuple p in P do
For each tuple q in Q do
If p.Xc = q.Xc then Add(T1, (p, q.(Y-Xc)));
End for;
End for;
Create(T, X∪Y); // T rỗng
For each tuple t in T1 do
If t_Y(E) = TRUE then Add(T, t); // t_Y là phần thuộc tính Y của t
End for;
Return T;
5. P*Q[Z] với X∩Z ≠ ∅ và Z ⊆ Y. Nghĩa là kết nối tự nhiên rồi chiếu lên Z (Z nằm trong Y).
Create(T1, X∪Y); // T1 rỗng
Xc = X ∩ Y;
For each tuple p in P do
For each tuple q in Q do
If p.Xc = q.Xc then Add(T1, (p, q.(Y-Xc)));
End for;
End for;
Create(T, Z); // T rỗng
For each tuple t in T1 do
If !(t.Z in T) then Add(T, t.Z);
End for;
Return T;
Bài tập 4_5 - Chọn và chiếu trên R(ABCD)
Chương 4 - Đại số quan hệ
0:00
Bài tập 4_5 thực hiện các phép chọn và chiếu trên quan hệ R có lược đồ ABCD với năm bộ dữ liệu. Phép chọn R với A bằng a1 giữ lại ba bộ có A là a1. Phép chọn C lớn hơn 3 giữ lại hai bộ có C là 4 và 5. Phép chọn A bằng a1 hoặc C lớn hơn hoặc bằng 4 giữ lại tất cả năm bộ, vì các bộ còn lại đều có C bằng 4 hoặc 5. Phép chiếu R[ABC] giữ lại ba thuộc tính A, B, C và loại trùng, kết quả năm bộ vì tất cả đều khác nhau. Phép chiếu R[ACD] giữ lại A, C, D; bộ a1 3 1 xuất hiện hai lần nên chỉ còn một, kết quả bốn bộ. Qua bài này ta thấy phép chọn làm thay đổi tập bộ nhưng giữ nguyên lược đồ, còn phép chiếu làm giảm số thuộc tính và loại bỏ bộ trùng lặp.
Bài tập 4_5 - Chọn và chiếu trên quan hệ R(ABCD)
Cho quan hệ R:
A
B
C
D
a1
b1
3
1
a1
b1
2
4
a2
b1
4
3
a2
b2
5
6
a1
b2
3
1
1. R(A=a1): các bộ có A=a1.
A
B
C
D
a1
b1
3
1
a1
b1
2
4
a1
b2
3
1
2. R(C>3): các bộ có C>3.
A
B
C
D
a2
b1
4
3
a2
b2
5
6
3. R(A=a1 ∨ C≥4): các bộ có A=a1 hoặc C≥4 (gồm tất cả các bộ của R).
A
B
C
D
a1
b1
3
1
a1
b1
2
4
a2
b1
4
3
a2
b2
5
6
a1
b2
3
1
4. R[ABC]: chiếu lên A,B,C, loại trùng.
A
B
C
a1
b1
3
a1
b1
2
a2
b1
4
a2
b2
5
a1
b2
3
5. R[ACD]: chiếu lên A,C,D, loại trùng (bộ (a1,3,1) xuất hiện hai lần nên chỉ giữ một).
A
C
D
a1
3
1
a1
2
4
a2
4
3
a2
5
6
Bài tập 4_6 - Hợp, giao, hiệu, chiếu, chọn trên R và S
Chương 4 - Đại số quan hệ
0:00
Bài tập 4_6 làm việc với hai quan hệ tương thích R và S có lược đồ ABCD. Phép hợp R hợp S có năm bộ, bao gồm tất cả các bộ của R và S sau khi loại trùng. Phép giao có hai bộ chung là 1 1 1 0 và 1 1 1 1. Phép hiệu R trừ S còn hai bộ 1 0 0 0 và 1 1 0 0, còn S trừ R chỉ còn bộ 2 2 1 1, cho thấy phép trừ không giao hoán. Khi chiếu R và S lên X bằng A, B, R[X] có hai bộ 1 0 và 1 1, S[X] có hai bộ 1 1 và 2 2, còn (R hợp S)[X] có ba bộ. Chiếu (R giao S) lên Y bằng A, C, D cho hai bộ 1 1 0 và 1 1 1. Với điều kiện E là A bằng 1 và D bằng 0, R(E) có ba bộ và (R hợp S)(E) cũng có ba bộ, vì các bộ của S thỏa E đã nằm trong R. Bài này minh họa sự kết hợp giữa phép chọn, chiếu và các phép toán tập hợp.
Bài tập 4_6 - Các phép toán trên hai quan hệ tương thích R, S
R và S có cùng lược đồ ABCD.
R:
A
B
C
D
1
0
0
0
1
1
0
0
1
1
1
0
1
1
1
1
S:
A
B
C
D
1
1
1
1
2
2
1
1
1
1
1
0
1. R ∪ S:
A
B
C
D
1
0
0
0
1
1
0
0
1
1
1
0
1
1
1
1
2
2
1
1
R ∩ S:
A
B
C
D
1
1
1
0
1
1
1
1
R − S:
A
B
C
D
1
0
0
0
1
1
0
0
S − R:
A
B
C
D
2
2
1
1
2. Với X={A,B}, Y={A,C,D}:
R[X]:
A
B
1
0
1
1
S[X]:
A
B
1
1
2
2
(R ∪ S)[X]:
A
B
1
0
1
1
2
2
(R ∩ S)[Y] với Y={A,C,D}:
A
C
D
1
1
0
1
1
1
3. E = “(A=1) ∧ (D=0)”:
R(E):
A
B
C
D
1
0
0
0
1
1
0
0
1
1
1
0
(R ∪ S)(E):
A
B
C
D
1
0
0
0
1
1
0
0
1
1
1
0
Bài tập 4_7 - Phép toán trên R, S và Q
Chương 4 - Đại số quan hệ
0:00
Bài tập 4_7 làm việc với ba quan hệ R, S, Q. R và S có cùng lược đồ ABCD nên có thể hợp, giao, hiệu. R hợp S có năm bộ, giao có hai bộ a1 b1 c1 d1 và a2 b1 c1 d1, hiệu R trừ S còn hai bộ có B là b2. Phép tích R nhân Q có 16 bộ vì R có 4 bộ và Q có 4 bộ, lược đồ gồm tám thuộc tính với A lặp lại. Phép kết nối tự nhiên R sao Q trên thuộc tính A chung cho năm bộ: a1 nối với hai bộ của Q có A là a1, còn a2 nối với bộ Q có A là a2. Chiếu R[AB] cho ba bộ a1 b1, a2 b1, a2 b2. Chọn Q với A bằng a1 hoặc E bằng e2 cho ba bộ. Biểu thức (R*Q)(A=a1 hoặc E=e2)[AB] chọn trong kết quả kết nối các bộ có A=a1 hoặc E=e2, chỉ có hai bộ với A=a1, chiếu lên A,B còn một bộ a1 b1. Bài này cho thấy thứ tự thực hiện phép toán ảnh hưởng đến kết quả trung gian.
Bài tập 4_7 - Các phép toán trên R, S, Q
R(ABCD):
A
B
C
D
a1
b1
c1
d1
a2
b1
c1
d1
a2
b2
c2
d2
a2
b2
c3
d2
S(ABCD):
A
B
C
D
a1
b1
c3
d1
a2
b1
c1
d1
a1
b1
c1
d1
Q(A,E,F,G):
A
E
F
G
a1
e2
f1
g1
a2
e1
f1
g1
a1
e2
f2
g2
a4
e2
f2
g2
1. R ∪ S:
A
B
C
D
a1
b1
c1
d1
a2
b1
c1
d1
a2
b2
c2
d2
a2
b2
c3
d2
a1
b1
c3
d1
R ∩ S:
A
B
C
D
a1
b1
c1
d1
a2
b1
c1
d1
R − S:
A
B
C
D
a2
b2
c2
d2
a2
b2
c3
d2
2. R × Q (16 bộ, lược đồ A B C D A E F G):
A
B
C
D
A
E
F
G
a1
b1
c1
d1
a1
e2
f1
g1
a1
b1
c1
d1
a2
e1
f1
g1
a1
b1
c1
d1
a1
e2
f2
g2
a1
b1
c1
d1
a4
e2
f2
g2
a2
b1
c1
d1
a1
e2
f1
g1
a2
b1
c1
d1
a2
e1
f1
g1
a2
b1
c1
d1
a1
e2
f2
g2
a2
b1
c1
d1
a4
e2
f2
g2
a2
b2
c2
d2
a1
e2
f1
g1
a2
b2
c2
d2
a2
e1
f1
g1
a2
b2
c2
d2
a1
e2
f2
g2
a2
b2
c2
d2
a4
e2
f2
g2
a2
b2
c3
d2
a1
e2
f1
g1
a2
b2
c3
d2
a2
e1
f1
g1
a2
b2
c3
d2
a1
e2
f2
g2
a2
b2
c3
d2
a4
e2
f2
g2
R * Q (kết nối tự nhiên trên A):
A
B
C
D
E
F
G
a1
b1
c1
d1
e2
f1
g1
a1
b1
c1
d1
e2
f2
g2
a2
b1
c1
d1
e1
f1
g1
a2
b2
c2
d2
e1
f1
g1
a2
b2
c3
d2
e1
f1
g1
R[AB]:
A
B
a1
b1
a2
b1
a2
b2
Q(A=a1 ∨ E=e2):
A
E
F
G
a1
e2
f1
g1
a1
e2
f2
g2
a4
e2
f2
g2
3. (R * Q)(A=a1 ∨ E=e2)[AB]: từ R*Q chọn các bộ có A=a1 hoặc E=e2, rồi chiếu lên A,B.
Các bộ thỏa: (a1,b1,c1,d1,e2,...) và (a1,b1,c1,d1,e2,...). Chiếu lên A,B cho một bộ.
A
B
a1
b1
Bài tập 4_8 - Kết hợp chiếu, chọn, kết nối tự nhiên
Chương 4 - Đại số quan hệ
0:00
Bài tập 4_8 kết hợp chiếu, chọn và kết nối tự nhiên trên hai quan hệ R và S. Biểu thức thứ nhất chiếu R lên A, C rồi kết nối với các bộ của S thỏa 5 trừ D lớn hơn 2, tức D nhỏ hơn 3. Kết quả hai bộ có A là a1 và C là c1. Biểu thức thứ hai kết nối tự nhiên R và S trên A cho ba bộ, sau đó chọn A bằng a1 và C khác c2, còn lại hai bộ. Biểu thức thứ ba chọn R với A khác a2 hoặc B nhỏ hơn 3, chiếu lên A, C được hai cặp, rồi kết nối với S, cho ba bộ. Bài này minh họa việc thứ tự chiếu, chọn và kết nối ảnh hưởng đến dữ liệu trung gian và kết quả cuối.
Bài tập 4_8 - Kết hợp chiếu, chọn và kết nối tự nhiên
R(ABC):
A
B
C
a1
2
c1
a2
3
c2
a3
4
c3
S(A,D,F,G):
A
D
F
G
a1
1
f1
g1
a1
2
f2
g1
a3
3
f2
g2
a4
4
f3
g1
1. R[AC] * S(5 − D > 2): chọn S với 5-D>2 (D<3), rồi kết nối tự nhiên với R[AC] trên A.
S(5-D>2):
A
D
F
G
a1
1
f1
g1
a1
2
f2
g1
Kết quả:
A
C
D
F
G
a1
c1
1
f1
g1
a1
c1
2
f2
g1
2. (R * S)(A = a1 ∧ C ≠ c2):
R * S:
A
B
C
D
F
G
a1
2
c1
1
f1
g1
a1
2
c1
2
f2
g1
a3
4
c3
3
f2
g2
Kết quả sau chọn:
A
B
C
D
F
G
a1
2
c1
1
f1
g1
a1
2
c1
2
f2
g1
3. R(A ≠ a2 ∨ B < 3)[AC] * S: chọn R với A≠a2 hoặc B<3, chiếu AC, rồi kết nối với S.
R(A≠a2 ∨ B<3): a1 2 c1 và a3 4 c3 (bộ a2 3 c2 bị loại).
(R(...))[AC]: (a1,c1), (a3,c3).
Kết quả:
A
C
D
F
G
a1
c1
1
f1
g1
a1
c1
2
f2
g1
a3
c3
3
f2
g2
Bài tập 4_9 - Nhiều phép toán trên R và S
Chương 4 - Đại số quan hệ
0:00
Bài tập 4_9 thực hiện nhiều phép toán trên R có lược đồ ABCD và S có lược đồ CD. Chiếu R[AB] cho bốn cặp giá trị A, B. Chọn R với 3 trừ B cộng D lớn hơn 1 loại bỏ bộ a 4 x 2, còn năm bộ. Hợp của R(B nhỏ hơn 4) và R(D lớn hơn 3) có năm bộ, vì R(B nhỏ hơn 4) có bốn bộ và R(D lớn hơn 3) có bộ c 5 y 7. Chọn B từ 1 đến 5 giữ tất cả sáu bộ. Kết nối tự nhiên R và S trên C, D rồi chiếu C cho hai giá trị x và y. Hiệu R(B nhỏ hơn 4) trừ R(D lớn hơn 3) còn bốn bộ, còn giao của hai tập này rỗng. Phép chia R chia S cũng rỗng, vì không có cặp A, B nào trong R kết hợp với cả hai cặp C, D của S. Bài này tổng hợp các phép toán chọn, chiếu, hợp, giao, hiệu, kết nối và chia.
Bài tập 4_9 - Nhiều phép toán trên R(ABCD) và S(CD)
R:
A
B
C
D
a
1
x
2
a
1
y
2
b
2
x
1
b
2
y
1
a
4
x
2
c
5
y
7
S:
C
D
x
1
y
2
1. R[AB]:
A
B
a
1
b
2
a
4
c
5
2. R(3 − B + D > 1): các bộ thỏa điều kiện (trừ bộ a 4 x 2).
A
B
C
D
a
1
x
2
a
1
y
2
b
2
x
1
b
2
y
1
c
5
y
7
3. R(B<4) ∪ R(D>3):
A
B
C
D
a
1
x
2
a
1
y
2
b
2
x
1
b
2
y
1
c
5
y
7
4. R(B≥1 ∧ B≤5): tất cả các bộ của R.
A
B
C
D
a
1
x
2
a
1
y
2
b
2
x
1
b
2
y
1
a
4
x
2
c
5
y
7
5. R*S[C]: kết nối tự nhiên R và S trên C,D, rồi chiếu C.
C
x
y
6. R(B<4) − R(D>3):
A
B
C
D
a
1
x
2
a
1
y
2
b
2
x
1
b
2
y
1
7. R(B<4) ∩ R(D>3): kết quả rỗng.
A
B
C
D
(rỗng)
8. R : S: kết quả rỗng, vì không có cặp (A,B) nào kết hợp được với mọi cặp (C,D) của S.
A
B
(rỗng)
Bài tập 4_10 - Biểu thức đại số quan hệ trên CSDL NHÂN VIÊN
Chương 4 - Đại số quan hệ
0:00
Bài tập 4_10 viết biểu thức đại số quan hệ cho cơ sở dữ liệu nhân viên gồm ba quan hệ: nhân viên, phòng và chức vụ. Câu một nối nhân viên với phòng trên mã phòng, rồi chiếu họ tên, ngày sinh, giới tính và tên phòng. Câu hai nối nhân viên với chức vụ trên mã chức vụ, chọn các bộ có tên chức vụ là trưởng phòng, rồi chiếu họ tên, ngày sinh, giới tính và nơi sinh. Câu ba chọn nhân viên nữ và nơi sinh Bình Định, nối với chức vụ, rồi chiếu họ tên, ngày sinh và tên chức vụ. Câu bốn chọn nhân viên nam có nơi sinh Bình Định hoặc Đăk Lăk, nối với phòng, rồi chiếu họ tên, ngày sinh và tên phòng. Các biểu thức đều dùng kết nối tự nhiên trên thuộc tính chung, sau đó chọn và chiếu.
Bài tập 4_10 - Biểu thức đại số quan hệ trên CSDL NHÂN VIÊN
Bài tập 4_11 - Biểu thức đại số quan hệ trên CSDL THỰC TẬP
Chương 4 - Đại số quan hệ
0:00
Bài tập 4_11 viết biểu thức đại số quan hệ cho cơ sở dữ liệu thực tập gồm sinh viên, đề tài và sinh viên đề tài. Câu một chọn sinh viên sinh trước năm 2005 và quê quán Bình Định. Câu hai chiếu quan hệ sinh viên đề tài lên nơi thực tập để lấy danh sách các tỉnh. Câu ba chọn các bộ có mã đề tài 7 và khoảng cách lớn hơn 100 km, rồi chiếu nơi thực tập. Câu bốn chọn các bộ có nơi thực tập là Quảng Ngãi. Câu năm nối sinh viên với sinh viên đề tài, chọn các bộ có quê quán bằng nơi thực tập, rồi chiếu thông tin sinh viên. Câu sáu nối đề tài với sinh viên đề tài và chiếu thông tin đề tài, cho các đề tài có sinh viên tham gia. Câu bảy lấy hiệu giữa tập mã đề tài và tập mã đề tài có sinh viên tham gia, cho mã đề tài không có sinh viên. Câu tám hợp hai tập đề tài có kinh phí bằng 3 triệu và kinh phí lớn hơn bằng 5 triệu, rồi chiếu mã đề tài. Câu chín nối sinh viên với sinh viên đề tài, chọn tuổi dưới 20 và kết quả trên 7, rồi chiếu mã sinh viên. Câu mười dùng hàm tổng để tính tổng kinh phí, so sánh kinh phí đề tài lớn hơn một phần năm tổng đó, rồi nối với sinh viên đề tài và sinh viên để lấy danh sách sinh viên. Câu mười một dùng hàm trung bình trên các bộ có mã đề tài 4, chọn các sinh viên có kết quả lớn hơn giá trị đó, rồi nối với sinh viên để lấy danh sách. Bài này tổng hợp chọn, chiếu, kết nối, hợp, hiệu và hàm gom nhóm.
Bài tập 4_11 - Biểu thức đại số quan hệ trên CSDL THỰC TẬP
Lược đồ: SV(MSV, HT, NS, QQ, HL); DT(MDT, TDT, CN, KP); SD(MSV, MDT, NTT, KM, KQ). Tuổi tính đến năm 2022.
1. Thông tin sinh viên sinh trước năm 2005 và quê quán ở Bình Định:
SV(NS < 2005 ∧ QQ = "Bình Định")
2. Danh sách các tỉnh sinh viên đến thực tập:
SD[NTT]
3. Danh sách các tỉnh có sinh viên thực tập xa trường hơn 100 km của mã đề tài số 7:
(SD(MDT = 7 ∧ KM > 100))[NTT]
4. Thông tin tình hình thực tập của sinh viên làm đề tài ở nơi thực tập Quảng Ngãi:
SD(NTT = "Quảng Ngãi")
5. Danh sách sinh viên thực tập tại quê nhà:
((SV * SD)(QQ = NTT))[MSV, HT, NS, QQ, HL]
6. Thông tin về các đề tài có sinh viên thực tập tham gia:
(DT * SD)[MDT, TDT, CN, KP]
7. Thông tin mã đề tài không có sinh viên nào tham gia:
DT[MDT] − SD[MDT]
8. Thông tin mã đề tài có kinh phí bằng 3 triệu hoặc lớn hơn bằng 5 triệu:
(DT(KP = 3) ∪ DT(KP ≥ 5))[MDT]
9. Mã những sinh viên dưới 20 tuổi và có kết quả thực tập trên 7 điểm:
((SV * SD)(2022 − NS < 20 ∧ KQ > 7))[MSV]
10. Danh sách sinh viên thực tập theo đề tài có kinh phí lớn hơn một phần năm tổng kinh phí cấp cho các đề tài:
((SV * SD * DT)(KP > SUM(; DT, KP) / 5))[MSV, HT]
11. Danh sách sinh viên có kết quả thực tập cao hơn điểm thực tập trung bình của đề tài mã số 4:
((SV * SD)(KQ > AVG(; SD(MDT = 4), KQ)))[MSV, HT]
Câu 1: Mô hình ERD mở rộng
Đề kiểm tra giữa kỳ - Mô hình CSDL
0:00
Trong câu 1, em phân tích bài toán Hệ thống thông tin quản lý đăng ký học phần theo bốn bước. Bước đầu tiên là xác định và chuẩn hóa tên thuộc tính. Từ mô tả tiếng Việt, em chuyển các cụm từ như "Họ và tên", "Ngày sinh" thành các tên thuộc tính không dấu, viết hoa chữ cái đầu mỗi từ: HoTen, NgaySinh. Việc chuẩn hóa giúp tránh nhầm lẫn và đồng nhất với quy ước đặt tên trong cơ sở dữ liệu. Bước thứ hai là xác định kiểu thực thể. Dựa vào các danh từ chính và các thực thể có thể định danh độc lập, em xác định sáu thực thể chính: SINHVIEN, GIANGVIEN, HOCPHAN, LOPHOCPHAN, DANGKY và CHUONGTRINHDAOTAO. Mỗi thực thể đều có khóa chính tự nhiên hoặc mã định danh do hệ thống cấp: MaSV, MaGV, MaHP, MaLHP, MaDK, MaCTDT. Điểm cần lưu ý là DANGKY được xem là thực thể chứ không phải liên kết, vì đề bài nêu rõ "Mỗi đăng ký được định danh bởi mã đăng ký" và có các thuộc tính riêng như Ngày đăng ký, Thời điểm đăng ký, Trạng thái đăng ký. Bước thứ ba là xác định kiểu liên kết. Các quan hệ 1-N xuất hiện giữa học phần và lớp học phần, giữa giảng viên và lớp học phần, giữa sinh viên và đăng ký, giữa lớp học phần và đăng ký. Quan hệ N-N duy nhất là giữa chương trình đào tạo và học phần, vì một chương trình quản lý nhiều học phần và một học phần có thể dùng trong nhiều chương trình. Quan hệ này mang hai thuộc tính phụ thuộc HocKyDuKien và LoaiHocPhan, nên trong mô hình mở rộng được biểu diễn là quan hệ N-N có thuộc tính. Bước thứ tư là vẽ ERD mở rộng. Trong sơ đồ, thực thể là hình chữ nhật, liên kết là hình thoi, các đường nối ghi cơ số 1 và N. Quan hệ N-N CTDT_HP được vẽ bằng hình thoi có hai thuộc tính đính kèm. ERD mở rộng giữ nguyên các thuộc tính phức tạp và quan hệ N-N, phản ánh trung thực bài toán, làm cơ sở cho các bước chuyển đổi tiếp theo. Nhờ phân tích cẩn thận, mô hình không bỏ sót thực thể, không nhầm lẫn khóa và không gộp sai quan hệ, đảm bảo tính đúng đắn của thiết kế.
Bước 1: Xác định và chuẩn hóa tên gọi các thuộc tính
Đọc bài toán và chuẩn hóa tên thuộc tính về dạng thống nhất, tránh trùng lặp ngữ nghĩa. Các thuộc tính được đặt tên theo quy tắc: viết hoa chữ cái đầu mỗi từ, không dấu, ngắn gọn nhưng rõ nghĩa.
CTDT_HOCPHAN là thực thể liên kết (associative entity) sinh ra từ quan hệ N-N giữa CHUONGTRINHDAOTAO và HOCPHAN, mang hai thuộc tính phụ thuộc: HocKyDuKien, LoaiHocPhan.
Bước 3: Xác định kiểu liên kết và thuộc tính của liên kết
Liên kết
Kiểu
Thực thể tham gia
Thuộc tính liên kết
SINHVIEN_DANGKY
1-N
SINHVIEN (1), DANGKY (N)
không có
LHP_DANGKY
1-N
LOPHOCPHAN (1), DANGKY (N)
không có
HP_LHP
1-N
HOCPHAN (1), LOPHOCPHAN (N)
không có
GV_LHP
1-N
GIANGVIEN (1), LOPHOCPHAN (N)
không có
CTDT_HP
N-N
CHUONGTRINHDAOTAO (N), HOCPHAN (N)
HocKyDuKien, LoaiHocPhan
Bước 4: Mô hình ERD mở rộng
ERD mở rộng bên dưới thể hiện các thực thể, liên kết và quan hệ N-N có thuộc tính. Các thực thể được vẽ hình chữ nhật, liên kết vẽ hình thoi, đường nối thể hiện cơ số (1, N).
Câu 2: Mô hình ERD kinh điển
Đề kiểm tra giữa kỳ - Mô hình CSDL
0:00
Câu 2 yêu cầu chuyển mô hình ERD mở rộng thành ERD kinh điển theo các quy tắc chuẩn. Quy tắc quan trọng nhất là xử lý quan hệ N-N có thuộc tính: quan hệ CTDT_HP giữa CHUONGTRINHDAOTAO và HOCPHAN được thay thế bằng một thực thể liên kết mới tên CTDT_HOCPHAN, kèm hai quan hệ 1-N từ mỗi thực thể gốc đến thực thể liên kết. Thuộc tính HocKyDuKien và LoaiHocPhan được chuyển thành thuộc tính của thực thể liên kết này, vì chúng phụ thuộc vào cặp chương trình - học phần. Khóa của CTDT_HOCPHAN là khóa tổng hợp (MaCTDT, MaHP). Các quan hệ 1-N còn lại như HP_LHP, GV_LHP, SV_DK, LHP_DK giữ nguyên vì đã phù hợp với ERD kinh điển. ERD kinh điển không còn quan hệ N-N trực tiếp, mọi quan hệ đều là nhị phân 1-N, giúp việc ánh xạ sang mô hình quan hệ ở câu 3 đơn giản hơn. Trong bảng quan hệ kinh điển, mỗi dòng mô tả một liên kết cùng cơ số và ý nghĩa nghiệp vụ, ví dụ một giảng viên có thể giảng dạy nhiều lớp học phần nhưng mỗi lớp học phần chỉ thuộc đúng một giảng viên. Việc chuyển đổi này không làm mất thông tin: các thuộc tính của quan hệ N-N được bảo toàn trong thực thể liên kết, các ràng buộc cơ số được giữ nguyên. Kết quả là tập thực thể và quan hệ rõ ràng, không còn thuộc tính phức tạp hay đa trị, đáp ứng đúng chuẩn của mô hình ERD kinh điển (Chen). Đây là bước trung gian quan trọng, giúp chuẩn hóa mô hình trước khi ánh xạ sang cơ sở dữ liệu quan hệ. Trong quá trình chuyển đổi, em cũng kiểm tra lại các thuộc tính để đảm bảo không có thuộc tính đa trị hay thuộc tính phức tạp bị bỏ sót. Ví dụ HoTen có thể xem là thuộc tính phức tạp gồm Ho và Ten, nhưng trong bài toán không yêu cầu tách riêng, nên giữ nguyên HoTen để phù hợp phạm vi. Các khóa ngoại chưa xuất hiện ở ERD kinh điển vì khóa ngoại là khái niệm của mô hình quan hệ, nên chỉ ghi nhận ở bước ánh xạ. ERD kinh điển vẫn thể hiện đầy đủ các ràng buộc cơ số và các thực thể liên kết, giúp người thiết kế và người dùng cùng hiểu cấu trúc dữ liệu. Khi vẽ sơ đồ, các thực thể liên kết được đánh dấu khác biệt (viền nét đứt hoặc tên ghép) để phân biệt với thực thể gốc. Điều này tránh nhầm lẫn giữa thực thể DANGKY (đăng ký học phần thực tế) và thực thể liên kết CTDT_HOCPHAN (chi tiết chương trình). Mỗi liên kết 1-N đều có phía 'một' bắt buộc và phía 'n' có thể từ không hoặc nhiều, tùy nghiệp vụ; trong hệ thống, một lớp học phần phải thuộc đúng một học phần và đúng một giảng viên, nên cơ số phía học phần và giảng viên là 1 bắt buộc. Kết quả ERD kinh điển là đầu vào trực tiếp cho câu 3, với tập thực thể và liên kết đã được chuẩn hóa, không còn quan hệ N-N trực tiếp, đảm bảo ánh xạ sang mô hình quan hệ chỉ cần áp dụng các quy tắc cơ bản.
Chuyển ERD mở rộng sang ERD kinh điển
Theo quy tắc chuyển đổi, mọi quan hệ N-N có thuộc tính được thay thế bằng một thực thể liên kết (associative entity) và hai quan hệ 1-N. Các thực thể yếu, thuộc tính phức tạp (nếu có) cũng được chuẩn hóa về thực thể thường. ERD kinh điển chỉ còn các thực thể và liên kết nhị phân 1-N.
Câu 3 chuyển mô hình ERD kinh điển sang mô hình quan hệ. Nguyên tắc ánh xạ: mỗi thực thể trở thành một quan hệ (bảng), khóa chính của thực thể trở thành khóa chính của bảng. Với quan hệ 1-N, khóa chính của phía "một" được thêm vào bảng phía "n" dưới dạng khóa ngoại. Do đó LOPHOCPHAN có thêm MaHP và MaGV; DANGKY có thêm MaSV và MaLHP. Quan hệ N-N đã được chuyển thành thực thể liên kết CTDT_HOCPHAN ở câu 2, nên ở đây nó trở thành bảng riêng với khóa chính tổng hợp (MaCTDT, MaHP) và hai khóa ngoại tham chiếu đến CHUONGTRINHDAOTAO và HOCPHAN. Thuộc tính HocKyDuKien và LoaiHocPhan nằm trong bảng này vì phụ thuộc vào cặp khóa. Bảng quan hệ kèm khóa cho thấy rõ ràng khóa chính, khóa ngoại và các ràng buộc tham chiếu. Ràng buộc toàn vẹn tham chiếu yêu cầu mọi giá trị khóa ngoại phải tồn tại trong bảng được tham chiếu; khi xóa một chương trình đào tạo hoặc học phần, cần xử lý các bản ghi CTDT_HOCPHAN tương ứng theo chính sách CASCADE hoặc RESTRICT. Tương tự, không thể xóa sinh viên nếu còn đăng ký, hoặc phải xóa đăng ký trước. Mô hình quan hệ cuối cùng gồm bảy bảng: SINHVIEN, GIANGVIEN, HOCPHAN, LOPHOCPHAN, DANGKY, CHUONGTRINHDAOTAO, CTDT_HOCPHAN. Đây là cơ sở để tạo cơ sở dữ liệu vật lý và viết các câu lệnh SQL CREATE TABLE với đầy đủ ràng buộc PRIMARY KEY và FOREIGN KEY. Trong quá trình ánh xạ, em chú ý đến việc giữ nguyên tên thuộc tính và thứ tự cột để dễ so sánh với ERD. Các bảng không có khóa ngoại được đặt trước về mặt logic, nhưng thứ tự tạo bảng trong SQL phải đảm bảo bảng được tham chiếu tạo trước. Ví dụ phải tạo SINHVIEN, GIANGVIEN, HOCPHAN, CHUONGTRINHDAOTAO trước, sau đó LOPHOCPHAN, DANGKY và cuối cùng CTDT_HOCPHAN. Ràng buộc NOT NULL cũng được xác định: các khóa chính và khóa ngoại thường NOT NULL; các thuộc tính mô tả như DiaChi, Email có thể cho phép NULL tùy nghiệp vụ. TrangThaiLop, TrangThaiDangKy có thể dùng miền giá trị (domain) để giới hạn, ví dụ 'Mở', 'Đóng', 'Hủy'. SoLuongSVToiDa là số nguyên dương. Việc xác định kiểu dữ liệu chi tiết sẽ thực hiện ở bước thiết kế vật lý, nhưng mô hình quan hệ đã cung cấp đầy đủ cấu trúc logic. Mô hình này cũng hỗ trợ các truy vấn quan trọng như danh sách sinh viên theo lớp, số lượng đăng ký theo học phần, chương trình đào tạo của một học phần. Nhờ có khóa ngoại rõ ràng, các phép kết (JOIN) giữa các bảng được thực hiện chính xác và hiệu quả.
Chuyển ERD kinh điển sang mô hình quan hệ
Mỗi kiểu thực thể trở thành một quan hệ (bảng). Khóa chính của thực thể trở thành khóa chính của quan hệ. Các quan hệ 1-N được biểu diễn bằng khóa ngoại ở phía N. Quan hệ N-N đã được chuyển thành thực thể liên kết, do đó trở thành bảng riêng với khóa chính tổng hợp và hai khóa ngoại.
Ràng buộc toàn vẹn: khóa ngoại phải tham chiếu đến khóa chính đã tồn tại; xóa/cập nhật theo chính sách RESTRICT hoặc CASCADE tùy nghiệp vụ. Thuộc tính HocKyDuKien, LoaiHocPhan phụ thuộc vào cặp (MaCTDT, MaHP), do đó nằm trong bảng CTDT_HOCPHAN.