7. Kết luận
3.3.8. Thiết kế Dữ liệu phân tán cho hệ thống
Việc phân tán dữ liệu và quyền truy cập dữ liệu trên CSDL phân tán dựa vào từng Khoa, Khoa nào thì đƣợc quyền truy cập và xử lý dữ liệu của Khoa đó.
Theo yêu cầu của bài toán đặt ra và mô hình dữ liệu quan hệ ở trên, ta phân mảnh dữ liệu theo phƣơng pháp phân mảnh ngang để xử lý bài toán. Cụ thể nhƣ sau:
Giả sử, ta có bảng KHOA_PHONG_BAN với 6 bộ dữ liệu nhƣ sau :
KHOA_PB_ID KHOA_PB_MA KHOA_PB_TEN DIEN_THOAI FAX
22 KCKDL Khoa Cơ Khí Động
Lực
4 KĐT Khoa Điện - Điện
Tử
19 KLHD Khoa Công Nghệ
Lọc Hóa Dầu
17 KCB Khoa Khoa Học Cơ
Bản 5 KTH Khoa Kỹ Thuật Tổng Hợp 18 KCK Khoa Cơ Khí Chế Tạo Bảng 3.1 Khoa, Phòng ban
Ta phân mảnh dữ liệu sinh viên thành 6 mảnh dựa trên các quan hệ sau:
- SINH_VIEN(Ma_Sinh_Vien, Ho, Ho_Lot, Ten, Ngay_Sinh,
Noi_Sinh_Dia_Chi, Noi_Sinh_Phuong_Xa, Noi_Sinh_Quan_Huyen, Noi_Sinh_Tinh_Thanh_Pho, Noi_Sinh_Quoc_Gia, Tthn_Id,
Gioi_Tinh_Id, So_Cmnd, So_Cmnd_Ngay_Cap, So_Cmnd_Noi_Cap, Da_Nghi_Hoc, Ttsv_Id, Ttsv_Ngay_Cap_Nhat, Ton_Giao_Id,
Khu_Vuc_Id, Dan_Toc_Id, Hktt_Dia_Chi, Hktt_Phuong_Xa, Hktt_Quan_Huyen, Hktt_Tinh_Thanh_Pho, Hktt_Quoc_Gia, Cohn_Dia_Chi, Cohn_Phuong_Xa, Cohn_Quan_Huyen,
Cohn_Tinh_Thanh_Pho, Cohn_Quoc_Gia, Dien_Thoai_Lien_He, Ho_Ten_Cha, Nghe_Nghiep_Cha, Dien_Thoai_Cha, Ho_Ten_Me, Nghe_Nghiep_Me, Dien_Thoai_Me, Anh_Dai_Dien, Ghi_Chu)
- KHOA_PHONG_BAN(Khoa_Pb_Id, Khoa_Pb_Ma, Khoa_Pb_Ten,
Khoa_Pb_Id_Root, Dia_Chi, Phuong_Xa, Quan_Huyen,
Tinh_Thanh_Pho, Quoc_Gia, Dien_Thoai, Fax, Email, Website, Zipcode, Postal_Code, Mo_Ta, Ngay_Thanh_Lap, Loai_Pb_Id)
- NGANH_CHUYEN_NGANH_KHOA_PHONG_BAN(Khoa_Pb_Id,
- SINH_VIEN_KHOA_HOC(Ma_Sinh_Vien, Bac_Hoc_Id, Khoa_Hoc_Id, Nganh_Chuyen_Nganh_Id, Khoa_Pb_Id, He_Dao_Tao_Id, Lopsh_Id, Tu_Ngay, Den_Ngay, Chuc_Vu) Mối liên hệ giữa các quan hệ nhƣ sau:
Mỗi KHOA_PHONG_BAN có nhiều NGANH_CHUYEN_NGANH, mỗi NGANH_CHUYEN_NGANH có nhiều LOP, mỗi LOP có nhiều SINH_VIEN.
Dựa mối quan hệ giữa các quan hệ, ta có tập vị từ nối sau:
- KHOA_PHONG_BAN.Khoa_Pb_Id= NGANH_CHUYEN_NGANH_KHOA_PHONG_BAN.Khoa_Pb_Id - NGANH_CHUYEN_NGANH_KHOA_PHONG_BAN.Nganh_Chuyen_ Nganh_Id = SINH_VIEN_KHOA_HOC.Nganh_Chuyen_Nganh_Id - SINH_VIEN_KHOA_HOC.Ma_Sinh_Vien=SINH_VIEN. .Ma_Sinh_Vien Ta có 6 mảnh nhƣ sau: SINH_VIEN1 = KHOA_PHONG_BAN.Khoa_Pb_Id = 4 SINH_VIEN2 = KHOA_PHONG_BAN.Khoa_Pb_Id = 5 SINH_VIEN3 = KHOA_PHONG_BAN.Khoa_Pb_Id = 17 SINH_VIEN4 = KHOA_PHONG_BAN.Khoa_Pb_Id = 18 SINH_VIEN5 = KHOA_PHONG_BAN.Khoa_Pb_Id = 19 SINH_VIEN6 = KHOA_PHONG_BAN.Khoa_Pb_Id = 22 Ứng dụng cụ thể:
Ví dụ: Để liệt kê danh sách sinh viên thuộc Khoa Kỹ thuật Tổng hợp ta dùng câu lệnh SQL nhƣ sau:
SELECT SINH_VIEN.* FROM SINH_VIEN INNER JOIN
SINH_VIEN_KHOA_HOC ON SINH_VIEN.MA_SINH_VIEN = SINH_VIEN_KHOA_HOC.MA_SINH_VIEN INNER JOIN NGANH_CHUYEN_NGANH_KHOA_PHONG_BAN ON SINH_VIEN_KHOA_HOC.KHOA_PB_ID =
NGANH_CHUYEN_NGANH_KHOA_PHONG_BAN.KHOA_PB_ID INNER JOIN KHOA_PHONG_BAN ON SINH_VIEN_KHOA_HOC.KHOA_PB_ID = KHOA_PHONG_BAN.KHOA_PB_ID AND
NGANH_CHUYEN_NGANH_KHOA_PHONG_BAN.KHOA_PB_ID = HOA_PHONG_BAN.KHOA_PB_ID WHERE
KHOA_PHONG_BAN.KHOA_PB_ID = 5