CHỦ ĐỀ 01 I. Đề bài. - Xây dựng chương trình quản lý mượn trả sách trong thư viện - Các bảng tối thiểu cần có: tblSach(Sách), tblBanDoc(Bạn đọc), tblThuThu(Thủ thư), tblPhieuMuon(Phiếu mượn), tblCTPhieuMuon(Chi tiết phiếu mượn), .... (Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài toán thực tế) - Yêu cầu cần thực hiện: 1. Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo CSDL, tạo bảng và chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi 2. Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông tin một bảng, lấy thông tin nhiều bảng, tính toán gom nhóm, ...) 3. Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có truyền tham số) 4. Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger 5. Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân quyền sử dụng cho Bảng, View, Thủ tục đã tạo ở trên 6. Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc, thực hiện các yêu cầu khai thác trên dữ liệu phân tán II. Yêu cầu chung về quyển báo cáo và chương trình *Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau: Nguyên tắc: SQLSERVER-BTL-- Ví dụ: SQLSERVER -BTL-01-NguyenVanHung *Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám gồm: Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ tục Proc, tạo và thực thi các Trigger, tạo người dùng và phân quyền người dùng, .... *Cấu trúc quyển báo cáo: 1. Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp. 2. Mục lục. 3. Giới thiệu đề tài. 4. Phát biểu bài toán 5. Mô hình CSDL và tạo CSDL - tạo và chỉnh sửa các bảng 6. Các đối tượng CSDL gồm: View, Proc, Trigger 7. Phân quyền và bảo mật CSDL 8. . 9. Kết luận, hướng phát triển tiếp theo 10. Tài liệu tham khảo CHỦ ĐỀ 02 I. Đề bài. - Xây dựng chương trình quản lý thuê phòng khách sạn - Các bảng tối thiểu cần có: tblKhachHang(Khách hàng), tblNhanVien(Nhân viên), tblPhong(Phòng), tblHoaDon(Hoá đơn), tblCTHoaDon( chi tiết hoá đơn), ... (Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài toán thực tế) 1. Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo CSDL, tạo bảng và chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi 2. Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông tin một bảng, lấy thông tin nhiều bảng, tính toán gom nhóm, ...) 3. Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có truyền tham số) 4. Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger 5. Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân quyền sử dụng cho Bảng, View, Thủ tục đã tạo ở trên 6. Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc, thực hiện các yêu cầu khai thác trên dữ liệu phân tán II. Yêu cầu chung về quyển báo cáo và chương trình *Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau: Nguyên tắc: SQLSERVER-BTL-- Ví dụ: SQLSERVER -BTL-01-NguyenVanHung *Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám gồm: Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ tục Proc, tạo và thực thi các Trigger, tạo người dùng và phân quyền người dùng, .... *Cấu trúc quyển báo cáo: 1. Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp. 2. Mục lục. 3. Giới thiệu đề tài. 4. Phát biểu bài toán 5. Mô hình CSDL và tạo CSDL - tạo và chỉnh sửa các bảng 6. Các đối tượng CSDL gồm: View, Proc, Trigger 7. Phân quyền và bảo mật CSDL 8. . 9. Kết luận, hướng phát triển tiếp theo 10. Tài liệu tham khảo CHỦ ĐỀ 1: -- 1. Tạo CSDL và bảng, chèn dữ liệu -- Kiểm tra và ngắt tất cả các kết nối tới cơ sở dữ liệu nếu đã tồn tại IF EXISTS (SELECT name FROM sys.databases WHERE name = N''''QuanLyThuVienSach'''') BEGIN ALTER DATABASE QuanLyThuVienSach SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE QuanLyThuVienSach; END GO
Trang 1CHỦ ĐỀ 01
I Đề bài.
- Xây dựng chương trình quản lý mượn trả sách trong thư viện
- Các bảng tối thiểu cần có: tblSach(Sách), tblBanDoc(Bạn đọc), tblThuThu(Thủ thư), tblPhieuMuon(Phiếu mượn), tblCTPhieuMuon(Chi tiết phiếu mượn),
(Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài toán thực tế)
- Yêu cầu cần thực hiện:
1 Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo CSDL, tạo bảng và
chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi
2 Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông tin một bảng,
lấy thông tin nhiều bảng, tính toán gom nhóm, )
3 Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có truyền tham số)
4 Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger
5 Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân quyền sử dụng cho
Bảng, View, Thủ tục đã tạo ở trên
6 Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc, thực hiện các yêu
cầu khai thác trên dữ liệu phân tán
II Yêu cầu chung về quyển báo cáo và chương trình
*Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau:
Nguyên tắc: SQLSERVER-BTL-<thứ tự đề>-<Họ tên sinh viên>
Ví dụ: SQLSERVER -BTL-01-NguyenVanHung
*Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám gồm:
Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ tục Proc, tạo
và thực thi các Trigger, tạo người dùng và phân quyền người dùng,
*Cấu trúc quyển báo cáo:
1 Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp.
2 Mục lục.
3 Giới thiệu đề tài.
4 Phát biểu bài toán
5 Mô hình CSDL và tạo CSDL - tạo và chỉnh sửa các bảng
6 Các đối tượng CSDL gồm: View, Proc, Trigger
7 Phân quyền và bảo mật CSDL
8 .
9 Kết luận, hướng phát triển tiếp theo
10 Tài liệu tham khảo
CHỦ ĐỀ 02
I Đề bài.
Trang 2- Xây dựng chương trình quản lý thuê phòng khách sạn
- Các bảng tối thiểu cần có: tblKhachHang(Khách hàng), tblNhanVien(Nhân viên), tblPhong(Phòng), tblHoaDon(Hoá đơn), tblCTHoaDon( chi tiết hoá đơn),
(Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài toán thực tế)
1 Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo CSDL, tạo bảng và
chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi
2 Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông tin một bảng,
lấy thông tin nhiều bảng, tính toán gom nhóm, )
3 Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có truyền tham số)
4 Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger
5 Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân quyền sử dụng cho
Bảng, View, Thủ tục đã tạo ở trên
6 Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc, thực hiện các yêu
cầu khai thác trên dữ liệu phân tán
II Yêu cầu chung về quyển báo cáo và chương trình
*Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau:
Nguyên tắc: SQLSERVER-BTL-<thứ tự đề>-<Họ tên sinh viên>
Ví dụ: SQLSERVER -BTL-01-NguyenVanHung
*Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám gồm:
Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ tục Proc, tạo
và thực thi các Trigger, tạo người dùng và phân quyền người dùng,
*Cấu trúc quyển báo cáo:
1 Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp.
2 Mục lục.
3 Giới thiệu đề tài.
4 Phát biểu bài toán
5 Mô hình CSDL và tạo CSDL - tạo và chỉnh sửa các bảng
6 Các đối tượng CSDL gồm: View, Proc, Trigger
7 Phân quyền và bảo mật CSDL
8 .
9 Kết luận, hướng phát triển tiếp theo
10 Tài liệu tham khảo
CHỦ ĐỀ 03
I Đề bài.
- Xây dựng chương trình quản lý bệnh nhân điều trị tại bệnh viện
- Các bảng tối thiểu cần có: tblBenhNhan(Bệnh nhân), tblBacSy(Bác Sỹ), tblKhoa(Khoa),
tblPhieuDieuTri(Phiếu điều trị),
(Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài toán thực tế)
Trang 3- Yêu cầu cần thực hiện:
1 Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo CSDL, tạo bảng và
chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi
2 Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông tin một bảng,
lấy thông tin nhiều bảng, tính toán gom nhóm, )
3 Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có truyền tham số)
4 Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger
5 Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân quyền sử dụng cho
Bảng, View, Thủ tục đã tạo ở trên
6 Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc, thực hiện các yêu
cầu khai thác trên dữ liệu phân tán
II Yêu cầu chung về quyển báo cáo và chương trình
*Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau:
Nguyên tắc: SQLSERVER-BTL-<thứ tự đề>-<Họ tên sinh viên>
Ví dụ: SQLSERVER -BTL-01-NguyenVanHung
*Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám gồm:
Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ tục Proc, tạo
và thực thi các Trigger, tạo người dùng và phân quyền người dùng,
*Cấu trúc quyển báo cáo:
1 Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp.
2 Mục lục.
3 Giới thiệu đề tài.
4 Phát biểu bài toán
5 Mô hình CSDL và tạo CSDL - tạo và chỉnh sửa các bảng
6 Các đối tượng CSDL gồm: View, Proc, Trigger
7 Phân quyền và bảo mật CSDL
8 .
9 Kết luận, hướng phát triển tiếp theo
10 Tài liệu tham khảo
CHỦ ĐỀ 04
I Đề bài.
- Xây dựng chương trình quản lý kinh doanh cửa hàng thuốc
- Các bảng tối thiểu cần có: tblThuoc(Thuốc), tblKhachHang(Khách hàng), tblNhanVien(Nhân viên), tblHoaDon(Hoá đơn), tblCTHoaDon(Chi tiết hoá đơn),
(Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài toán thực tế)
- Yêu cầu cần thực hiện:
1 Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo CSDL, tạo bảng và
Trang 4chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi
2 Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông tin một bảng,
lấy thông tin nhiều bảng, tính toán gom nhóm, )
3 Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có truyền tham số)
4 Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger
5 Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân quyền sử dụng cho
Bảng, View, Thủ tục đã tạo ở trên
6 Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc, thực hiện các yêu
cầu khai thác trên dữ liệu phân tán
II Yêu cầu chung về quyển báo cáo và chương trình
*Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau:
Nguyên tắc: SQLSERVER-BTL-<thứ tự đề>-<Họ tên sinh viên>
Ví dụ: SQLSERVER -BTL-01-NguyenVanHung
*Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám gồm:
Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ tục Proc, tạo
và thực thi các Trigger, tạo người dùng và phân quyền người dùng,
*Cấu trúc quyển báo cáo:
1 Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp.
2 Mục lục.
3 Giới thiệu đề tài.
4 Phát biểu bài toán
5 Mô hình CSDL và tạo CSDL - tạo và chỉnh sửa các bảng
6 Các đối tượng CSDL gồm: View, Proc, Trigger
7 Phân quyền và bảo mật CSDL
8 .
9 Kết luận, hướng phát triển tiếp theo
10 Tài liệu tham khảo
CHỦ ĐỀ 05
I Đề bài.
- Xây dựng chương trình quản lý kinh doanh máy tính tại cửa hàng bán máy tính
- Các bảng tối thiểu cần có: tblMayTinh(Máy tính), tblKhachHang(Khách hàng), tblNhanVien(Nhân viên), tblHoaDon(Hoá đơn), tblCTHoaDon(Chi tiết hoá đơn),
(Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài toán thực tế)
- Yêu cầu cần thực hiện:
1 Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo CSDL, tạo bảng và
chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi
2 Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông tin một bảng,
Trang 5lấy thông tin nhiều bảng, tính toán gom nhóm, )
3 Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có truyền tham số)
4 Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger
5 Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân quyền sử dụng cho
Bảng, View, Thủ tục đã tạo ở trên
6 Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc, thực hiện các yêu
cầu khai thác trên dữ liệu phân tán
II Yêu cầu chung về quyển báo cáo và chương trình
*Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau:
Nguyên tắc: SQLSERVER-BTL-<thứ tự đề>-<Họ tên sinh viên>
Ví dụ: SQLSERVER -BTL-01-NguyenVanHung
*Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám gồm:
Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ tục Proc, tạo
và thực thi các Trigger, tạo người dùng và phân quyền người dùng,
*Cấu trúc quyển báo cáo:
1 Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp.
2 Mục lục.
3 Giới thiệu đề tài.
4 Phát biểu bài toán
5 Mô hình CSDL và tạo CSDL - tạo và chỉnh sửa các bảng
6 Các đối tượng CSDL gồm: View, Proc, Trigger
7 Phân quyền và bảo mật CSDL
8 .
9 Kết luận, hướng phát triển tiếp theo
10 Tài liệu tham khảo
CHỦ ĐỀ 06
I Đề bài.
- Xây dựng chương trình quản lý bán hàng tại cửa hành kinh doanh điện thoại
- Các bảng tối thiểu cần có: tblDienThoai(Điện thoại), tblKhachHang(Khách hàng), tblNhanVien(Nhân viên), tblHoaDon(Hoá đơn), tblCTHoaDon(Chi tiết hoá đơn),
(Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài toán thực tế)
- Yêu cầu cần thực hiện:
1 Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo CSDL, tạo bảng và
chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi
2 Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông tin một bảng,
lấy thông tin nhiều bảng, tính toán gom nhóm, )
3 Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có truyền tham số)
Trang 64 Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger
5 Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân quyền sử dụng cho
Bảng, View, Thủ tục đã tạo ở trên
6 Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc, thực hiện các yêu
cầu khai thác trên dữ liệu phân tán
II Yêu cầu chung về quyển báo cáo và chương trình
*Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau:
Nguyên tắc: SQLSERVER-BTL-<thứ tự đề>-<Họ tên sinh viên>
Ví dụ: SQLSERVER -BTL-01-NguyenVanHung
*Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám gồm:
Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ tục Proc, tạo
và thực thi các Trigger, tạo người dùng và phân quyền người dùng,
*Cấu trúc quyển báo cáo:
1 Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp.
2 Mục lục.
3 Giới thiệu đề tài.
4 Phát biểu bài toán
5 Mô hình CSDL và tạo CSDL - tạo và chỉnh sửa các bảng
6 Các đối tượng CSDL gồm: View, Proc, Trigger
7 Phân quyền và bảo mật CSDL
8 .
9 Kết luận, hướng phát triển tiếp theo
10 Tài liệu tham khảo
CHỦ ĐỀ 07
I Đề bài.
- Xây dựng chương trình quản lý nhập hàng tại kho của công ty sản xuất
- Các bảng tối thiểu cần có: tblSanPham(Sản phẩm), tblNhanVien(Nhân viên), tblNhaCC(Nhà cung cấp), tblPhieuNhap(phiếu nhập), tblCTPhieuNhap(Chi tiết phiếu nhập),
(Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài toán thực tế)
- Yêu cầu cần thực hiện:
1 Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo CSDL, tạo bảng và
chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi
2 Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông tin một bảng,
lấy thông tin nhiều bảng, tính toán gom nhóm, )
3 Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có truyền tham số)
4 Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger
5 Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân quyền sử dụng cho
Trang 7Bảng, View, Thủ tục đã tạo ở trên
6 Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc, thực hiện các yêu
cầu khai thác trên dữ liệu phân tán
II Yêu cầu chung về quyển báo cáo và chương trình
*Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau:
Nguyên tắc: SQLSERVER-BTL-<thứ tự đề>-<Họ tên sinh viên>
Ví dụ: SQLSERVER -BTL-01-NguyenVanHung
*Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám gồm:
Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ tục Proc, tạo
và thực thi các Trigger, tạo người dùng và phân quyền người dùng,
*Cấu trúc quyển báo cáo:
1 Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp.
2 Mục lục.
3 Giới thiệu đề tài.
4 Phát biểu bài toán
5 Mô hình CSDL và tạo CSDL - tạo và chỉnh sửa các bảng
6 Các đối tượng CSDL gồm: View, Proc, Trigger
7 Phân quyền và bảo mật CSDL
8 .
9 Kết luận, hướng phát triển tiếp theo
10 Tài liệu tham khảo
CHỦ ĐỀ 08
I Đề bài.
- Xây dựng chương trình quản lý cửa hàng kinh doanh quần áo
- Các bảng tối thiểu cần có: tblQuanAo(Quần áo), tblKhachHang(Khách hàng), tblNhanVien(Nhân viên), tblHoaDon(Hoá đơn), tblCTHoaDon(Chi tiết hoá đơn),
(Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài toán thực tế)
- Yêu cầu cần thực hiện:
1 Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo CSDL, tạo bảng và
chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi
2 Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông tin một bảng,
lấy thông tin nhiều bảng, tính toán gom nhóm, )
3 Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có truyền tham số)
4 Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger
5 Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân quyền sử dụng cho
Bảng, View, Thủ tục đã tạo ở trên
6 Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc, thực hiện các yêu
Trang 8cầu khai thác trên dữ liệu phân tán
II Yêu cầu chung về quyển báo cáo và chương trình
*Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau:
Nguyên tắc: SQLSERVER-BTL-<thứ tự đề>-<Họ tên sinh viên>
Ví dụ: SQLSERVER -BTL-01-NguyenVanHung
*Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám gồm:
Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ tục Proc, tạo
và thực thi các Trigger, tạo người dùng và phân quyền người dùng,
*Cấu trúc quyển báo cáo:
1 Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp.
2 Mục lục.
3 Giới thiệu đề tài.
4 Phát biểu bài toán
5 Mô hình CSDL và tạo CSDL - tạo và chỉnh sửa các bảng
6 Các đối tượng CSDL gồm: View, Proc, Trigger
7 Phân quyền và bảo mật CSDL
8 .
9 Kết luận, hướng phát triển tiếp theo
10 Tài liệu tham khảo
CHỦ ĐỀ 09
I Đề bài.
- Xây dựng chương trình quản lý khám bệnh tại Phòng khám Đa khoa
- Các bảng tối thiểu cần có: tblDichVu(Dịch vụ khám bệnh), tblNhanVien(Nhân viên), tblBenhNhan(Bệnh nhân khám), tblPhieuKham(phiếu khám), tblCTPhieuKham(Chi tiết phiếu
khám),
(Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài toán thực tế)
- Yêu cầu cần thực hiện:
1 Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo CSDL, tạo bảng và
chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi
2 Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông tin một bảng,
lấy thông tin nhiều bảng, tính toán gom nhóm, )
3 Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có truyền tham số)
4 Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger
5 Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân quyền sử dụng cho
Bảng, View, Thủ tục đã tạo ở trên
6 Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc, thực hiện các yêu
cầu khai thác trên dữ liệu phân tán
Trang 9II Yêu cầu chung về quyển báo cáo và chương trình
*Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau:
Nguyên tắc: SQLSERVER-BTL-<thứ tự đề>-<Họ tên sinh viên>
Ví dụ: SQLSERVER -BTL-01-NguyenVanHung
*Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám gồm:
Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ tục Proc, tạo
và thực thi các Trigger, tạo người dùng và phân quyền người dùng,
*Cấu trúc quyển báo cáo:
1 Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp.
2 Mục lục.
3 Giới thiệu đề tài.
4 Phát biểu bài toán
5 Mô hình CSDL và tạo CSDL - tạo và chỉnh sửa các bảng
6 Các đối tượng CSDL gồm: View, Proc, Trigger
7 Phân quyền và bảo mật CSDL
8 .
9 Kết luận, hướng phát triển tiếp theo
10 Tài liệu tham khảo
CHỦ ĐỀ 10
I Đề bài.
- Xây dựng chương trình quản lý công ty chuyên thiết kế nội thất
- Các bảng tối thiểu cần có: tblDichVu( bảng giá dịch vụ thiết kế), tblKhachHang(Khách hàng), tblNhanVien(Nhân viên), tblHoaDon(hoá đơn kiêm hợp đồng thiết kế nội thất), tblCTHoaDon(Chi tiết
hoá đơn),
(Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài toán thực tế)
- Yêu cầu cần thực hiện:
1 Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo CSDL, tạo bảng và
chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi
2 Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông tin một bảng,
lấy thông tin nhiều bảng, tính toán gom nhóm, )
3 Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có truyền tham số)
4 Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger
5 Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân quyền sử dụng cho
Bảng, View, Thủ tục đã tạo ở trên
6 Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc, thực hiện các yêu
cầu khai thác trên dữ liệu phân tán
II Yêu cầu chung về quyển báo cáo và chương trình
Trang 10*Toàn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên tắc sau: Nguyên
tắc: SQLSERVER-BTL-<thứ tự đề>-<Họ tên sinh viên> Ví dụ: SQLSERVER
-BTL-01-NguyenVanHung
*Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL của bài toám gồm:
Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các View, tạo và thực thi các thủ tục Proc, tạo
và thực thi các Trigger, tạo người dùng và phân quyền người dùng,
*Cấu trúc quyển báo cáo:
1 Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp.
2 Mục lục.
3 Giới thiệu đề tài.
4 Phát biểu bài toán
5 Mô hình CSDL và tạo CSDL - tạo và chỉnh sửa các bảng
6 Các đối tượng CSDL gồm: View, Proc, Trigger
7 Phân quyền và bảo mật CSDL
8 .
9 Kết luận, hướng phát triển tiếp theo
10 Tài liệu tham khảo
BÀI LÀM
CHỦ ĐỀ 1:
1 Tạo CSDL và bảng, chèn dữ liệu
Kiểm tra và ngắt tất cả các kết nối tới cơ sở dữ liệu nếu đã tồn tại
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'QuanLyThuVienSach')
Tạo cơ sở dữ liệu mới
CREATE DATABASE QuanLyThuVienSach;
GO
Sử dụng cơ sở dữ liệu mới
USE QuanLyThuVienSach;
GO
Trang 11Kiểm tra và xóa các bảng nếu tồn tại
IF OBJECT_ID('dbo.tblCTPhieuMuon', 'U') IS NOT NULL
DROP TABLE dbo.tblCTPhieuMuon;
GO
IF OBJECT_ID('dbo.tblPhieuMuon', 'U') IS NOT NULL
DROP TABLE dbo.tblPhieuMuon;
GO
IF OBJECT_ID('dbo.tblThuThu', 'U') IS NOT NULL
DROP TABLE dbo.tblThuThu;
GO
IF OBJECT_ID('dbo.tblBanDoc', 'U') IS NOT NULL
DROP TABLE dbo.tblBanDoc;
GO
IF OBJECT_ID('dbo.tblSach', 'U') IS NOT NULL
DROP TABLE dbo.tblSach;
GO
Tạo bảng tblSach
CREATE TABLE tblSach (
MaSach INT PRIMARY KEY,
CREATE TABLE tblBanDoc (
MaBanDoc INT PRIMARY KEY,
HoTen NVARCHAR(100),
NgaySinh DATE,
DiaChi NVARCHAR(200)
);
Trang 12Tạo bảng tblThuThu
CREATE TABLE tblThuThu (
MaThuThu INT PRIMARY KEY,
CREATE TABLE tblPhieuMuon (
MaPhieuMuon INT PRIMARY KEY,
MaBanDoc INT,
MaThuThu INT,
NgayMuon DATE,
NgayTra DATE,
FOREIGN KEY (MaBanDoc) REFERENCES tblBanDoc(MaBanDoc),
FOREIGN KEY (MaThuThu) REFERENCES tblThuThu(MaThuThu)
Chèn dữ liệu mẫu vào bảng tblSach
INSERT INTO tblSach VALUES (1, 'Lập trình C++', 'Nguyễn Văn A', 'NXB Trẻ', 2020);INSERT INTO tblSach VALUES (2, 'Cơ sở dữ liệu', 'Trần Văn B', 'NXB Giáo dục', 2018);INSERT INTO tblSach VALUES (3, 'Mạng máy tính', 'Lê Thị C', 'NXB Khoa học', 2019);
Trang 13INSERT INTO tblSach VALUES (4, 'Thuật toán', 'Nguyễn Thị D', 'NXB Trẻ', 2021);
INSERT INTO tblSach VALUES (5, 'An toàn thông tin', 'Phạm Văn E', 'NXB Công nghệ', 2022);GO
Chèn dữ liệu mẫu vào bảng tblBanDoc
INSERT INTO tblBanDoc VALUES (1, 'Nguyễn Văn A', '1995-01-01', 'Hà Nội');
INSERT INTO tblBanDoc VALUES (2, 'Trần Văn B', '1996-02-02', 'Hà Nội');
INSERT INTO tblBanDoc VALUES (3, 'Lê Thị C', '1997-03-03', 'Hà Nội');
INSERT INTO tblBanDoc VALUES (4, 'Nguyễn Thị D', '1998-04-04', 'Hà Nội');
INSERT INTO tblBanDoc VALUES (5, 'Phạm Văn E', '1999-05-05', 'Hà Nội');
GO
Chèn dữ liệu mẫu vào bảng tblThuThu
INSERT INTO tblThuThu VALUES (1, 'Nguyễn Văn A', '1980-01-01', 'Hà Nội');
INSERT INTO tblThuThu VALUES (2, 'Trần Văn B', '1981-02-02', 'Hà Nội');
INSERT INTO tblThuThu VALUES (3, 'Lê Thị C', '1982-03-03', 'Hà Nội');
INSERT INTO tblThuThu VALUES (4, 'Nguyễn Thị D', '1983-04-04', 'Hà Nội');
INSERT INTO tblThuThu VALUES (5, 'Phạm Văn E', '1984-05-05', 'Hà Nội');
GO
Chèn dữ liệu mẫu vào bảng tblPhieuMuon
INSERT INTO tblPhieuMuon VALUES (1, 1, 1, '2023-01-01', '2023-01-10');
INSERT INTO tblPhieuMuon VALUES (2, 2, 2, '2023-02-01', '2023-02-10');
INSERT INTO tblPhieuMuon VALUES (3, 3, 3, '2023-03-01', '2023-03-10');
INSERT INTO tblPhieuMuon VALUES (4, 4, 4, '2023-04-01', '2023-04-10');
INSERT INTO tblPhieuMuon VALUES (5, 5, 5, '2023-05-01', '2023-05-10');
GO
Chèn dữ liệu mẫu vào bảng tblCTPhieuMuon
INSERT INTO tblCTPhieuMuon VALUES (1, 1, 1);
INSERT INTO tblCTPhieuMuon VALUES (1, 2, 2);
INSERT INTO tblCTPhieuMuon VALUES (2, 3, 1);
INSERT INTO tblCTPhieuMuon VALUES (3, 4, 1);
INSERT INTO tblCTPhieuMuon VALUES (4, 5, 2);
GO
2 Tạo các view
View lấy thông tin tất cả các sách
Trang 14CREATE VIEW vwAllSach AS
SELECT * FROM tblSach;
GO
View lấy thông tin sách mượn và người mượn
CREATE VIEW vwSachMuon AS
SELECT pm.MaPhieuMuon, bd.HoTen AS BanDoc, tt.HoTen AS ThuThu, pm.NgayMuon,
pm.NgayTra, s.TenSach, ctm.SoLuong
FROM tblPhieuMuon pm
JOIN tblBanDoc bd ON pm.MaBanDoc = bd.MaBanDoc
JOIN tblThuThu tt ON pm.MaThuThu = tt.MaThuThu
JOIN tblCTPhieuMuon ctm ON pm.MaPhieuMuon = ctm.MaPhieuMuon
JOIN tblSach s ON ctm.MaSach = s.MaSach;
GO
View tổng số lượng sách mượn theo bạn đọc
CREATE VIEW vwTongSachMuonTheoBanDoc AS
SELECT bd.HoTen, SUM(ctm.SoLuong) AS TongSoLuong
FROM tblBanDoc bd
JOIN tblPhieuMuon pm ON bd.MaBanDoc = pm.MaBanDoc
JOIN tblCTPhieuMuon ctm ON pm.MaPhieuMuon = ctm.MaPhieuMuon
GROUP BY bd.HoTen;
GO
View lấy thông tin bạn đọc và sách họ đã mượn
CREATE VIEW vwBanDocSachMuon AS
SELECT bd.HoTen AS BanDoc, s.TenSach AS Sach, pm.NgayMuon, pm.NgayTra
FROM tblBanDoc bd
JOIN tblPhieuMuon pm ON bd.MaBanDoc = pm.MaBanDoc
JOIN tblCTPhieuMuon ctm ON pm.MaPhieuMuon = ctm.MaPhieuMuon
JOIN tblSach s ON ctm.MaSach = s.MaSach;
GO
View lấy thông tin chi tiết phiếu mượn
CREATE VIEW vwChiTietPhieuMuon AS
SELECT pm.MaPhieuMuon, bd.HoTen AS BanDoc, tt.HoTen AS ThuThu, s.TenSach, ctm.SoLuong, pm.NgayMuon, pm.NgayTra
FROM tblPhieuMuon pm
Trang 15JOIN tblBanDoc bd ON pm.MaBanDoc = bd.MaBanDoc
JOIN tblThuThu tt ON pm.MaThuThu = tt.MaThuThu
JOIN tblCTPhieuMuon ctm ON pm.MaPhieuMuon = ctm.MaPhieuMuon
JOIN tblSach s ON ctm.MaSach = s.MaSach;
GO
View lấy thông tin sách mượn theo tháng
CREATE VIEW vwSachMuonTheoThang AS
SELECT MONTH(pm.NgayMuon) AS Thang, s.TenSach, COUNT(*) AS SoLanMuonFROM tblPhieuMuon pm
JOIN tblCTPhieuMuon ctm ON pm.MaPhieuMuon = ctm.MaPhieuMuon
JOIN tblSach s ON ctm.MaSach = s.MaSach
GROUP BY MONTH(pm.NgayMuon), s.TenSach;
GO
View lấy thông tin sách mượn theo năm
CREATE VIEW vwSachMuonTheoNam AS
SELECT YEAR(pm.NgayMuon) AS Nam, s.TenSach, COUNT(*) AS SoLanMuon
FROM tblPhieuMuon pm
JOIN tblCTPhieuMuon ctm ON pm.MaPhieuMuon = ctm.MaPhieuMuon
JOIN tblSach s ON ctm.MaSach = s.MaSach
GROUP BY YEAR(pm.NgayMuon), s.TenSach;
GO
View lấy thông tin sách mượn quá hạn
CREATE VIEW vwSachMuonQuaHan AS
SELECT pm.MaPhieuMuon, bd.HoTen AS BanDoc, s.TenSach, pm.NgayMuon, pm.NgayTraFROM tblPhieuMuon pm
JOIN tblBanDoc bd ON pm.MaBanDoc = bd.MaBanDoc
JOIN tblCTPhieuMuon ctm ON pm.MaPhieuMuon = ctm.MaPhieuMuon
JOIN tblSach s ON ctm.MaSach = s.MaSach
WHERE pm.NgayTra < GETDATE();
GO
View lấy thông tin số lượng sách mượn theo thủ thư
CREATE VIEW vwSoLuongSachMuonTheoThuThu AS
SELECT tt.HoTen AS ThuThu, COUNT(*) AS SoLuongSachMuon
FROM tblThuThu tt
Trang 16JOIN tblPhieuMuon pm ON tt.MaThuThu = pm.MaThuThu
JOIN tblCTPhieuMuon ctm ON pm.MaPhieuMuon = ctm.MaPhieuMuon
GROUP BY tt.HoTen;
GO
View lấy thông tin sách mượn theo bạn đọc trong tháng hiện tại
CREATE VIEW vwSachMuonTheoBanDocTrongThangHienTai AS
SELECT bd.HoTen AS BanDoc, s.TenSach, ctm.SoLuong, pm.NgayMuon, pm.NgayTraFROM tblBanDoc bd
JOIN tblPhieuMuon pm ON bd.MaBanDoc = pm.MaBanDoc
JOIN tblCTPhieuMuon ctm ON pm.MaPhieuMuon = ctm.MaPhieuMuon
JOIN tblSach s ON ctm.MaSach = s.MaSach
WHERE MONTH(pm.NgayMuon) = MONTH(GETDATE()) AND YEAR(pm.NgayMuon) = YEAR(GETDATE());
GO
3 Tạo và thực thi các thủ tục
Stored Procedure để thêm sách mới
CREATE PROCEDURE spAddSach
INSERT INTO tblSach (MaSach, TenSach, TacGia, NhaXuatBan, NamXuatBan)
VALUES (@MaSach, @TenSach, @TacGia, @NhaXuatBan, @NamXuatBan);
END
GO
Tạo kiểu dữ liệu bảng cho thủ tục mượn sách
CREATE TYPE TblCTPhieuMuonType AS TABLE (
MaSach INT,
SoLuong INT
);
GO
Trang 17Stored Procedure để mượn sách
CREATE PROCEDURE spMuonSach
INSERT INTO tblCTPhieuMuon (MaPhieuMuon, MaSach, SoLuong)
SELECT @MaPhieuMuon, MaSach, SoLuong FROM @ChiTietPhieu;
DELETE FROM tblCTPhieuMuon WHERE MaPhieuMuon = @MaPhieuMuon;
DELETE FROM tblPhieuMuon WHERE MaPhieuMuon = @MaPhieuMuon;
END
GO
Stored Procedure để cập nhật thông tin sách
CREATE PROCEDURE spUpdateSach
@MaSach INT,
@TenSach NVARCHAR(100),
@TacGia NVARCHAR(100),
@NhaXuatBan NVARCHAR(100),
Trang 18Stored Procedure để xóa sách
CREATE PROCEDURE spDeleteSach
Trigger kiểm tra sách tồn tại trước khi thêm vào phiếu mượn
CREATE TRIGGER trgCheckSachTruocKhiMuon
ON tblCTPhieuMuon
INSTEAD OF INSERT
AS
BEGIN
DECLARE @MaSach INT;
SELECT @MaSach = i.MaSach FROM inserted i;
Trang 19SELECT MaPhieuMuon, MaSach, SoLuong FROM inserted;
END
END
GO
Trigger tự động cập nhật ngày trả sách khi mượn sách
CREATE TRIGGER trgUpdateNgayTra
SET NgayTra = DATEADD(DAY, 10, NgayMuon)
WHERE MaPhieuMuon IN (SELECT MaPhieuMuon FROM inserted);
END
GO
Trigger ngăn việc xóa sách khi có phiếu mượn
CREATE TRIGGER trgPreventDeleteSach
ON tblSach
INSTEAD OF DELETE
AS
BEGIN
DECLARE @MaSach INT;
SELECT @MaSach = i.MaSach FROM deleted i;
IF EXISTS (SELECT 1 FROM tblCTPhieuMuon WHERE MaSach = @MaSach) BEGIN
RAISERROR('Không thể xóa sách đang được mượn!', 16, 1);
Trang 20Trigger ghi lại lịch sử khi cập nhật thông tin sách
CREATE TABLE tblSachHistory (
GO
Trigger ngăn việc xóa bạn đọc khi có phiếu mượn
CREATE TRIGGER trgPreventDeleteBanDoc
ON tblBanDoc
INSTEAD OF DELETE
AS
BEGIN
DECLARE @MaBanDoc INT;
SELECT @MaBanDoc = i.MaBanDoc FROM deleted i;
IF EXISTS (SELECT 1 FROM tblPhieuMuon WHERE MaBanDoc = @MaBanDoc) BEGIN
RAISERROR('Không thể xóa bạn đọc đang mượn sách!', 16, 1);
ROLLBACK TRANSACTION;
END
ELSE
Trang 215 Phân quyền và bảo mật cho CSDL
Tạo login cho người dùng
IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = 'user1') CREATE LOGIN user1 WITH PASSWORD = 'Password1!';
IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = 'user2') CREATE LOGIN user2 WITH PASSWORD = 'Password2!';
Tạo người dùng trong cơ sở dữ liệu
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = 'user1') CREATE USER user1 FOR LOGIN user1;
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = 'user2') CREATE USER user2 FOR LOGIN user2;
GO
Phân quyền cho user1
GRANT SELECT, INSERT, UPDATE, DELETE ON tblSach TO user1;
GRANT SELECT, INSERT, UPDATE, DELETE ON tblBanDoc TO user1;
GRANT SELECT, INSERT, UPDATE, DELETE ON tblThuThu TO user1;
GRANT SELECT, INSERT, UPDATE, DELETE ON tblPhieuMuon TO user1;GRANT SELECT, INSERT, UPDATE, DELETE ON tblCTPhieuMuon TO user1;
GRANT SELECT ON vwAllSach TO user1;
GRANT SELECT ON vwSachMuon TO user1;
GRANT SELECT ON vwTongSachMuonTheoBanDoc TO user1;
GRANT SELECT ON vwBanDocSachMuon TO user1;
GRANT EXECUTE ON spAddSach TO user1;
GRANT EXECUTE ON spMuonSach TO user1;
GRANT EXECUTE ON spTraSach TO user1;
GRANT EXECUTE ON spUpdateSach TO user1;
GRANT EXECUTE ON spDeleteSach TO user1;
Trang 22Phân quyền cho user2
GRANT SELECT ON tblSach TO user2;
GRANT SELECT ON tblBanDoc TO user2;
GRANT SELECT ON tblThuThu TO user2;
GRANT SELECT ON tblPhieuMuon TO user2;
GRANT SELECT ON tblCTPhieuMuon TO user2;
GRANT SELECT ON vwAllSach TO user2;
GRANT SELECT ON vwSachMuon TO user2;
GRANT SELECT ON vwTongSachMuonTheoBanDoc TO user2;
GRANT SELECT ON vwBanDocSachMuon TO user2;
6 Phân tán dữ liệu
Tạo bảng phân tán ngang
CREATE TABLE tblSach_PhanTan1 (
MaSach INT PRIMARY KEY,
INSERT INTO tblSach_PhanTan1
SELECT * FROM tblSach WHERE MaSach <= 3;
GO
CREATE TABLE tblSach_PhanTan2 (
MaSach INT PRIMARY KEY,
INSERT INTO tblSach_PhanTan2
SELECT * FROM tblSach WHERE MaSach > 3;
Trang 23INSERT INTO tblSach_PhanTanDoc_MaSachTenSach (MaSach, TenSach)
SELECT MaSach, TenSach FROM tblSach;
Yêu cầu khai thác dữ liệu phân tán
Lấy thông tin từ bảng phân tán ngang
SELECT * FROM tblSach_PhanTan1;
GO
SELECT * FROM tblSach_PhanTan2;
GO
Lấy thông tin từ bảng phân tán dọc
SELECT * FROM tblSach_PhanTanDoc_MaSachTenSach;
Trang 24SELECT * FROM QuanLyThuVienSach.INFORMATION_SCHEMA.TABLES;
GO
Kiểm tra danh sách các view
SELECT * FROM QuanLyThuVienSach.INFORMATION_SCHEMA.VIEWS;
GO
Kiểm tra danh sách các stored procedure
SELECT * FROM QuanLyThuVienSach.INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE';
GO
Kiểm tra danh sách các function
SELECT * FROM QuanLyThuVienSach.INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION';
GO
Kiểm tra lại dữ liệu bảng
Kiểm tra dữ liệu bảng tblSach
SELECT * FROM tblSach;
GO
Kiểm tra dữ liệu bảng tblBanDoc
SELECT * FROM tblBanDoc;
GO
Kiểm tra dữ liệu bảng tblThuThu
SELECT * FROM tblThuThu;
GO
Kiểm tra dữ liệu bảng tblPhieuMuon
SELECT * FROM tblPhieuMuon;
GO
Kiểm tra dữ liệu bảng tblCTPhieuMuon
SELECT * FROM tblCTPhieuMuon;
GO
Trang 25Kiểm tra dữ liệu bảng phân tán
SELECT * FROM tblSach_PhanTan1;
Kiểm tra và ngắt tất cả các kết nối tới cơ sở dữ liệu nếu đã tồn tại
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'QuanLyCuaHangBanLe')BEGIN
ALTER DATABASE QuanLyCuaHangBanLe SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE QuanLyCuaHangBanLe;
Trang 26GO
Tạo cơ sở dữ liệu mới
CREATE DATABASE QuanLyCuaHangBanLe;
GO
Sử dụng cơ sở dữ liệu mới
USE QuanLyCuaHangBanLe;
GO
Kiểm tra và xóa các bảng nếu tồn tại
IF OBJECT_ID('dbo.tblCTHoaDon', 'U') IS NOT NULL
DROP TABLE dbo.tblCTHoaDon;
GO
IF OBJECT_ID('dbo.tblHoaDon', 'U') IS NOT NULL
DROP TABLE dbo.tblHoaDon;
GO
IF OBJECT_ID('dbo.tblKhachHang', 'U') IS NOT NULL
DROP TABLE dbo.tblKhachHang;
GO
IF OBJECT_ID('dbo.tblNhanVien', 'U') IS NOT NULL
DROP TABLE dbo.tblNhanVien;
GO
IF OBJECT_ID('dbo.tblSanPham', 'U') IS NOT NULL
DROP TABLE dbo.tblSanPham;
GO
Tạo bảng tblSanPham
CREATE TABLE tblSanPham (
MaSanPham INT PRIMARY KEY,
TenSanPham NVARCHAR(100),
LoaiSanPham NVARCHAR(100),
GiaBan DECIMAL(10, 2),
Trang 27SoLuong INT
);
GO
Tạo bảng tblKhachHang
CREATE TABLE tblKhachHang (
MaKhachHang INT PRIMARY KEY,
CREATE TABLE tblNhanVien (
MaNhanVien INT PRIMARY KEY,
CREATE TABLE tblHoaDon (
MaHoaDon INT PRIMARY KEY,
Trang 28SoLuong INT,
DonGia DECIMAL(10, 2),
FOREIGN KEY (MaHoaDon) REFERENCES tblHoaDon(MaHoaDon),
FOREIGN KEY (MaSanPham) REFERENCES tblSanPham(MaSanPham),
PRIMARY KEY (MaHoaDon, MaSanPham)
);
GO
Chèn dữ liệu mẫu vào bảng tblSanPham
INSERT INTO tblSanPham VALUES (1, 'Laptop Dell', 'Laptop', 15000000, 10);
INSERT INTO tblSanPham VALUES (2, 'Chuột Logitech', 'Phụ kiện', 500000, 100);INSERT INTO tblSanPham VALUES (3, 'Bàn phím Razer', 'Phụ kiện', 2000000, 50);INSERT INTO tblSanPham VALUES (4, 'Màn hình Samsung', 'Màn hình', 7000000, 30);INSERT INTO tblSanPham VALUES (5, 'Tai nghe Sony', 'Phụ kiện', 1000000, 70);GO
Chèn dữ liệu mẫu vào bảng tblKhachHang
INSERT INTO tblKhachHang VALUES (1, 'Nguyen Van A', 'Hanoi', '0909123456');INSERT INTO tblKhachHang VALUES (2, 'Tran Thi B', 'Hanoi', '0912345678');
INSERT INTO tblKhachHang VALUES (3, 'Le Van C', 'HCM', '0923456789');
INSERT INTO tblKhachHang VALUES (4, 'Pham Thi D', 'Danang', '0934567890');INSERT INTO tblKhachHang VALUES (5, 'Hoang Van E', 'Hue', '0945678901');
GO
Chèn dữ liệu mẫu vào bảng tblNhanVien
INSERT INTO tblNhanVien VALUES (1, 'Le Thi F', 'Manager', 15000000);
INSERT INTO tblNhanVien VALUES (2, 'Tran Van G', 'Sales', 10000000);
INSERT INTO tblNhanVien VALUES (3, 'Nguyen Thi H', 'Support', 8000000);
INSERT INTO tblNhanVien VALUES (4, 'Pham Van I', 'Technician', 9000000);
INSERT INTO tblNhanVien VALUES (5, 'Hoang Thi J', 'Accountant', 12000000);GO
Chèn dữ liệu mẫu vào bảng tblHoaDon
INSERT INTO tblHoaDon VALUES (1, 1, 1, '2023-01-01', 15500000);
INSERT INTO tblHoaDon VALUES (2, 2, 2, '2023-02-01', 5200000);
INSERT INTO tblHoaDon VALUES (3, 3, 3, '2023-03-01', 20700000);
INSERT INTO tblHoaDon VALUES (4, 4, 4, '2023-04-01', 7100000);
INSERT INTO tblHoaDon VALUES (5, 5, 5, '2023-05-01', 10500000);
Trang 29Chèn dữ liệu mẫu vào bảng tblCTHoaDon
INSERT INTO tblCTHoaDon VALUES (1, 1, 1, 15000000);
INSERT INTO tblCTHoaDon VALUES (2, 2, 10, 500000);
INSERT INTO tblCTHoaDon VALUES (3, 3, 1, 2000000);
INSERT INTO tblCTHoaDon VALUES (4, 4, 1, 7000000);
INSERT INTO tblCTHoaDon VALUES (5, 5, 10, 1000000);
GO
2 Tạo các view
View lấy thông tin tất cả các sản phẩm
CREATE VIEW vwAllSanPham AS
SELECT * FROM tblSanPham;
GO
View lấy thông tin tất cả các khách hàng
CREATE VIEW vwAllKhachHang AS
SELECT * FROM tblKhachHang;
GO
View lấy thông tin tất cả các nhân viên
CREATE VIEW vwAllNhanVien AS
SELECT * FROM tblNhanVien;
GO
View lấy thông tin tất cả các hóa đơn
CREATE VIEW vwAllHoaDon AS
SELECT * FROM tblHoaDon;
GO
View lấy thông tin chi tiết hóa đơn
CREATE VIEW vwChiTietHoaDon AS
SELECT hd.MaHoaDon, kh.HoTen AS KhachHang, nv.HoTen AS NhanVien, hd.NgayLap, hd.TongTien, sp.TenSanPham, cthd.SoLuong, cthd.DonGia
FROM tblHoaDon hd
JOIN tblKhachHang kh ON hd.MaKhachHang = kh.MaKhachHang
JOIN tblNhanVien nv ON hd.MaNhanVien = nv.MaNhanVien
Trang 30JOIN tblCTHoaDon cthd ON hd.MaHoaDon = cthd.MaHoaDon
JOIN tblSanPham sp ON cthd.MaSanPham = sp.MaSanPham;
GO
View lấy thông tin doanh thu theo khách hàng
CREATE VIEW vwDoanhThuTheoKhachHang AS
SELECT kh.HoTen, SUM(hd.TongTien) AS DoanhThu
FROM tblKhachHang kh
JOIN tblHoaDon hd ON kh.MaKhachHang = hd.MaKhachHang
GROUP BY kh.HoTen;
GO
View lấy thông tin doanh thu theo nhân viên
CREATE VIEW vwDoanhThuTheoNhanVien AS
SELECT nv.HoTen, SUM(hd.TongTien) AS DoanhThu
FROM tblNhanVien nv
JOIN tblHoaDon hd ON nv.MaNhanVien = hd.MaNhanVien
GROUP BY nv.HoTen;
GO
View lấy thông tin doanh thu theo tháng
CREATE VIEW vwDoanhThuTheoThang AS
SELECT MONTH(hd.NgayLap) AS Thang, SUM(hd.TongTien) AS DoanhThuFROM tblHoaDon hd
GROUP BY MONTH(hd.NgayLap);
GO
View lấy thông tin doanh thu theo năm
CREATE VIEW vwDoanhThuTheoNam AS
SELECT YEAR(hd.NgayLap) AS Nam, SUM(hd.TongTien) AS DoanhThu
FROM tblHoaDon hd
GROUP BY YEAR(hd.NgayLap);
GO
View lấy thông tin sản phẩm bán chạy nhất
CREATE VIEW vwSanPhamBanChay AS
SELECT TOP 1 sp.TenSanPham, SUM(cthd.SoLuong) AS TongSoLuongBanFROM tblSanPham sp
Trang 31JOIN tblCTHoaDon cthd ON sp.MaSanPham = cthd.MaSanPham
GROUP BY sp.TenSanPham
ORDER BY TongSoLuongBan DESC;
GO
View lấy thông tin sản phẩm tồn kho
CREATE VIEW vwSanPhamTonKho AS
SELECT * FROM tblSanPham WHERE SoLuong > 0;
GO
3 Tạo và thực thi các thủ tục
Stored Procedure để thêm sản phẩm mới
CREATE PROCEDURE spAddSanPham
INSERT INTO tblSanPham (MaSanPham, TenSanPham, LoaiSanPham, GiaBan, SoLuong)
VALUES (@MaSanPham, @TenSanPham, @LoaiSanPham, @GiaBan, @SoLuong);
END
GO
Stored Procedure để cập nhật thông tin sản phẩm
CREATE PROCEDURE spUpdateSanPham
Trang 32GO
Stored Procedure để xóa sản phẩm
CREATE PROCEDURE spDeleteSanPham
Stored Procedure để thêm khách hàng mới
CREATE PROCEDURE spAddKhachHang
Stored Procedure để cập nhật thông tin khách hàng
CREATE PROCEDURE spUpdateKhachHang
Trang 334 Tạo và vận dụng các trigger
Trigger kiểm tra số lượng sản phẩm trước khi thêm vào chi tiết hóa đơn
CREATE TRIGGER trgCheckSoLuongSanPham
ON tblCTHoaDon
INSTEAD OF INSERT
AS
BEGIN
DECLARE @MaSanPham INT, @SoLuong INT;
SELECT @MaSanPham = i.MaSanPham, @SoLuong = i.SoLuong FROM inserted i;
SET SoLuong = SoLuong - @SoLuong
WHERE MaSanPham = @MaSanPham;
INSERT INTO tblCTHoaDon (MaHoaDon, MaSanPham, SoLuong, DonGia)
SELECT MaHoaDon, MaSanPham, SoLuong, DonGia FROM inserted;
END
END
GO
Trigger tự động cập nhật tổng tiền hóa đơn khi thêm chi tiết hóa đơn
CREATE TRIGGER trgUpdateTongTienHoaDon
Trang 34Trigger ngăn việc xóa sản phẩm khi có chi tiết hóa đơn
CREATE TRIGGER trgPreventDeleteSanPham
ON tblSanPham
INSTEAD OF DELETE
AS
BEGIN
DECLARE @MaSanPham INT;
SELECT @MaSanPham = i.MaSanPham FROM deleted i;
IF EXISTS (SELECT 1 FROM tblCTHoaDon WHERE MaSanPham = @MaSanPham) BEGIN
RAISERROR('Không thể xóa sản phẩm đã có trong hóa đơn!', 16, 1);
Trigger ghi lại lịch sử khi cập nhật thông tin sản phẩm
CREATE TABLE tblSanPhamHistory (
Trang 35CREATE TRIGGER trgInsertSanPhamHistory
Trigger ngăn việc xóa khách hàng khi có hóa đơn
CREATE TRIGGER trgPreventDeleteKhachHang
ON tblKhachHang
INSTEAD OF DELETE
AS
BEGIN
DECLARE @MaKhachHang INT;
SELECT @MaKhachHang = i.MaKhachHang FROM deleted i;
IF EXISTS (SELECT 1 FROM tblHoaDon WHERE MaKhachHang = @MaKhachHang)
5 Phân quyền và bảo mật cho CSDL
Tạo login cho người dùng
IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = 'user1')
CREATE LOGIN user1 WITH PASSWORD = 'Password1!';
GO
Trang 36IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = 'user2')CREATE LOGIN user2 WITH PASSWORD = 'Password2!';
GO
Tạo người dùng trong cơ sở dữ liệu
CREATE USER user1 FOR LOGIN user1;
CREATE USER user2 FOR LOGIN user2;
GO
Phân quyền cho user1
GRANT SELECT, INSERT, UPDATE, DELETE ON tblSanPham TO user1;
GRANT SELECT, INSERT, UPDATE, DELETE ON tblKhachHang TO user1;GRANT SELECT, INSERT, UPDATE, DELETE ON tblNhanVien TO user1;GRANT SELECT, INSERT, UPDATE, DELETE ON tblHoaDon TO user1;
GRANT SELECT, INSERT, UPDATE, DELETE ON tblCTHoaDon TO user1;
GRANT SELECT ON vwAllSanPham TO user1;
GRANT SELECT ON vwAllKhachHang TO user1;
GRANT SELECT ON vwAllNhanVien TO user1;
GRANT SELECT ON vwAllHoaDon TO user1;
GRANT SELECT ON vwChiTietHoaDon TO user1;
GRANT EXECUTE ON spAddSanPham TO user1;
GRANT EXECUTE ON spUpdateSanPham TO user1;
GRANT EXECUTE ON spDeleteSanPham TO user1;
GRANT EXECUTE ON spAddKhachHang TO user1;
GRANT EXECUTE ON spUpdateKhachHang TO user1;
Phân quyền cho user2
GRANT SELECT ON tblSanPham TO user2;
GRANT SELECT ON tblKhachHang TO user2;
GRANT SELECT ON tblNhanVien TO user2;
GRANT SELECT ON tblHoaDon TO user2;
GRANT SELECT ON tblCTHoaDon TO user2;
GRANT SELECT ON vwAllSanPham TO user2;
GRANT SELECT ON vwAllKhachHang TO user2;
Trang 37GRANT SELECT ON vwAllNhanVien TO user2;
GRANT SELECT ON vwAllHoaDon TO user2;
GRANT SELECT ON vwChiTietHoaDon TO user2;
6 Phân tán dữ liệu
Tạo bảng phân tán ngang
SELECT * INTO tblSanPham_PhanTan1
FROM tblSanPham WHERE MaSanPham <= 3;
GO
SELECT * INTO tblSanPham_PhanTan2
FROM tblSanPham WHERE MaSanPham > 3;
Yêu cầu khai thác dữ liệu phân tán
Lấy thông tin từ bảng phân tán ngang
Trang 38SELECT * FROM tblSanPham_PhanTan1;
GO
SELECT * FROM tblSanPham_PhanTan2;
GO
Lấy thông tin từ bảng phân tán dọc
SELECT * FROM tblSanPham_PhanTanDoc_MaSanPhamTenSanPham;
GO
SELECT * FROM tblSanPham_PhanTanDoc_LoaiSanPhamGiaBan;
GO
Kiểm tra danh sách các bảng
SELECT * FROM QuanLyCuaHangBanLe.INFORMATION_SCHEMA.TABLES;
GO
Kiểm tra danh sách các view
SELECT * FROM QuanLyCuaHangBanLe.INFORMATION_SCHEMA.VIEWS;
GO
Kiểm tra danh sách các stored procedure
SELECT * FROM QuanLyCuaHangBanLe.INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE';
GO
Kiểm tra danh sách các function
SELECT * FROM QuanLyCuaHangBanLe.INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION';
GO
Kiểm tra lại dữ liệu bảng
Kiểm tra dữ liệu bảng tblSanPham
SELECT * FROM tblSanPham;
GO
Kiểm tra dữ liệu bảng tblKhachHang
SELECT * FROM tblKhachHang;
Trang 39Kiểm tra dữ liệu bảng tblNhanVien
SELECT * FROM tblNhanVien;
GO
Kiểm tra dữ liệu bảng tblHoaDon
SELECT * FROM tblHoaDon;
GO
Kiểm tra dữ liệu bảng tblCTHoaDon
SELECT * FROM tblCTHoaDon;
GO
Kiểm tra dữ liệu bảng phân tán
SELECT * FROM tblSanPham_PhanTan1;
Trang 40CHỦ ĐỀ 3:
1 Tạo CSDL và bảng, chèn dữ liệu
Kiểm tra và ngắt tất cả các kết nối tới cơ sở dữ liệu nếu đã tồn tại
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'QuanLyBenhVien')
Tạo cơ sở dữ liệu mới
CREATE DATABASE QuanLyBenhVien;
GO
Sử dụng cơ sở dữ liệu mới
USE QuanLyBenhVien;
GO
Kiểm tra và xóa các bảng nếu tồn tại
IF OBJECT_ID('dbo.tblPhieuDieuTri', 'U') IS NOT NULL
DROP TABLE dbo.tblPhieuDieuTri;
GO