Tại đây, nhân viên quản lý ghi chép các thông tin từ khách hàng bao gồm tên, địa chỉ, số điện thoại, tên chú rể, tên cô dâu, ngày tổ chức, ca tổ chức, số lượng bàn.. Kết thúc tiệc, nhân
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC XÃ HỘI VÀ NHÂN VĂN
KHOA: THƯ VIỆN – THÔNG TIN HỌC
******************
BÁO CÁO ĐỒ ÁN
Môn học: Cơ sở dữ liệu 2
Đề tài: Quản lý đặt tiệc cưới của nhà hàng
Trang 2MỤC LỤC
I Tổng quan đề tài 5
1 Sự cần thiết của dự án 5
2 Hiện trạng của đối tượng cần quản lý _5
3 Các chức năng chính yếu của đề tài _6
II Bảng phân công nhiệm vụ _7 III Tài liệu thiết kế 8
1 Tư duy thiết kế 8
2 Phân tích yêu cầu người dùng 8
a, Thông tin về Metadata 14
b, Thông tin về khóa chính 17
c, Thông tin về khóa ngoại 17
IV Cài đặt cơ sở dữ liệu 18
1 Cài đặt CSDL: _18
2 Query thể hiện chức năng của CSDL: 20
3 Trigger kiểm soát dữ liệu 25
V Kết luận và hướng phát triển _26
Trang 3Danh sách hình vẽ
Danh sách kí hiệu – viêt tắt
Trang 4RD ERDE-RCSDLSQL
Trang 5I Tổng quan đề tài
1 Sự cần thiết của dự án
Kể từ sau đại dịch Covid – 19, các hoạt động tổ chức tiệc cưới ở Việt Nam diễn ra
vô cùng sôi nổi Đây đang được xem là ngành dịch vụ đầy tiềm năng, cũng từ đó nhiều nhà hàng tiệc cưới kết hợp với đa dạng dịch vụ được mở ra đáp ứng xu hướng thị trường
Tuy nhiên, hiện nay vẫn còn tồn tại một số nhà hàng hoạt động theo phong cách truyền thống hay các nhà hàng mới thành lập đang còn tập trung vào việc hoàn thiện
cơ sở vật chất, xây dựng thương hiệu, do đó việc đầu tư vào hệ thống quản lý đặt tiệc chưa được ưu tiên Họ có Website riêng nhưng chỉ để quảng bá thương hiệu là chính,
vì số lượng khách hàng chưa nhiều nên còn đang sử dụng phương pháp thủ công giai đoạn đầu
Điểm chung của hai kiểu nhà hàng này là hầu hết các thông tin tiệc cưới đều được quản lý thủ công bằng sổ tay, ghi chép đơn giản, lưu trữ dưới dạng giấy tờ, văn bản Điều này dẫn đến việc dễ xảy ra sai sót và nhầm lẫn trong quá trình xử lý thông tin, làm tốn nhiều thời gian của khách hàng trong việc lựa chọn nhà hàng phù hợp với nhucầu
Từ những hạn chế trên, cần xây dựng hệ thống quản lý đặt tiệc thay thế cho việc quản lý thủ công nhằm xử lý hiệu quả nghiệp vụ, nâng cao trải nghiệm khách hàng, tăng cường khả năng cạnh tranh trên thị trường
2 Hiện trạng của đối tượng cần quản lý
tiệc phải đến trực tiếp nhà hàng để đặt Tại đây, nhân viên quản lý ghi chép các thông tin từ khách hàng bao gồm tên, địa chỉ, số điện thoại, tên chú rể, tên cô dâu, ngày tổ chức, ca tổ chức, số lượng bàn Sau đó, nhân viên kiểm tra trong
sổ xem vào ngày và ca tổ chức khách hàng yêu cầu đã được đặt trước đó chưa, nếu đã được khách hàng khác đặt trước đó rồi thì nhân viên yêu cầu khách hàng đổi sang ngày hoặc ca khác, nếu khách hàng không đồng ý thì bị hủy Nếu sảnh đang còn trống thì nhân viên sẽ đưa danh sách các món ăn, đồ uống, dịch vụ cho khách hàng lựa chọn Sau khi hoàn tất, nhân viên tính tổng tiền bànđặt và khách hàng phải cọc 50% của tổng tiền bàn đặt đó
Kết thúc tiệc, nhân viên tính tiền còn lại khách phải trả và ghi hóa đơn thanh toán thành hai bản, khách hàng phải thanh toán toàn bộ số tiền còn lại cho nhà hàng
Trang 6o Nhà hàng A muốn ứng dụng CNTT để thay thế tất cả các việc trên, nhân viên chỉ cần thao tác đơn giản trên máy tính có thể nhanh chóng nhập thông tin khách hàng, kiểm tra trạng thái sảnh, tính toán hóa đơn tự động.
3 Các chức năng chính yếu của đề tài
chỉ nhận đặt tiệc khi loại sảnh có ngày và ca tổ chức đang còn trống
khách hàng
II Bảng phân công nhiệm vụ
Thành viên nhóm thiết kế
100%
Trang 7Thành viên nhóm phát triển
Thành viên nhóm thiết kếThành viên nhóm phát triển
100%
o Nhóm trưởng : Vai trò điều phối và đốc thúc các thành viên
o Biên tập viên: Tổng hợp nội dung, trình bày đồ án, in ấn …
o Thành viên nhóm thiết kế: Xây dựng ý tưởng, thiết kế các mô hình
o Thành viên nhóm phát triển: Xây dựng CSDL trên SQL, viết các query thể
hiện các chức năng
o Phát ngôn viên: Người trình bày và soạn trình chiếu.
1 Tư duy thiết kế
Trang 8Hình 1 Mô hình phân cấp chức năng
2 Phân tích yêu cầu người dùng
Đối tượng sử dụng: Nhân viên trực và nhận đơn đặt tiệc
Yêu cầu
món ăn, đồ uống, dịch vụ, hóa đơn
một khách hàng
một khách hàng
Trang 9Ràng buộc:
việc
o Sảnh đặt phải hợp lệ, nếu trước đó đã có khách đặt loại sảnh vào ngày và ca tổ chức thì sẽ không nhận đặt nữa
bị tính tiền phạt, tiền phạt/ngày bằng 1% tổng giá bàn
3 Mô hình E-R
a, Bảng xác định các thực thể
b, Bảng xác định thuộc tính cho các thực thể
Tên sảnhLoại sảnh
Số lượng bàn tối thiểu
Số lượng bàn tối đa
Tên khách hàng
Số điện thoạiEmailĐịa chỉ
Trang 10Đặt tiệc Mã đặt tiệc
Mã khách hàng
Mã sảnhTên chú rểTên cô dâuNgày đặt tiệcNgày tổ chức
Ca tổ chức
Số lượng bàn đặtGiá bànTiền cọc
Tên món ănĐơn giá
Mã món ăn
Tên đồ uốngĐơn giá
Mã đồ uống
Số lượng
Tên dịch vụĐơn giá
Mã dịch vụ
Số lượng
Mã đặt tiệcNgày thanh toánHình thức thanh toánTổng tiền
Số ngày trễTiền phạtTiền còn lại
Trang 11c, Xác định các quan hệ: ( vẽ ERD)
Hình 3 Mô hình quan hệ ERD
4 Mô hình dữ liệu quan hệ
a, Bảng THONGTINSANH
c, Bảng DATTIEC
Trang 12d, Bảng MONAN
e, Bảng CT_BANAN
tính
Foreign keyDATTIEC(MaDatTiec)
Foreign keyMONAN(MaMonAn)
f, Bảng DOUONG
Trang 13g, Bảng CT_DOUONG
tính
Foreign keyDATTIEC(MaDatTiec)
vụ
i, Bảng CT_DICHVU
Foreign keyDATTIEC(MaDatTiec)
Foreign keyDICHVU(MaDV)
dịch vụ
j, Bảng HOADON
đơn
Primary key
tiệc DATTIEC(MaDatTiec)Foreign key
thanhtoán
n
thứcthanh
Trang 14MaDatTiec MaKH MaSanh TenChuRe
NgayDatTiec NgayToChuc CaToChuc SLBanDat GiaBan TienCoc
HOADON
MaHoaDon MaDatTiec NgayThanhToan HinhThucThanhToan TongTien SoNgayTre TienPhat TienConLai
KHACHHANG
MaKH TenKH SDT Email DChi
Hình 2 Lược đồ quan hệ RD
5 Mô hình mức vật lý
a, Thông tin về Metadata
tính
trị mặc NOT NULL
Trang 15SANH
Trang 16SLBanDat Int True
CT_DOUON
G
CT_DICHV
U
Trang 17b, Thông tin về khóa chính
MaMonAn
MaDoUong
MaDV
c, Thông tin về khóa ngoại
khóa
Thuộctính
Bảng đượctham chiếu
KhóachínhFk_DATTIEC_KHACHHA
Trang 18Fk_CT_BANAN_MONAN CT_BANA
N
MaMonAn
AnFk_CT_DICHVU_DATTIE
Fk_CT_DICHVU_DICHV
U
CT_DICHVU
MaDoUong
SLBanToiThieu int,
SLBanToiDa int )
(
MaKH nvarchar( 10 ) primary key,
TenKH nvarchar( 40 ),
SDT nvarchar( ), 20 Email nvarchar( 40 ),
DChi nvarchar( 50 ) )
(
MaDatTiec nvarchar( 10 ) primary key,
MaKH nvarchar( 10 ) foreign key references
KHACHHANG ( MaKH ),
MaSanh nvarchar ( 10 ) foreign key references
THONGTINSANH MaSanh ( ),
TenChuRe nvarchar( ), 40 TenCoDau nvarchar( 40 ),
NgayDatTiec date,
NgayToChuc date,
CaToChuc nvarchar( ), 10 SLBanDat int,
GiaBan money,
Trang 19MONAN create table MONAN
(
MaMonAn nvarchar( 10 ) primary key,
TenMonAn nvarchar( ), 40 DonGia money )
(
MaDV nvarchar( 10 ) primary key,
TenDV nvarchar( 40 ),
DonGia money )
Trang 20MaDatTiec nvarchar( 10 ) foreign key references
2 Query thể hiện chức năng của CSDL:
declare @TongGia money
select @TongGia = sum ( DonGia SLDichVu * )
from CT_DICHVU DICHVU ,
where CT_DICHVU MaDV DICHVU = MaDV
and MaDatTiec @MaDatTiec =
return @TongGia
end
Hàm tính tổng giá đồ uống của một mã đặt tiệc
CREATE FUNCTION dbo TONG_GIA_DO_UONG ( @MaDatTiec nvarchar ( )) 10
returns money
as
begin
declare @TongGia money
select @TongGia = sum ( DonGia SLDoUong * )
from DOUONG CT_DOUONG DATTIEC , ,
where CT_DOUONG MaDatTiec DATTIEC = MaDatTiec
and DOUONG MaDoUong CT_DOUONG = MaDoUong
and DATTIEC MaDatTiec = @MaDatTiec
return @TongGia
end
Hàm tính tổng giá một bàn ăn( chỉ gồm tiền món ăn)
CREATE FUNCTION dbo TONG_GIA_1_BAN ( @MaDatTiec nvarchar ( )) 10
Trang 21FROM CT_BANAN MONAN ,
WHERE CT_BANAN MaMonAn MONAN = MaMonAn
AND MaDatTiec @MaDatTiec =
RETURN @TongGia
END
Hàm tính tổng tiền của một hóa đơn
CREATE function dbo TONG_HOA_DON ( @MaDatTiec nvarchar ( )) 10
returns money
as
begin
declare @TongGia money
declare @Gia1Ban money
declare @TongGiaBan money
declare @GiaDichVu money
declare @GiaDoUong money
select @Gia1Ban = dbo TONG_GIA_1_BAN @MaDatTiec ( )
set @TongGiaBan = @Gia1Ban * ( select SLBanDat from DATTIEC where MaDatTiec @MaDatTiec = ) select @GiaDichVu dbo = TONG_GIA_DICH_VU @MaDatTiec ( )
select @GiaDoUong = dbo TONG_GIA_DO_UONG ( @MaDatTiec )
from THONGTINSANH DATTIEC ,
WHERE THONGTINSANH MaSanh = DATTIEC MaSanh
and MaDatTiec @MaDatTiec =
set @TongGia = @TongGiaBan @GiaDichVu + + @GiaDoUong
return @TongGia
end
Stored procedure
Lưu thông tin khách hàng
CREATE PROC SP_LuuThongTinKhachHang
INSERT INTO KHACHHANG ( MaKH , TenKH SDT Email DChi , , , )
VALUES ( @MaKH , @TenKH @SDT @Email @DChi , , , )
END
Lưu thông tin đặt tiệc
Trang 22DECLARE @NgayDatTiecDate date
DECLARE @NgayToChucDate date
SET @NgayDatTiecDate = CONVERT ( date , @NgayDatTiec 103 , ) Chuyển đổi từ varchar sang date (dd/mm/yyyy)
SET @NgayToChucDate = CONVERT (date, @NgayToChuc 103 , ) Chuyển đổi từ varchar sang date (dd/mm/yyyy)
INSERT INTO DATTIEC ( MaDatTiec , MaKH MaSanh TenChuRe TenCoDau NgayDatTiec NgayToChuc , , , , , ,
CaToChuc , SLBanDat GiaBan TienCoc , , )
VALUES ( @MaDatTiec , @MaKH @MaSanh @TenChuRe @TenCoDau @NgayDatTiecDate , , , , ,
@NgayToChucDate , @CaToChuc @SLBanDat 0 0 , , , )
INSERT INTO CT_BANAN ( MaDatTiec , MaMonAn )
SELECT @MaDatTiec MaMonAn ,
INSERT INTO CT_BANAN ( MaDatTiec , MaMonAn )
VALUES ( @MaDatTiec , @MaMonAn )
Trang 23INSERT INTO CT_DICHVU ( MaDatTiec , MaDV SLDichVu , )
SELECT @MaDatTiec MaDV SLDichVu , ,
INSERT INTO CT_DOUONG ( MaDatTiec , MaDoUong SLDoUong , )
SELECT @MaDatTiec MaDoUong SLDoUong , ,
Tìm đơn hàng qua số điện thoại
CREATE PROCEDURE SP_Timdonhang_BySDT
@SDT NVARCHAR( 20 )
AS
BEGIN
SELECT *
FROM KHACHHANG DATTIEC ,
WHERE DATTIEC MaKH = KHACHHANG MaKH
AND SDT LIKE '%' @SDT + + '%'
END
Cập nhật giá bàn vào mã đặt tiệc
create procedure SP_update_giaban
@MaDatTiec nvarchar( 10 )
Trang 24declare @GiaBan money
SELECT @GiaBan = dbo TONG_GIA_1_BAN @MaDatTiec ( )
update DATTIEC
set GiaBan = @GiaBan
where MaDatTiec = @MaDatTiec
declare @TongGiaBan money
declare @Gia1Ban money
select @Gia1Ban = dbo TONG_GIA_1_BAN @MaDatTiec ( )
set @TongGiaBan = @Gia1Ban * ( select SLBanDat from DATTIEC where MaDatTiec @MaDatTiec = )
update DATTIEC
set TienCoc = 0.5 @TongGiaBan *
where MaDatTiec = @MaDatTiec
end
THÊM HÓA ĐƠN
create proc SP_Themhoadon
declare @TongTien money
declare @TienCoc money
declare @TienPhat money
declare @TienConLai money
declare @SoNgayTre int
declare @NgayToChuc date
declare @NgayThanhToanDate date
set @NgayThanhToanDate = CONVERT ( date , @NgayThanhToan 103 , )
select @NgayToChuc NgayToChuc @TienCoc TienCoc = , =
from DATTIEC
where MaDatTiec = @MaDatTiec
set @TienPhat = null
set @SoNgayTre = DATEDIFF day ( , @NgayToChuc @NgayThanhToanDate , )
select @TongTien = dbo TONG_HOA_DON ( @MaDatTiec )
if( @SoNgayTre > 0 )
begin
set @TienPhat @TongTien @SoNgayTre = * * 0.01
set @TienConLai @TongTien @TienCoc = - + @TienPhat
end
else
begin
Trang 25insert into HOADON
values ( @MaHoaDon , @MaDatTiec @NgayThanhToanDate @HinhThucThanhToan , , ,
@TongTien , @SoNgayTre @TienPhat @TienConLai , , )
end
3 Trigger kiểm soát dữ liệu
Trigger
Chỉ nhận đặt tiệc khi sảnh chưa có người đặt
CREATE TRIGGER TG_KiemTraSanh
ON DATTIEC
FOR INSERT , UPDATE
AS
BEGIN
DECLARE @count int
SELECT @count = COUNT (*) FROM DATTIEC
WHERE MaSanh IN ( SELECT MaSanh FROM inserted )
AND NgayToChuc IN ( SELECT NgayToChuc FROM inserted )
AND CaToChuc IN (SELECT CaToChuc FROM inserted )
AND MaDatTiec NOT IN (SELECT MaDatTiec FROM inserted )
IF @count 0 >
BEGIN
PRINT N'Sảnh đã có người đặt'
ROLLBACK TRAN END
END
Ngày đặt tiệc phải trước ngày tổ chức ít nhất 10 ngày
CREATE TRIGGER TG_NgayDatTiec
ON DATTIEC
FOR INSERT , UPDATE
AS
BEGIN
DECLARE @NgayDatTiec DATE
DECLARE @NgayToChuc DATE
SELECT @NgayDatTiec NgayDatTiec @NgayToChuc NgayToChuc = , =
FROM inserted
IF DATEDIFF day ( , @NgayDatTiec @NgayToChuc , ) < 10 AND DATEDIFF day ( , @NgayDatTiec ,
@NgayToChuc ) >= 0 ngày không hợp lệ
BEGIN
PRINT N'Ngày đặt tiệc phải trước ngày tổ chức tiệc cưới ít nhất 10 ngày'
ROLLBACK TRAN
Trang 26PRINT N'Ngày tổ chức phải sau ngày đặt tiệc'
ROLLBACK TRAN END
declare @SLBan int
declare @SLBanToiDa int
declare @SLBanToiThieu int
select @SLBan SLBanDat = from inserted
select @SLBanToiDa = SLBanToiDa , @SLBanToiThieu = SLBanToiThieu
from THONGTINSANH inserted ,
where THONGTINSANH MaSanh inserted = MaSanh
if( @SLBan > @SLBanToiDa @SLBan or < @SLBanToiThieu )
Ngày thanh toán phải diễn ra trong hoặc sau ngày tổ chức tiệc cưới
create TRIGGER TG_NgayThanhToanHopLe
ON HOADON
FOR INSERT , UPDATE
AS
BEGIN
DECLARE @NgayThanhToan DATE
DECLARE @NgayToChuc DATE
SELECT @NgayToChuc = NgayToChuc
FROM inserted DATTIEC ,
WHERE inserted MaDatTiec DATTIEC = MaDatTiec
SELECT @NgayThanhToan NgayThanhToan =
END
V Kết luận và hướng phát triển
Vì giới hạn về mặt thời gian và khả năng còn hạn chế nên trên đây chỉ là một CSDL quản lý đơn giản phục vụ cho các thao tác nghiệp vụ cần thiết trong quản lý
Trang 27tiệc cưới, chúng em cũng nhận thấy rằng đề tài cần có những phát triển để áp dụng vào thực tế
Từ CSDL này, có thể phát triển thêm các chức năng để tạo thành một CSDL quản lý tiệc cưới toàn diện như phân quyền sử dụng cho từng bộ phận trong nhà hàng như bộ nhận quản lý, bộ phận kiểm toán, bộ nhận đơn đặt tiệc, mỗi bộ phận sẽ có những chức năng riêng, phát triển chức năng tra cứu, bên cạnh đó có thể tổng hợp hóa đơn trong tháng để lập doanh thu mỗi tháng, xuất báo cáo giúp nhà hàng đưa ra chiến lược phát triển phù hợp
Về hướng phát triển về quy mô, đề tài hướng đến các tiệc cưới 10-20 bàn 1 ngày là hiệu quả nhất, với các hệ thống quản lý như quản lý sự kiện quy mô vừa và nhỏ hay quản lý đặt hàng có thể sử dụng lại CSDL vừa thiết kế