PHÂN HIỆU TRƯỜNG ĐẠI HỌC THUỶ LỢI KHOA CÔNG NGHỆ THÔNG TIN BÀI BÁO CÁO MÔN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ĐỀ TÀI QUẢN LÝ BÁN RAU CỦ QUẢ ONLINE TP HỒ CHÍ MINH Giảng viên Th s VIÊN THANH NHÃ Sinh viên.
PHÂN HIỆU TRƯỜNG ĐẠI HỌC THUỶ LỢI KHOA CÔNG NGHỆ THÔNG TIN - BÀI BÁO CÁO MÔN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ĐỀ TÀI: QUẢN LÝ BÁN RAU CỦ QUẢ ONLINE TP HỒ CHÍ MINH Giảng viên: Th.s VIÊN THANH NHÃ Sinh viên thực hiện: Trần Đinh Diệu Mi Lớp: S22-61TH2 Mã số sinh viên: 1954025425 TP Hồ Chí Minh, ngày 31 tháng 10 năm 2021 Mục lục Lời mở đầu Chương Phân tích thiết kế hệ thống 1.1 Mơ tả tốn 1.2 Mô tả chức hệ thống 1.3 Mơ hình quan hệ ERD 1.4 Mô tả bảng 1.4.1 Bảng KhachHang 1.4.2 Bảng NhanVien 1.4.3 Bảng DonDatHang 1.4.4 Bảng NhaCungCap 1.4.5 Bảng TheLoai 1.4.6 Bảng SanPham 1.4.7 Bảng ThuongHieu 1.4.8 Bảng SanPhamThuongHieu 1.4.9 Bảng ChiTietDH 1.4.10 Bảng phanhoiKH Chương Cài đặt sở liệu 2.1 Tạo database 2.2 Tạo bảng 2.2.1 Tạo bảng KhachHang 2.2.2 Tạo bảng NhanVien 2.2.3 Tạo bảng DonDatHang 2.2.4 Tạo bảng NhaCungCap 2.2.5 Tạo bảng TheLoai 2.2.6 Tạo bảng SanPham 10 2.2.7 Tạo bảng ThuongHieu .10 2.2.8 Tạo bảng SanPhamThuongHieu 10 2.2.9 Tạo bảng ChiTietDH 11 2.2.10 Tạo bảng phanhoikh 11 2.3 Câu lệnh 12 2.3.1 INSERT .12 2.3.2 UPDATE .21 2.3.3 DELETE .23 2.4 Truy vấn 25 Chương Kết luận 47 Tài Liệu Tham Khảo 48 LỜI MỞ ĐẦU Trước phát triển ngày nhanh chóng lĩnh vực Cơng Nghệ Thơng Tin cụ thể lĩnh vực Mạng Truyền Thông phát triển mạnh mẽ kèm với phát triển mạnh mẽ dịch vụ, tiện ích để phục vụ đời sống, cơng việc, giải trí người cụ thể dịch vụ mua bán trực tuyến qua mạng hiệu người đặc biệt phù hợp với tình hình đại dịch COVID-19 diễn biến phức tạp Mặt khác, đáp ứng nhu cầu thiết yếu người Từ thực tế em có ý tưởng xây dựng chương trình web quản lý bán hàng trực tuyến nhằm đáp ứng yêu cầu đặt trên, quản lý số lượng hàng hố, đơn đặt hàng…một cách nhanh chóng xác tối ưu hệ thống Qua thời gian học tập rèn luyện em nắm vững kiến thức môn học “Hệ quản trị sở liệu” Vì thời gian kinh nghiệm cịn hạn chế nên có nhiều thiếu sót, em mong nhận góp ý thầy giúp em hồn thành tốt nữa! Em xin chân thành cảm ơn! Bài báo cáo gồm nội dung sau: Chương Phân tích thiết kế hệ thống Chương Cài đặt sở liệu Chương Kết luận Tài liệu tham khảo CHƯƠNG I: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 1.1 Mơ tả tốn Hiện nay, tình trạng rau củ tồn dư hóa chất, chất lượng trôi tràn lan thị trường Cửa hàng rau củ MIMI Vegetables TP Hồ Chí Minh bán loại rau củ quả, nhằm mang lại cho khách hàng mặt hàng nông sản đạt chất lượng, tươi sạch, đảm bảo vệ sinh nguồn gốc xuất xứ Để xây dựng sản phẩm trang website bán hàng mà đáp ứng nhu cầu mua sắm trực tuyến người dùng quản lý sản phẩm, quản lý đơn hàng, quản lý tài khoản khách hàng nhân viên… diễn cách thuận lợi, dễ dàng cần phải có sở liệu hồn chỉnh Khách hàng có nhu cầu mua sản phẩm truy cập vào website chọn sản phẩm cần mua đăng nhập để nhập thơng tin đặt hàng tốn, đơn hàng chuyển tới nhân viên 1.2 Mô tả chức hệ thống Hệ thống quản lý MIMI-Vegetables bao gồm chức sau: + Quản lý sản phẩm -Xem thông tin, nhà cung cấp thương hiệu sản phẩm -Cập nhật thông tin sản phẩm -Thêm sản phẩm -Xoá sản phẩm +Quản lý bán hàng: - Hiển thị danh sách đơn đặt hàng khách hàng - Quản lý đơn hàng: sau đặt hàng thành cơng khách hàng xem lại đơn hàng +Quản lý phản hồi: -Hiển thị phản hồi khách hàng +Quản lý tài khoản nhân viên 2|Page - Thêm: quản lý tạo cấp tài khoản cho nhân viên - Xố: có nhân viên khơng cịn làm viêc, quản lý xố tài khoản nhân viên - Sửa: nhân viên sửa thông tin tài khoản cá nhân +Phân quyền -Nhân viên: xem thông tin bảng TheLoai, NhaCungCap, ThuongHieu, SanPhamThuongHieu, KhachHang quyền xử lý bảng DonDatHang -Quản lý: phép thực thao tác thêm, xố, sửa tất bảng 3|Page 1.3 Mơ hình quan hệ ERD 1.4 Mơ tả bảng 1.4.1 Bảng KhachHang Tên trường Mô tả Kiểu liệu Độ dài MaKH Mã khách hàng nchar 10 HoTenKH Họ tên nhân viên nvarchar 100 NgaySinh Ngày sinh nhân viên date GioiTinh Giới tính nvarchar 20 SDT Số điện thoại nchar 50 Email Email nhân viên nchar 50 DiaChi Địa khách hàng nchar 255 NgayDangKy Ngày đăng ký datetime 4|Page 1.4.2 Bảng NhanVien Tên trường Mô tả Kiểu liệu Độ dài MaNV Mã khách hàng nchar 10 HoTenNV Họ tên nhân viên nvarchar 100 NgaySinh Ngày sinh nhân viên date GioiTinh Giới tính nvarchar 20 SDT Số điện thoại nchar 50 Email Email nhân viên nchar 50 MaNVQL Mã nhân viên quản lý nchar 10 1.4.3 Bảng DonDatHang Tên trường Mô tả Kiểu liệu Độ dài SoDH Mã số đơn hàng nvarchar NgayDH Ngày đặt hàng date TrangThaiDH Trạng thái đơn hàng nvarchar 10 100 NgayDuKienGiao Ngày dự kiến giao hàng datetime MaNV Số điện thoại nchar 50 MaKH Email nhân viên nchar 50 TongTien Địa khách hàng nchar 255 1.4.4 Bảng NhaCungCap Tên trường Mô tả Kiểu liệu Độ dài MaNCC Mã nhà cung cấp nchar 10 TenNCC Tên nhà cung cấp nvarchar 255 DiaChi Địa nhà cung cấp nchar 255 SDT Số điện thoại nchar 50 Email Email nhà cung cấp nchar 50 5|Page 1.4.5 Bảng TheLoai Tên trường Mô tả Kiểu liệu Độ dài MaLoai Mã loại rau nchar 10 TenLoai Tên loại rau nvarchar 100 1.4.6 Bảng SanPham Tên trường Mô tả Kiểu liệu Độ dài MaSP Mã sản phẩm nchar 10 TenSP Tên sản phẩm nvarchar 300 MaLoai Mã loại rau nchar 10 MaNCC Mã nhà cung cấp nchar 10 GiaBanSP Giá bán sản phẩm int KhuyenMai Khuyến float MoTa Mô tả sản phẩm nvarchar NgayTao Ngày tạo sản phẩm datetime NgayCapNhat Ngày cập nhật sản phẩm datetime SLTon Số lượng tồn max int 1.4.7 Bảng ThuongHieu Tên trường Mô tả Kiểu Độ dài liệu MaTH Mã thương hiệu nchar 10 TenTH Tên thương hiệu nvarchar 100 DiaChi Địa thương hiệu nchar 500 SDTTH Số điện thoại thương hiệu nchar 10 Email Email nhà cung cấp 100 nchar 6|Page 1.4.8 Bảng SanPhamThuongHieu Tên trường Mô tả Kiểu liệu Độ dài MaTH Mã thương hiệu nchar 10 MaSP Mã sản phẩm nchar 10 1.4.9 Bảng ChiTietDH Tên trường Mô tả Kiểu liệu Độ dài SoDH Số đơn hàng nvarchar 10 MaSP Mã sản phẩm nchar 10 GiaTien Giá tiền float GiamGia Giảm giá float SoLuong Số lượng int TongTien Tổng tiền int 1.4.10.Bảng phanhoiKH Tên trường Mô tả Kiểu liệu Độ dài ID ID phản hồi int MaKH Mã khách hàng nvarchar 10 TenTieuDe Tên tiêu đề phản hồi nvarchar 20 NoiDung Nội dung phản hồi nvarchar max NgayTao Ngày tạo phản hồi datetime NgayCapNhat Ngày cập nhật phản hồi datetime TrangThai Trạng thái phản hồi int 7|Page 2.4.6 Viết truy vấn sử dụng truy vấn Câu Cho biết sản phẩm có MaTL 'RA002' select sp.MaSP, sp.TenSP, sp.MaLoai from SanPham sp where sp.MaLoai IN (SELECT sp.MaLoai FROM SanPham sp WHERE sp.MaLoai = 'RA002') Câu Cho biết tổng số sản phẩm thể loại select sp.TenSP, truyvancon1.tong_so_san_pham from SanPham sp,(select tl.MaLoai, count(sp.MaSP) as tong_so_san_pham from TheLoai tl, SanPham sp where tl.MaLoai=sp.MaLoai group by tl.MaLoai) as truyvancon1 where sp.MaLoai=truyvancon1.MaLoai 34 | P a g e 2.4.7 Viết truy vấn sử dụng truy vấn phép toán trừ, hội, giao Câu Cho biết sản phẩm mà có thương hiệu select MaSP from SanPham intersect select MaSP from SanPhamThuongHieu 35 | P a g e Câu Cho biết sản phẩm chưa có thương hiệu select MaSP from SanPham except select MaSP from SanPhamThuongHieu 36 | P a g e .Câu Cho biết sản phẩm thuộc thể loại 'RA001' 'RA004' select MaSP, MaLoai from SanPham where MaLoai='RA001' union select MaSP, MaLoai from SanPham where MaLoai='RA004' 2.4.8 Viết truy vấn tạo view Câu Tạo view cho biết danh sách sản phẩm có mã nhà cung cấp 'NCC003' create view sanpham_nhacungcap_view as select * from SanPham where MaNCC = 'NCC003' select * from sanpham_nhacungcap_view select * from sanpham_nhacungcap_view 37 | P a g e .Câu Tạo view hiển thị sản phẩm cập nhật thông tin MaLoai, đặt tên cho view update_theloai_view create view update_theloai_view as select * from SanPham where MaLoai is not null select * from update_theloai_view 2.4.9 Viết thủ tục (stored procedure) Câu Tạo store procedures lấy danh sách sản phẩm mà giá bán tăng dần CREATE PROCEDURE danh_sach_sp_store AS BEGIN SELECT TenSP, GiaBanSP FROM SanPham ORDER BY GiaBanSP ASC; END 38 | P a g e EXEC danhsachsp_store Câu viết store procedures insert thể loại với mã thể loại tên thể loại đc đưa từ vào CREATE PROCEDURE addTheLoai(@matl nchar(10), @tentl nvarchar(100)) AS BEGIN INSERT INTO TheLoai(MaLoai, TenLoai) values(@matl, @tentl) END EXEC addTheLoai 'RA005', N'Rau Sạch organic' select*from TheLoai 39 | P a g e Câu Viết store procedures cập nhật giá bán sản phẩm thuộc Nhà cung cấp 'Thực Phẩm Tươi Rạng Đông' CREATE PROCEDURE cap_nhat_gia AS BEGIN UPDATE SanPham SET GiaBanSP+=10000 WHERE MaNCC='NCC004' END EXEC cap_nhat_giaban select * from SanPham Trước chạy Sau chạy 40 | P a g e .Câu viết thủ tục xố dịng thể loại, với tham số đầu vào matl create procedure del_theloai(@matl nchar(10)) as begin delete from TheLoai where matl=@matl; end Trước chạy Sau chạy del_theloai 'RA005' 2.4.10.Viết function Câu Viết function trả danh sách sản phẩm gồm masp, tensp, giabansp từ thể loại nhập từ bàn phím create function theloai_sanpham(@matl; nchar(20)) returns table as return select sp.MaSP, sp.TenSP, sp.GiaBanSP from SanPham sp where sp.MaLoai = @matl select * from theloai_sanpham('RA003') Câu Viết function trả danh sách liên hệ gồm khách hàng nhân viên create function list_lienhe() returns @lienhe table ( ma nchar(20), loailh nvarchar(20) ) 41 | P a g e as begin insert into @lienhe select manv, N'Nhân viên' from NhanVien insert into @lienhe select makh, N'Khách hàng' from KhachHang return; end select * from list_lienhe(); Câu Tính tổng tiền việc đặt hàng scalar-valued Functions create function TongTien ( @soluong int, @giatien float, @giamgia float ) returns float as begin return @soluong*@giatien-@giamgia end select dbo.TongTien(20,25000,5000) as TongTien Câu Viết function tính tổng tiền đơn hàng mà khách hàng trả, có sodh nhập từ bàn phím 42 | P a g e create procedure TongTienCuaTungDonHang ( @sodh nchar(10) )as begin select kh.MaKH, kh.HoTenKH, chitietbangtam.TongTienKhachTra from KhachHang kh, DonDatHang dh, (select sodh, sum(dbo.TongTien(soluong,giatien,giamgia)) as TongTienKhachTRa from ChiTietDH where SoDH=@sodh group by sodh) as chitietbangtam where chitietbangtam.SoDH=dh.SoDH and dh.MaKH= kh.MaKH end TongTienCuaTungDonHang 'DH002' 2.4.11 Viết cluster index none cluster index Tạo bảng khachhang_nonindex lấy liệu từ khachhang select * into khachhang_noindex from KhachHang Câu Tạo index cluster cho bảng khachhang_noindex create clustered index id_makh on khachhang_noindex(makh) Câu Đổi tên clustered index id_makh thành id_mkh EXEC sp_rename 'khachhang_noindex.id_makh', 'id_mkh', 'INDEX'; Câu Tạo nonclustered index cho cột hotenkh bảng khachhang create nonclustered index id_hotenkh_customer on khachhang(hotenkh) Câu Tạo unique nonclustered index cho email bảng nhanvien create unique nonclustered index unique_email_nhanvien on nhanvien(email) 2.4.12 Viết trigger Câu Kiểm tra dem>=3 thông báo không mua mặt hàng 43 | P a g e create trigger tri_SoCTDH on ChiTietDH for insert as if (select count(a.SoDH) from ChiTietDH a inner join inserted b on a.SoDH = b.SoDH) > Begin Print 'Số đơn hàng 3' RollBack Tran End Câu Tạo rang buộc giá bán sản phẩm phải số dương create trigger rangbuoc_giaban ON SanPham for Insert as alter table SanPham add constraint rangbuoc_giasach check(giasach>=0) Câu Khi thêm dịng bảng ChiTietDH phải trừ số lượng tồn sản phẩm create trigger tr_themctdh on ChiTietDH for insert as declare @C int select @C = count(*) from SanPham sp, inserted a where sp.MaSP=a.MaSP and sp.SLTon - a.SoLuong 0) begin print N'Không đủ sản phẩm để bán' rollback tran return end update SanPham set SLTon = SLTon - SoLuong from inserted where SanPham.MaSP = inserted.MaSP Câu Khi thay đổi cột số lượng bảng ChiTietDH cập nhật lại số lượng tồn bảng sản phẩm create trigger tr_suactdh on ChiTietDH for update as declare @C int select @C = count(*) from SanPham sp, deleted a, inserted c where sp.MaSP=a.MaSP and sp.MaSP=c.MaSP and sp.SLTon + a.SoLuong - c.SoLuong 0) begin print N'Không đủ sản phẩm để bán' rollback tran return end 44 | P a g e update SanPham set SLTon = sp.SLTon + a.SoLuong - c.SoLuong from SanPham sp, deleted a, inserted c where sp.MaSP = c.MaSP 2.4.12 Cursor Câu Sử dụng cursor backup liệu csdl declare @name nvarchar(100) declare @path nvarchar(256) declare @filename nvarchar(256) declare @datefile nvarchar(100) set @path='D:\backup\' select @datefile=CONVERT(nvarchar(20),getdate(),112) print @datefile declare cursordb cursor for select name from master.dbo.sysdatabases where name ='CuaHangRauCuQua' open cursordb fetch next from cursordb into @name set @filename=@path + @name+ '_'+@datefile+'.bak' backup database @name to disk = @filename close cursordb deallocate cursordb 45 | P a g e .Câu Sử dụng cursor để thực đọc liệu từ bảng khách hàng declare @makh nchar(20) declare @hotenkh nchar(255) declare @sdt nchar(20) declare cursorKhachHang cursor for select makh, hotenkh, sdt from KhachHang open cursorKhachHang fetch next from cursorKhachHang into @makh, @hotenkh, @sdt while @@FETCH_STATUS = begin print N'Mã KH:' + @makh print N'Tên KH:' + @hotenkh print N'SDTKH:' + @sdt fetch next from cursorKhachHang into @makh, @hotenkh, @sdt end close cursorKhachHang deallocate cursorKhachHang 2.4.13 Phục hồi liệu lưu restore database qlcuahang from disk = 'D:\backup\CuaHangRauCuQua' 2.4.14 Phân quyền tạo tài khoản create login sales with password ='000'; tạo người dùng create user tran_dinh_dieu_mi for login sales; cấp quyền grant select, insert on DonDatHang to tran_dinh_dieu_mi; grant select on SanPham to tran_dinh_dieu_mi; grant select on KhachHang to tran_dinh_dieu_mi; grant select on TheLoai to tran_dinh_dieu_mi; grant select on phanhoikh to tran_dinh_dieu_mi; grant select on ThuongHieu to tran_dinh_dieu_mi; grant select on SanPhamThuongHieu to tran_dinh_dieu_mi; grant select on NhaCungCap to tran_dinh_dieu_mi; 46 | P a g e CHƯƠNG KẾT LUẬN Qua thời gian học tập, nghiên cứu thực hiện, em hoàn thành tập lớn với đề “Quản lý bán rau củ online TP.Hồ Chí Minh” cịn nhiều thiếu sót, từ thiếu sót em tích lũy số kinh nghiệm Hiểu rõ cách tạo hệ quản trị sở liệu với nhiều tính chi tiết, xây dựng hồn chỉnh mơ hình quan hệ, câu truy vấn liệu SQL đặc biệt nắm vững kiến thức môn học Hệ Quản Trị Cơ Sở Dữ Liệu Em xin cảm ơn thầy Viên Thanh Nhã tận tình giảng dạy, truyền đạt cho em nhiều kiến thức Mặc dù cố gắng nỗ lực hoàn thiện tập lớn chắn không tránh khỏi sai sót, khuyết điểm Kính mong thầy dẫn để tập lớn em hoàn thiện Em xin chân thành cảm ơn! 47 | P a g e TÀI LIỆU THAM KHẢO Bài Giảng môn Hệ Quản Trị Cơ Sở Dữ Liệu 48 | P a g e ... với nhiều tính chi tiết, xây dựng hồn chỉnh mơ hình quan hệ, câu truy vấn liệu SQL đặc biệt nắm vững kiến thức môn học Hệ Quản Trị Cơ Sở Dữ Liệu Em xin cảm ơn thầy Viên Thanh Nhã tận tình giảng... dẫn để tập lớn em hoàn thiện Em xin chân thành cảm ơn! 47 | P a g e TÀI LIỆU THAM KHẢO Bài Giảng môn Hệ Quản Trị Cơ Sở Dữ Liệu 48 | P a g e ... kiến thức môn học ? ?Hệ quản trị sở liệu? ?? Vì thời gian kinh nghiệm cịn hạn chế nên có nhiều thiếu sót, em mong nhận góp ý thầy giúp em hồn thành tốt nữa! Em xin chân thành cảm ơn! Bài báo cáo gồm