Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 31 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
31
Dung lượng
590,57 KB
Nội dung
lOMoARcPSD|38544120 TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN HỆ QUẢN TRỊ CSDL ĐỀ TÀI QUẢN LÝ XE BUS Giáo viên hướng dẫn: Th.S Nguyễn Thị Tâm Sinh viên thực hiện: Nguyễn Quang Huy-2010A05 Nguyễn Duy Hân-2010A01 Hà Nội, 2021 Downloaded by Uy vu Nguyen (tailieuso.11@gmail.com) lOMoARcPSD|38544120 Mục Lục I Phát biểu bài toán 4 1 Xây dựng mô hình thực thể liên kết 5 2 Xây dựng mô hình cơ sở dữ liệu quan hệ 5 3 Chuẩn hóa cơ sở dữ liệu của bài toán 7 II Tạo bảng CSDL 8 1 Tạo bảng 8 2 Nhập dữ liệu 14 III Thực Hiện Các Yêu Cầu 20 1 Truy vấn dữ liệu 20 2 Tạo View hiện dữ liệu 24 3 Tạo các PROCDUCE 29 4 Tạo Trigger kiểm soát ràng buộc dữ liệu 45 5 Phân quyền cho các thành viên 60 6 Phân tán ngang theo bảng Nhân Viên 63 Downloaded by Uy vu Nguyen (tailieuso.11@gmail.com) lOMoARcPSD|38544120 I.Phát biểu bài toán Để quản lý xe bus một cách hiểu quả, ta cần một hệ thống quản lý Hệ thống bao gồm: Đầu tiên là quản lý xe cần có biển số, loại xe ,số ghế và năm bắt đầu sử dụng Trên mỗi xe đều có 2 nhân viên, một lái xe và một phụ xe Thông tin nhân viên bao gồm: Mã nhân viên, tên nhân viên, giới tính, ngày sinh, địa chỉ, ngày vào làm, lương cơ bản, phụ cấp, chức vụ Mỗi nhân viên có 1 mã và tuổi phải >18 Mỗi nhân viên và xe đều ở 1 xí nghiệp, thông tin xí nghiệp gồm : mã xí nghiệp, tên xí nghiệp và SĐT Mỗi xe có một tuyến, mỗi tuyến được xác định bởi mã tuyến, tên tuyến và lộ trình Thông tin chi tiết trạm dừng gồm: mã trạm dừng và mã tuyến Trên mỗi xe đều có thông tin của tuyến và nhân viên, bao gồm Mã tuyến, biển số, mã nhân viên, ngày chạy, số giờ Từ phát biểu bài toán ta có mô hình thực thể liên kết Downloaded by Uy vu Nguyen (tailieuso.11@gmail.com) lOMoARcPSD|38544120 Xây dựng mô hình quan hệ Bước 1 Xử lý thực thể thông thường Xe: biển số, loại xe, số ghế, năm bắt đầu sử dụng Tuyến: Mã tuyến, tên tuyến Trạm dừng: Mã trạm dừng, tên trạm dừng Nhân viên: Mã nhân viên, tên nhân viên, giới tính, ngày sinh, địa chỉ, ngày vào làm, lương cơ bản, phụ cấp, chức vụ Nhà xe: Mã nhà xe, tên nhà xe, số điện thoại Bước 2 Xử lý thực thể yếu: không tồn tại thực thể yếu Bước 3 Xử lý mối liên hệ 1:1: Không có Bước 4 Xử lý liên kết 1:N Xe-nhà xe: Biển số, loại xe, số ghế, năm bắt đầu sử dụng, mã nhà xe Nhân viên-nhà xe: Mã nhân viên, tên nhân viên, giới tính, ngày sinh, địa chỉ, ngày vào làm, lương cơ bản, phụ cấp, chức vụ, mã nhà xe Tuyến: Mã tuyến, tên tuyến, lộ trình Xe_Lái xe (Mã tuyến, biển số, Mã nhân viên, Ngày chạy, số giờ) Bước 5 Xử lý liên kết M:N CT_Tramdung (Mã trạm dừng, Mã tuyến) =>Vậy cơ sở dữ liệu của bài toán: Xe: Biển số, loại xe,số ghế, năm bắt đầu sử dụng Tuyến: Mã tuyến, tên tuyến, lộ trình Trạm dừng: Mã trạm dừng, tên trạm dừng Nhà xe: Mã nhà xe, tên nhà xe, SĐT Nhân viên: Mã nhân viên, tên nhân viên, giới tính, ngày sinh, địa chỉ, ngày vào làm, lương cơ bản, phụ cấp, chức vụ Chi Tiết Lái xe (Mã tuyến, Biển số, Mã nhân viên, Ngày chạy, Số giờ) Chi Tiết Trạm dừng (Mã trạm dừng,Mã tuyến) Downloaded by Uy vu Nguyen (tailieuso.11@gmail.com) lOMoARcPSD|38544120 Chuẩn hóa CSDL bài toán: Biển số => tên xe, loại xe, số ghế, năm bắt đầu sử dụng Mã trạm dừng => tên trạm dừng Mã tuyến => tên tuyến Mã nhân viên => tên nhân viên, giới tính, ngày sinh, địa chỉ, ngày vào làm, lương cơ bản, phụ cấp, chức vụ Từ các phụ thuộc hàm trên ta thấy: Mọi thuộc tính đều là nguyên tố, giá trị các thuộc tính trên bộ là đơn trị, không có thuộc tính nào có giá trị được tính toán từ một số thuộc tính khác Lược đồ quan hệ trên đã ở dạng chuẩn 1NF Mọi thuộc tính không khóa của quan hệ đều phụ thuộc hàm đầy đủ vàokhóa chính Lược đồ quan hệ trên đã ở dạng chuẩn 2NF Mọi thuộc tính không khóa của quan hệ đều không phụ thuộc bắc cầu vào bất kì khóa chính của quan hệ Lược đồ quan hệ trên đã ở dạng chuẩn 3NF Vậy lược đồ quan hệ đã được chuẩn hóa về dạng cao nhất – 3NF II.Xây dựng CSDL bài toán 1 Tạo bảng tblXe: Lưu trữ thông tin xe TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú Nchar(10) PK 1 Bienso Nvarchar(50) int 2 Loaixe datetime Nchar(10) 3 Soghe 4 Ngaysanxuat 5 MaNX tblTramdung: Lưu trữ thông tin trạm dừng TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú PK 1 Matramdung Nchar(10) Downloaded by Uy vu Nguyen (tailieuso.11@gmail.com) lOMoARcPSD|38544120 2 Tentramdung Nvarchar(50) tblTuyen: Lưu trữ thông tin Tuyến bus TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú PK Ghi chú 1 Matuyen int Ghi chú Ghi chú 2 Tentuyen Nvarchar(50) 3 Lotrinh Nvarchar(50) Nhaxe: Lưu trữ thông tin Nhà xe TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Nchar(10) PK 1 MaNX Nvarchar(50) Nchar(10) 2 TenNX 3 SĐT tblChiTietTramdung: Lưu trữ thông tin chi tiết tuyến bus TT Tên thuộc tính Kiểu dữ liệu Ràng buộc 1 Matramdung Nchar(10) PK,FK 2 Matuyen Nchar(10) PK,FK tblNhanVien: Lưu trữ thông tin nhân viên TT Tên thuộc tính Kiểu dữ liệu Ràng buộc PK 1 MaNV Nchar(10) Tuoi>18 2 TenNV Nvarchar(50) 3 Gioitinh Nvarchar(3) 4 NgaySinh Datetime 5 DiaChi Nvarchar(50) 6 NgayVaoLam datetime 7 Luongcoban float 8 Phucap float 9 Chucvu Nvarchar(50) 10 MãNX Nchar(10) tblChiTietLaixe: Lưu trữ thông tin chi tiết về xe đó Downloaded by Uy vu Nguyen (tailieuso.11@gmail.com) lOMoARcPSD|38544120 TT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú 1 MaTuyen Nchar(10) PK,FK 2 MaNV Nchar(10) PK,FK 3 MaXe Nchar(10) PK,FK 4 Ngaychay datetime 5 Sogio Int 2 Nhập dữ liệu Select *from tblTuyen Select * from tblTramdung Select * from tblChiTietTramdung Downloaded by Uy vu Nguyen (tailieuso.11@gmail.com) lOMoARcPSD|38544120 Select * from tblXe Select * from tblNhanvien Select * from tblChiTietLaixe Downloaded by Uy vu Nguyen (tailieuso.11@gmail.com) lOMoARcPSD|38544120 Select * from NhaXe III Thực hiện các yêu cầu 1 Truy vấn dữ liệu Truy vấn 1 bảng 1 Lấy ra thông tin tên,ngày sinh, địa chỉ của các nhân viên nam select TenNV,Ngaysinh,Diachi from tblNhanvien where Gioitinh='Nam' 2 Lấy ra thông tin xe có số ghế là 26 select Bienso, Loaixe,Ngaysanxuat from tblXe where Soghe=26 3 Lấy ra những nhân viên có địa chỉ ở Hà Nội select *from tblNhanvien where Diachi=N'Hà Nội' 4 Lấy ra thông tin tuyến xe có mã là 3 Downloaded by Uy vu Nguyen (tailieuso.11@gmail.com) lOMoARcPSD|38544120 select *from tblTuyen where Matuyen=3 5 Đưa ra tên nhân viên có tuổi cao nhất select top 1 TenNV,Max(year(getdate())-year(Ngaysinh)) as Tuoimax from tblNhanvien group by TenNV order by Tuoimax desc Truy vấn nhiều bảng 1 Lấy ra tên những nhân viên đi trên tuyến 3 select TenNV,Matuyen from tblNhanvien,tblChiTietLaixe where tblNhanvien.MaNV=tblChiTietLaixe.MaNV and Matuyen=3 2 Lấy ra tên những nhân viên có số giờ trên xe lớn hơn 12 select TenNV,sogio from tblNhanvien,tblChiTietLaixe where tblNhanvien.MaNV=tblChiTietLaixe.MaNV and sogio>12 3 Lấy ra tên các trạm dừng của tuyến 17 select tblTuyen.Matuyen,Tentramdung from tblTuyen join tblChiTietTramdung on tblTuyen.Matuyen=tblChiTietTramdung.Matuyen join tblTramdung on tblChiTietTramdung.Matramdung=tblTramdung.Matramdung and tblTuyen.Matuyen=17 4 Lấy ra mã,tên của nhân viên và biển số xe tương ứng khi làm việc trong ngày 06-11-2021 select tblNhanvien.MaNV,TenNV,tblXe.Bienso from tblNhanvien join tblChiTietLaixe on tblNhanvien.MaNV=tblChiTietLaixe.MaNV join tblXe on tblChiTietLaixe.Bienso=tblXe.Bienso and Ngaychay='06/11/2021' 2 Tạo View hiển thị dữ liệu /* 10 câu View */ 1 Tạo view đếm số xe đi của mỗi nhân viên create view vw_dixe as select tblNhanVien.MaNV, count(MaTuyen) as[Số lần đi] from tblNhanvien, tblChiTietLaixe where tblNhanVien.MaNV = tblChiTietLaixe.MaNV Downloaded by Uy vu Nguyen (tailieuso.11@gmail.com) lOMoARcPSD|38544120 begin if (@nvl@dc end exec sel_dc N'Hà Nội' /* 13.Lấy ra nhân viên nam hoặc nữ với độ tuổi tăng dần, truyền vào giới tính create proc sel_gt @gt nchar(3) as begin select MaNV,TenNV,Diachi, datediff(day,Ngaysinh,getdate())/365 as [tuổi] from tblNhanvien where Gioitinh = @gt order by [tuổi] desc end exec sel_gt 'Nam' /* 14.Tạo thủ tục xem xe nào cũ nhất với tham số truyền vào là loại xe create proc sel_gt @loai nvarchar(50) as begin select top 1 Bienso, datediff(day,Ngaysanxuat,getdate())/365 as [Thời gian sd] from tblXe where Loaixe = @loai order by [Thời gian sd] desc end exec sel_xe @loai=N'Xe thường' Downloaded by Uy vu Nguyen (tailieuso.11@gmail.com) lOMoARcPSD|38544120 /* 15.Tạo thủ tục đếm nhân viên theo giới tính CREATE PROC sp_DemGioiTinh @Nam int OUTPUT, @Nu int OUTPUT AS BEGIN SET @Nam = 0 SET @Nu = 0 SELECT @Nam = COUNT (*) FROM dbo.tblNhanvien WHERE Gioitinh =N'Nam' SELECT @Nu = COUNT (*) FROM dbo.tblNhanvien WHERE Gioitinh = N'Nữ' RETURN @Nam + @Nu END DECLARE @TongGTNam INT, @TongGTNu INT, @TongSo INT EXEC @TongSo = sp_DemGioiTinh @Nam=@TongGTNam OUTPUT, @Nu = @TongGTNu OUTPUT SELECT @TongGTNam AS N'Nam', @TongGTNu AS N'Nữ', @TongSo AS N'Tổng số' /* 16 Tạo thủ tục xem nhân viên già nhất create proc old_nv as begin select top 1 MaNV,TenNV, datediff(day,Ngaysinh,getdate())/365 as [Tuổi] from tblNhanvien order by [Tuổi] desc end /* 17 Tạo thủ tục xem lứa tuổi nhân viên create proc lua_tuoi as begin SELECT TenNV, LuaTuoi = CASE WHEN YEAR(GETDATE())-YEAR([Ngaysinh])>=40 AND YEAR(GETDATE())-YEAR([Ngaysinh])