MÔ TẢ BÀI TOÁN
NHU CẦU
Nhóm khởi nghiệp Cường Bình đã quyết định mở chuỗi nhà hàng sang trọng tại thành phố lớn nhằm mang đến trải nghiệm ẩm thực độc đáo và chất lượng cho khách hàng Họ đặt mục tiêu xây dựng một hệ thống quản lý nhà hàng hiệu quả để theo dõi, đánh giá và cải thiện hoạt động kinh doanh.
Chúng tôi quyết định áp dụng dữ liệu tập trung trong quản lý nhà hàng để kiểm soát toàn bộ quy trình kinh doanh, bao gồm đặt hàng, chế biến, thanh toán, quản lý kho hàng và lịch làm việc của nhân viên Việc này không chỉ nâng cao hiệu quả quản lý mà còn giúp phân tích và đưa ra quyết định chiến lược kinh doanh một cách dễ dàng hơn.
THỰC HIỆN
Để giải quyết thách thức trong quản lý nhà hàng, chúng tôi sẽ xác định các thực thể quan trọng và mối quan hệ giữa chúng Tiếp theo, chúng tôi sẽ xây dựng một mô hình dữ liệu thực thể-quan hệ (ERD) để minh họa sự tương tác giữa các thực thể này Mô hình này sẽ phản ánh các yêu cầu nghiệp vụ và mối quan hệ giữa các thực thể trong hệ thống quản lý nhà hàng.
MỤC TIÊU
Nhà hàng "Cường Bình" hứa hẹn mang đến cho thực khách trải nghiệm ẩm thực tuyệt vời với các món ăn độc đáo, dịch vụ chuyên nghiệp và không gian thoải mái.
Thực Đơn Đa Dạng: o "Cường Bình" tự hào về thực đơn phong phú, đa dạng với các món ăn ngon miệng từ nhiều loại ẩm thực khác nhau.
Không Gian Thân Thiện: o Nhà hàng có không gian thoải mái và ấm cúng, phù hợp cho cả bữa trưa gia đình và các buổi hẹn hò lãng mạn.
Dịch Vụ Chuyên Nghiệp: o Đội ngũ nhân viên được đào tạo chuyên nghiệp, nhiệt tình và luôn sẵn sàng phục vụ khách hàng.
Sự Sáng Tạo Trong Bếp: o Bếp của "Cường Bình" luôn nỗ lực đổi mới để mang lại những trải nghiệm ẩm thực mới lạ cho khách hàng.
Chất Lượng Nguyên Liệu: o Chúng tôi cam kết sử dụng nguyên liệu tươi ngon và chất lượng cao để đảm bảo hương vị tuyệt vời trong mỗi bữa ăn.
KHẢO SÁT BÀI TOÁN, THU THẬP THÔNG TIN
CÁC THÔNG TIN CẦN LƯU TRỮ
Họ và tên khách hàng
Họ và tên nhân viên
Sức chứa (số lượng khách tối đa)
Mã nhân viên thực hiện
Mã khách hàng (nếu có)
Mã nhân viên thực hiện
Mã nhân viên phục vụ
CÁC CHỨC NĂNG NGHIỆP VỤ CẦN XỬ LÝ
Cho phép khách hàng đặt bàn trực tuyến hoặc qua điện thoại
Nhân viên kiểm tra tình trạng bàn và cập nhật thông tin đặt bàn vào bảng DatBan b Chức năng lập đơn hàng
Nhận thông tin các món khách hàng gọi món
Ghi nhận vào bảng ChiTietHoaDon các món trong đơn hàng
Cập nhật tổng tiền vào bảng HoaDon c Chức năng in bill thanh toán
Kiểm tra thông tin hóa đơn và các món ăn
In ra hóa đơn cho khách hàng thanh toán d Chức năng lập phiếu nhập hàng
Lập phiếu nhập khi có hàng hóa được nhập vào kho
Cập nhật vào ChiTietPhieuNhap các thông tin mặt hàng e Chức năng xuất báo cáo doanh thu
Thống kê doanh thu theo ngày/tháng dựa trên bảng HoaDon
Xuất báo cáo ra file Excel hoặc PDF f Chức năng cập nhật tồn kho
Cập nhật số lượng tồn kho sau mỗi lần xuất nhập
Cảnh báo hàng sắp hết hạn sử dụng hoặc đạt ngưỡng tồn kho tối thiểu
CÁC QUY TRÌNH NGHIỆP VỤ CẦN XỬ LÝ
Dưới đây là các quy trình nghiệp vụ cần xử lý trong quản lý nhà hàng: a) Quản lý khách hàng:
Thêm khách hàng mới vào cơ sở dữ liệu.
Cập nhật thông tin khách hàng (số điện thoại, địa chỉ, email, ).
Xóa khách hàng khỏi cơ sở dữ liệu. b Quản lý nhân viên:
Thêm nhân viên mới vào cơ sở dữ liệu.
Cập nhật thông tin nhân viên (số điện thoại, địa chỉ, lương, ).
Xóa nhân viên khỏi cơ sở dữ liệu. c Quản lý thực đơn:
Thêm món ăn mới vào thực đơn.
Cập nhật thông tin món ăn (giá, loại món ăn, ).
Xóa món ăn khỏi thực đơn. d Quản lý bàn ăn:
Thêm bàn mới vào cơ sở dữ liệu.
Cập nhật thông tin bàn (tên bàn, số chỗ ngồi, ).
Xóa bàn khỏi cơ sở dữ liệu. e Quản lý đặt bàn:
Đặt bàn cho khách hàng.
Hủy đặt bàn cho khách hàng. f Quản lý hóa đơn:
Tạo hóa đơn cho khách hàng.
Cập nhật thông tin hóa đơn (ngày lập, tổng tiền, ).
Xóa hóa đơn khỏi cơ sở dữ liệu. g Quản lý chi tiết hóa đơn:
Thêm món ăn vào hóa đơn.
Cập nhật số lượng món ăn trong hóa đơn.
Xóa món ăn khỏi hóa đơn. h Quản lý phiếu nhập hàng:
Tạo phiếu nhập hàng từ nhà cung cấp.
Cập nhật thông tin phiếu nhập hàng (ngày nhập, tổng tiền, ).
Xóa phiếu nhập hàng khỏi cơ sở dữ liệu. i Quản lý chi tiết phiếu nhập hàng:
Thêm nguyên liệu vào phiếu nhập hàng.
Cập nhật số lượng nguyên liệu trong phiếu nhập hàng.
Xóa nguyên liệu khỏi phiếu nhập hàng. j Quản lý nhà cung cấp:
Thêm nhà cung cấp mới vào cơ sở dữ liệu.
Cập nhật thông tin nhà cung cấp (số điện thoại, địa chỉ, ).
Xóa nhà cung cấp khỏi cơ sở dữ liệu.
CÁC MẪU BÁO CÁO NGHIỆP VỤ, THỐNG KÊ
Sau khi nhập dữ liệu vào SQL, nhóm chúng em đã thực hiện chạy mã cho các mẫu báo cáo thống kê và nghiệp vụ, từ đó thu được kết quả cho mẫu báo cáo thống kê như sau:
BẢNG BÁO CÁO DOANH THU THÁNG CỦA NHÀ HÀNG
Trong báo cáo doanh thu nhà hàng từ ngày 12 đến 22 tháng 9 năm 2023, tổng doanh thu đạt được là 58.000.000 đồng.
BẢNG BÁO CÁO DOANH THU CỦA TỪNG KHÁCH HÀNG
Dựa trên thông tin đã cung cấp, dưới đây là danh sách khách hàng cùng với số hóa đơn và tổng số tiền họ đã chi tiêu Bảng bao gồm các cột thông tin chi tiết.
● SoHoaDon: Số hóa đơn mà khách hàng đã có
● TongTien: Tổng số tiền khách hàng đã chi tiêu
BẢNG BÁO CÁO SỐ LƯỢNG MÓN ĂN BÁN ĐƯỢC
Dựa vào thông tin được cung cấp, đây là bảng báo cáo số lượng món ăn đã bán được Các cột trong bảng là:
● TongSoLuongDaBan: Tổng số lượng món ăn đã bán
Dựa trên bảng thống kê, có 10 món ăn được liệt kê với số lượng bán ra từ 1 đến 6 Trong đó, "Gỏi cuốn" dẫn đầu với 6 món được bán, tiếp theo là "Bún chả" với 5 món Ngược lại, "Bò bít tết" có số lượng bán ra thấp nhất chỉ với 1 món.
BÁO CÁO SỐ LẦN PHỤC VỤ BÀN CỦA NHÂN VIÊN
Bảng này chứa thông tin về số lần sử dụng bàn của từng nhân viên phục vụ Cụ thể, bảng này có hai cột:
Cột "NhanVien" chứa tên của nhân viên phục vụ, được kết hợp từ họ đệm và tên của họ trong bảng "NhanVien".
Cột "SoLanSuDungBan" chứa số lần sử dụng bàn của nhân viên đó, được tính bằng cách đếm số lần xuất hiện của mã bàn trong bảng "BanPhucVu".
BÁO CÁO SỐ LƯỢNG MÓN ĂN BÁN TRONG MỖI HÓA ĐƠN
Bảng này chứa thông tin về số lượng món ăn trong mỗi hóa đơn Cụ thể, bảng này có hai cột:
Cột "MaHoaDon" chứa mã hóa đơn, đại diện cho mỗi hóa đơn trong danh sách.
Cột "SoLuongMonAn" chứa số lượng món ăn trong từng hóa đơn.
Bảng dữ liệu này trình bày số lượng món ăn trong từng hóa đơn Chẳng hạn, hóa đơn mã 301 có 1 món ăn, và các hàng tiếp theo cũng thể hiện số lượng món ăn tương ứng với từng hóa đơn.
BÁO CÁO ĐƠN GIÁ TRUNG BÌNH CỦA MỖI MÓN ĂN
Bảng này chứa thông tin về tên món ăn và giá trung bình của từng món.
Cụ thể, bảng này có hai cột:
Cột "TenMonAn" chứa tên của mỗi món ăn trong danh sách.
Cột "DonGiaTrungBinh" chứa giá trung bình của từng món ăn.
Bảng dữ liệu này trình bày tên các món ăn cùng với giá trung bình tương ứng Chẳng hạn, món "Bò bít tết" có giá trung bình là 150,000 đồng Các hàng tiếp theo cũng liệt kê tên món ăn và giá trung bình của từng món ăn tương ứng.
BÁO CÁO SỐ LƯỢNG HÓA ĐƠN THEO NHÂN VIÊN
Bảng này là báo cáo về số lượng hóa đơn theo từng nhân viên
Cụ thể, bảng này có hai cột:
Cột "NhanVien" chứa tên của từng nhân viên trong danh sách.
Cột "SoLuongHoaDon" chứa số lượng hóa đơn mà mỗi nhân viên đã có.
Bảng dữ liệu trình bày số lượng hóa đơn của từng nhân viên, với ví dụ cụ thể là nhân viên "Phạm Đức Cường" có 3 hóa đơn Các hàng tiếp theo tiếp tục liệt kê tên nhân viên cùng số lượng hóa đơn tương ứng Đáng lưu ý, một số nhân viên không có hóa đơn nào, thể hiện bằng số lượng hóa đơn là 0.
BÁO CÁO SỐ BÀN THEO SỨC CHỨA
Bảng này là báo cáo về số lượng bàn theo sức chứa của chúng Cụ thể, bảng này có hai cột:
Cột "SucChua" chứa sức chứa của từng bàn trong danh sách.
Cột "SoLuongBan" chứa số lượng bàn có sức chứa tương ứng.
Dữ liệu trong bảng này cho thấy số lượng bàn theo sức chứa của chúng.
Ví dụ, hàng đầu tiên cho thấy có 3 bàn có sức chứa là 2 Tương tự, các hàng tiếp theo cho thấy số lượng bàn và sức chứa tương ứng.
BÁO CÁO SỐ LƯỢNG NGUYÊN LIỆU CỦA TỪNG NHÀ CUNG CẤP TenNhaCungCap TenNguyenLieu SoLuongNhap
Bảng dữ liệu trên cung cấp thông tin chi tiết về các nhà cung cấp, nguyên liệu và số lượng nhập của từng nguyên liệu Các cột bao gồm "Tên Nhà Cung Cấp", "Tên Nguyên Liệu" và "Số Lượng Nhập", giúp người đọc dễ dàng nắm bắt thông tin liên quan đến nguồn cung ứng và khối lượng nguyên liệu được nhập.
"Tên Nhà Cung Cấp": Đây là cột chứa tên của nhà cung cấp Các nhà cung cấp được đánh dấu từ AA đến JJ.
Cột "Tên Nguyên Liệu" chứa danh sách các nguyên liệu mà nhà cung cấp đã nhập, bao gồm thịt bò, thịt gà, cá, tôm, bông cải xanh, cà rốt, hành tây, gừng, ớt và đường.
Cột "Số Lượng Nhập" ghi nhận số lượng nguyên liệu mà nhà cung cấp đã nhập, được đánh số theo đơn vị, ví dụ như 1 đơn vị.
DB ROLE VÀ USERS ỨNG VỚI DB ROLES
3 loại users sử dụng trong nhà hàng:
Mô tả Cơ Sở Dữ Liệu và Phân Quyền Truy Cập:
Nhóm chúng tôi đã thiết kế một cơ sở dữ liệu nhằm nâng cao tính bảo mật và tối ưu hóa quản lý người dùng Trong quá trình triển khai, chúng tôi áp dụng mô hình phân quyền dựa trên vai trò (DB roles) để kiểm soát quyền truy cập cho các thành viên trong tổ chức.
Nhân viên được phân loại theo vai trò, như nhân viên phục vụ và đầu bếp, nhằm cấp quyền truy cập vào các chức năng liên quan đến thực đơn và quản lý bàn.
QuanLiRole: Được gán cho nhóm quản lý ( Quản lý nhà hàng, Chủ đầu tư) để quản lý hóa đơn và các tác vụ quản lý khác.
KeToanRole: Được gán cho nhóm kế toán để quản lý các phiếu nhập và các tác vụ liên quan đến tài chính.
NhanVien: Người dùng được gán cho vai trò Nhân Viên, có quyền truy cập vào các chức năng cần thiết để thực hiện các nhiệm vụ hàng ngày.
QuanLi: Người dùng được gán cho vai trò Quản Lý, có quyền truy cập vào các chức năng quản lý, đảm bảo kiểm soát cao cấp.
KeToanr: Người dùng được gán cho vai trò Kế Toán, có quyền truy cập vào các chức năng liên quan đến quản lý tài chính và phiếu nhập.
Việc này cho phép chúng tôi quản lý và kiểm soát quyền truy cập của từng nhóm người dùng trong hệ thống cơ sở dữ liệu, đồng thời nâng cao tính linh hoạt và bảo mật cho hệ thống.
NhanVienRole: Được cấp quyền SELECT, INSERT, UPDATE, DELETE trên bảng Menu và các đối tượng liên quan.
QuanLiRole: Được cấp quyền SELECT, INSERT, UPDATE, DELETE trên bảng HoaDon và các chức năng quản lý khác.
KeToanRole: Được cấp quyền SELECT, INSERT, UPDATE, DELETE trên bảng PhieuNhap và các chức năng liên quan.
Việc này cho phép chúng tôi duy trì kiểm soát chặt chẽ và đồng nhất về quyền truy cập, từ đó giảm thiểu rủi ro bảo mật và bảo đảm tính toàn vẹn của dữ liệu.
THỰC THỂ
Menu - Thực đơn (các món ăn)
ChiTietHoaDon - Chi tiết các món trong hóa đơn
ChiTietPhieuNhap - Chi tiết phiếu nhập hàng
THUỘC TÍNH
Khách Hàng: Mã Khách Hàng, Họ Tên Đệm, Tên, Số Điện Thoại, Email.
Nhân Viên: Mã Nhân Viên, Họ Tên Đệm, Tên, Chức Vụ, Số điện thoại,
Menu: Mã Món Ăn, Tên Món Ăn, Mô Tả, Đơn Giá.
Hóa Đơn: Mã Hóa Đơn, Mã Nhân Viên, Mã Khách Hàng, Ngày Lập, Tổng
Chi Tiết Hóa Đơn: Mã Chi Tiết, Mã Hóa Đơn, Mã Món Ăn, Số Lượng, Đơn Giá, Thành Tiền.
Bàn: Mã Bàn, Tên Bàn, Sức Chứa.
Bàn phục vụ: Mã Bàn, Mã Nhân Viên.
Nguyên Liệu: Mã Nguyên Liệu, Tên Nguyên Liệu, Số Lượng Tồn Kho.
Nhà Cung Cấp: Mã Nhà Cung Cấp, Tên Nhà Cung Cấp, Người Liên Hệ,
Phiếu Nhập: Mã Phiếu Nhập, Ngày Nhập, Mã Nhà Cung Cấp, Mã Nhân
Chi Tiết Phiếu Nhập: Mã Phiếu Nhập, Mã Nguyên Liệu, Số Lượng, Đơn
MỐI QUAN HỆ
Ở đây có 2 mối quan hệ thường có phổ biến như sau:
Một Nhân viên có thể liên kết với nhiều Hóa đơn, nhưng mỗi Hóa đơn chỉ thuộc về một Nhân viên (1:N).
Một Khách hàng có thể liên kết với nhiều Hóa đơn, nhưng mỗi Hóa đơn chỉ thuộc về một Khách hàng (1:N).
Một Nhân viên có thể liên kết với nhiều Phiếu nhập, nhưng mỗi Phiếu nhập chỉ thuộc về một Nhân viên (1:N).
Một Nhà cung cấp có thể liên kết với nhiều Phiếu nhập, nhưng mỗi Phiếu nhập chỉ thuộc về một Nhà cung cấp (1:N).
Một Bàn có thể liên kết với nhiều Bàn phục vụ, nhưng mỗi Bàn phục vụ chỉ thuộc về một Bàn (1:N).
Một Món ăn có thể xuất hiện trong nhiều Chi tiết hóa đơn, và một Chi tiết hóa đơn có thể chứa nhiều Món ăn (N:M).
Một Nhân viên có thể phục vụ nhiều Bàn, và một Bàn có thể được phục vụ bởi nhiều Nhân viên (N:M).
Một Người liên hệ có thể liên kết với nhiều Nhà cung cấp, và một Nhà cung cấp có thể có nhiều Người liên hệ (N:M).
Một Nguyên liệu có thể xuất hiện trong nhiều Chi tiết phiếu nhập, và một Chi tiết phiếu nhập có thể chứa nhiều Nguyên liệu (N:M).
XÁC ĐỊNH KHOÁ CHÍNH
Dựa vào các thực thể và các thuộc tính được cung cấp, các khoá chính của các thực thể như sau:
Khách Hàng: Mã Khách Hàng
Nhân Viên: Mã Nhân Viên
Hóa Đơn: Mã Hóa Đơn
Chi Tiết Hóa Đơn: Mã Hóa Đơn,
Bàn phục vụ: Mã Bàn
Nguyên Liệu: Mã Nguyên Liệu
Nhà Cung Cấp: Mã Nhà Cung Cấp
Phiếu Nhập: Mã Phiếu Nhập
Chi Tiết Phiếu Nhập: Mã Phiếu Nhập
CÁC BẢNG DỮ LIỆU
BẢNG CHI TIẾT HÓA ĐƠN
BẢNG CHI TIẾT PHIẾU NHẬP
CHUYỂN HÓA SƠ ĐỒ ERD SANG RM
Khách Hàng: (Mã Khách Hàng, Họ Tên Đệm, Tên, Số Điện Thoại, Email)
Nhân Viên: (Mã Nhân Viên, Họ Tên Đệm, Tên, Chức Vụ, Số điện thoại,
Menu: (Mã Món Ăn, Tên Món Ăn, Mô Tả, Đơn Giá)
Hóa Đơn: (Mã Hóa Đơn, @Mã Nhân Viên, @Mã Khách Hàng, Ngày Lập,
Chi Tiết Hóa Đơn: ( @Mã Hóa Đơn, @Mã Món Ăn, Số Lượng, Đơn Giá,
Bàn: (@Mã Bàn, Tên Bàn, Sức Chứa)
Bàn phục vụ: (@Mã Bàn, @Mã Nhân Viên)
Nguyên Liệu: (@Mã Nguyên Liệu, Tên Nguyên Liệu, Số Lượng Tồn Kho)
Nhà Cung Cấp: (@Mã Nhà Cung Cấp, Tên Nhà Cung Cấp, Người Liên Hệ,
Phiếu Nhập: (@Mã Phiếu Nhập, Ngày Nhập, Mã Nhà Cung Cấp, Mã Nhân
Chi Tiết Phiếu Nhập: (@Mã Phiếu Nhập, @Mã Nguyên Liệu, Số Lượng, Đơn Giá)
CHUẨN HOÁ DỮ LIỆU SANG CHUẨN 3N
Các biểu đồ phụ thuộc
Điều kiện chuẩn hoá 1NF
Điều kiện chuẩn hoá 1NF
Mỗi giá trị không chứa các nhóm lặp.
Không có thuộc tính đa trị.
Các trường không thể chia nhỏ được nữa.
Các bảng nhóm tôi đã tạo đều đáp ứng đầy đủ các tiêu chí của chuẩn 1NF, bao gồm việc không có nhóm lặp, không có thuộc tính đa trị và không có trường nào có thể bị chia nhỏ.
3.Điều kiện chuẩn hoá 2NF
3.1 Điều kiện đạt chuẩn 2NF:
Các thuộc tính không khóa phải phụ thuộc hoàn toàn vào khóa chính.
Các bảng của nhóm tôi thỏa mãn điều kiện 2NF vì các thuộc tính không khóa đều phụ thuộc hoàn toàn vào khóa chính.
4.Điều kiện chuẩn hoá 3NF
4.1 Điều kiện đạt chuẩn 3NF:
Không còn phụ thuộc hàm bắc cầu.
Các bảng nhóm tôi đã tạo vẫn thỏa mãn điều kiện 3NF vì không có phụ thuộc hàm bắc cầu.
XÂY DỰNG CSDL TRÊN MYSQL
Tạo bảng trên các thực thể được xác định
CREATE TABLE KhachHang ( MaKhachHang INT PRIMARY KEY, HoTenDem NVARCHAR(50), Ten NVARCHAR(50),
MaNhanVien INT PRIMARY KEY, HoTenDem NVARCHAR(50), Ten NVARCHAR(50),
MaMonAn INT PRIMARY KEY, TenMonAn NVARCHAR(100), MoTa NVARCHAR(255),
MaBan INT PRIMARY KEY, TenBan NVARCHAR(50),
FOREIGN KEY (MaBan) REFERENCES Ban (MaBan),
FOREIGN KEY (MaNhanVien) REFERENCES NhanVien (MaNhanVien)
FOREIGN KEY (MaNhanVien) REFERENCES NhanVien (MaNhanVien),
FOREIGN KEY (MaKhachHang) REFERENCES KhachHang (MaKhachHang) );
FOREIGN KEY (MaNhaCungCap) REFERENCES NhaCungCap (MaNhaCungCap), FOREIGN KEY (MaNhanVien) REFERENCES NhanVien (MaNhanVien)
FOREIGN KEY (MaHoaDon) REFERENCES HoaDon (MaHoaDon),
FOREIGN KEY (MaMonAn) REFERENCES Menu (MaMonAn)
FOREIGN KEY (MaPhieuNhap) REFERENCES PhieuNhap (MaPhieuNhap), FOREIGN KEY (MaNguyenLieu) REFERENCES NguyenLieu (MaNguyenLieu));
XÂY DỰNG CÁC THAO TÁC NGHIỆP VỤ
1 TỔNG DOANH THU THEO THÁNG
SELECT YEAR(NgayLap) AS Nam, MONTH(NgayLap) AS Thang, SUM(TongTien) AS DoanhThu
GROUP BY YEAR(NgayLap), MONTH(NgayLap)
The stored procedure TongDoanhThuTheoThang in SQL Server is designed to query data from the HoaDon table and generate a report of total revenue by month and year Its operation involves several key steps to efficiently retrieve and present the desired financial information.
The stored procedure begins by utilizing the SELECT statement to query data from the HoaDon table It then employs the YEAR and MONTH functions to extract information regarding the year and month from the NgayLap column.
- Tiếp theo, stored procedure tính tổng doanh thu của mỗi tháng bằng cách sử dụng hàm SUM trên cột TongTien.
Stored procedure nhóm kết quả theo năm và tháng bằng cách sử dụng câu lệnh GROUP BY, đồng thời sắp xếp kết quả theo thứ tự tăng dần của năm và tháng thông qua câu lệnh ORDER BY.
Stored procedure TongDoanhThuTheoThang cung cấp một bảng báo cáo chi tiết với các cột bao gồm năm, tháng và tổng doanh thu hàng tháng Bảng báo cáo này được sắp xếp theo thứ tự tăng dần của năm và tháng, giúp người dùng dễ dàng theo dõi và phân tích doanh thu của cửa hàng theo từng tháng và năm.
2 BÁO CÁO SỐ LƯỢNG HÓA ĐƠN VÀ DOANH THU CỦA TỪNG KHÁCH HÀNG
Stored procedure BaoCaoSoLuongHoaDonVaDoanhThuCuaTungKhachHang trong SQL Server được thiết kế để truy vấn dữ liệu từ bảng KhachHang và HoaDon Nó trả về một bảng báo cáo với thông tin về số lượng hóa đơn và tổng doanh thu của từng khách hàng Quy trình hoạt động của stored procedure này bao gồm nhiều bước để đảm bảo tính chính xác và hiệu quả trong việc thu thập dữ liệu.
First, the stored procedure utilizes the SELECT statement to query data from the Customer table It then employs a LEFT JOIN to combine information from the Invoice table with the Customer table based on the CustomerID field.
- Tiếp theo, sử dụng hàm COUNT để đếm số lượng hóa đơn của mỗi khách hàng và hàm SUM để tính tổng doanh thu của mỗi khách hàng.
- Sau đó, stored procedure nhóm kết quả theo mã khách hàng, họ tên đệm và tên khách hàng bằng cách sử dụng câu lệnh GROUP BY.
Kết quả cuối cùng được sắp xếp theo thứ tự giảm dần của tổng doanh thu từng khách hàng thông qua câu lệnh ORDER BY Khi stored procedure được gọi, nó sẽ trả về bảng báo cáo với các cột bao gồm mã khách hàng, tên khách hàng, số lượng hóa đơn và tổng doanh thu Bảng báo cáo này hỗ trợ người dùng trong việc theo dõi và phân tích doanh thu của từng khách hàng, với khách hàng có tổng doanh thu cao nhất được hiển thị ở vị trí đầu tiên.
3 BÁO CÁO SỐ LƯỢNG MÓN ĂN BÁN ĐƯỢC TRONG MỖI HÓA ĐƠN
COUNT(CHD.MaMonAn) AS SoLuongMonAn
INNER JOIN ChiTietHoaDon CHD ON H.MaHoaDon = CHD.MaHoaDon
SELECT * FROM dbo.GetMonAnCountByHoaDon(); Đầu tiên, function sử dụng câu lệnh SELECT để truy vấn dữ liệu từ bảng
HoaDon Sau đó, sử dụng câu lệnh INNER JOIN để kết hợp dữ liệu từ bảng
ChiTietHoaDon với bảng HoaDon dựa trên trường MaHoaDon.
- Tiếp theo, sử dụng hàm COUNT để đếm số lượng món ăn trong mỗi hóa đơn.
- Sau đó, function nhóm kết quả theo mã hóa đơn bằng cách sử dụng câu lệnh GROUP BY.
Khi được gọi, hàm sẽ trả về một bảng kết quả với các cột bao gồm mã hóa đơn và số lượng món ăn trong mỗi hóa đơn Bảng này cung cấp thông tin chi tiết
4 BÁO CÁO SỐ LƯỢNG HÓA ĐƠN THEO NHÂN VIÊN
NV.HoTenDem + ' ' + NV.Ten AS NhanVien,
LEFT JOIN HoaDon H ON NV.MaNhanVien = H.MaNhanVien
The function retrieves data from the NhanVien table using a SELECT statement It then combines this data with additional information through a LEFT JOIN operation.
HoaDon với bảng NhanVien dựa trên trường MaNhanVien.
- Tiếp theo, sử dụng hàm COUNT để đếm số lượng hóa đơn của mỗi nhân viên.
- Sau đó, function nhóm kết quả theo tên đệm và tên của nhân viên bằng cách sử dụng câu lệnh GROUP BY.
Khi hàm được gọi, nó sẽ trả về bảng kết quả gồm tên đệm, tên nhân viên và số lượng hóa đơn mà từng nhân viên đã xử lý Bảng kết quả này cung cấp thông tin chi tiết về hiệu suất công việc của từng nhân viên, giúp người dùng dễ dàng theo dõi và phân tích số lượng hóa đơn.
5 BẢNG BÁO CÁO CHI TIẾT HÓA ĐƠN
SET TongTien = (SELECT SUM(ThanhTien) FROM dbo.ChiTietHoaDon WHERE MaHoaDon = inserted.MaHoaDon) FROM HoaDon
INNER JOIN inserted ON HoaDon.MaHoaDon = inserted.MaHoaDon;
INSERT INTO ChiTietHoaDon (MaHoaDon, MaMonAn, SoLuong, ThanhTien, DonGia)
SUM(CHD.SoLuong) AS TongSoLuong
ChiTietHoaDon AS CHD ON M.MaMonAn = CHD.MaMonAn JOINN
HoaDon AS HD ON CHD.MaHoaDon = HD.MaHoaDon
MONTH(HD.NgayLap) = MONTH(GETDATE()) AND
YEAR(HD.NgayLap) = YEAR(GETDATE())