友情鏈接
1、學生成績管理系統(tǒng)數(shù)據(jù)庫設計–MySQL
學生成績管理系統(tǒng)數(shù)據(jù)庫設計–MySQL
2、醫(yī)療信息管理系統(tǒng)數(shù)據(jù)庫–MySQL
醫(yī)療信息管理系統(tǒng)數(shù)據(jù)庫–MySQL
3、郵件管理數(shù)據(jù)庫設計–MySQL
郵件管理數(shù)據(jù)庫設計–MySQL
4、商品管理系統(tǒng)數(shù)據(jù)庫設計–SQL Server
商品管理系統(tǒng)數(shù)據(jù)庫設計–SQL Server
5、SQL Server醫(yī)療信息管理系統(tǒng)數(shù)據(jù)庫【英文版-源碼】–(Medical Management System Database)
SQL Server醫(yī)療信息管理系統(tǒng)數(shù)據(jù)庫【英文版-源碼】–(Medical Management System Database)
6、SQL Server電影院數(shù)據(jù)庫管理系統(tǒng)【英文版-源碼】–(Movie Theatre Management System Database)
SQL Server電影院數(shù)據(jù)庫管理系統(tǒng)【英文版-源碼】–(Movie Theatre Management System Database)
一、需求分析
1.選題背景
隨著經(jīng)濟不斷發(fā)展,餐飲行業(yè)也隨著物質生活水平逐步提高而迅速發(fā)展,人們對生活質量的要求也越來越高,享受真正自動化、人性化的服務成為了人們追求高質量生活的重要內容。在大多數(shù)的餐飲場所點菜、查看菜譜等是人工完成的,速度慢,效率低,極易出錯,造成人力物力的極大浪費。然而隨著我國市場經(jīng)濟的快速發(fā)展,餐廳點菜系統(tǒng)成為餐廳提升服務檔次,提高辦公效率,提高競爭力的關鍵因素之餐飲業(yè)要想跟上發(fā)展形勢,餐館點餐的信息化進程也要加快腳步。
2.系統(tǒng)功能
2.1 查詢菜單功能
顧客可以根據(jù)所有餐廳的菜單信息,數(shù)據(jù)菜單的相關信息例如通過菜品的菜系查找對應菜系的菜品,也可以通過菜品類型查詢相應的菜品,也可以根據(jù)價格范圍來查詢目標菜品,由餐廳管理者維護菜品信息。
2.2 菜品折扣功能
餐廳菜品一定程度上有折扣,可定期或者集中維護,顧客也可以通過折扣情況來選擇菜品。
2.3 點餐功能
顧客進店后可根據(jù)菜單點相應的菜品,可以記錄顧客點餐的份數(shù)和對應的口味需求,顧客也可以更改自己的點餐信息。餐廳管理者也可以查看菜品受歡迎程度以及對顧客口味進行分析。
2.4 餐桌和顧客信息
餐桌為顧客提供用餐位置,需要實時更新當前餐桌狀態(tài)(空閑,就餐),不同餐桌提供的座位數(shù)不同。顧客是進店顧客相關信息,兩個表都有管理員來維護,每一個顧客id對應一起進餐廳的顧客,人數(shù)不限,同時需要指定顧客的就餐桌號。
2.5 顧客實時狀態(tài)維護
為了餐廳管理者更好維護餐廳就餐情況,為餐廳設計顧客狀態(tài)表數(shù)據(jù),可以數(shù)據(jù)顧客查詢顧客當前狀態(tài)。
2.6 顧客排隊功能
顧客進入餐廳,如果滿員需要一定時間等待,根據(jù)人數(shù)排隊不同的桌位人數(shù)的排隊。
2.7 結算功能
顧客就餐完成,完成結款,可以通過顧客編號,餐桌號,點單編號等信息查詢到顧客的消費情況。每天的銷售統(tǒng)計,套餐和單點的銷售情況,實現(xiàn)對本店總體銷售情況的統(tǒng)計。
3.用戶需求分析
餐廳管理系統(tǒng)的總目標是為用戶提供迅速、高效的服務,減免手工處理的繁瑣與誤差,及時、準確地反映餐廳的工作情況、經(jīng)營情況,從而提高餐廳的服務質量,獲得更好的經(jīng)濟效益。其具體目標包括:
1)快速完成顧客的點餐。
2)準確無誤地記錄顧客的每筆消費記錄。
3)實時、快速、準確地提供最新餐單。
4)方便查詢顧客消費情況。
5)實現(xiàn)顧客排隊功能。
顧客:顧客進店首先選擇位置,拿到菜單進行點餐 。
菜品:供顧客選擇,可由收銀員(店員)維護、更新、刪除、新增菜品,菜品編號,可提供菜系、價格和菜品類型供篩選,價格由最初店員設置,可通過折扣或者信息更新變更價格。
點菜單:顧客進店后進行點單,點菜單編號不唯一,同一桌同一批顧客存在點不同菜品的可能,顧客可自行選擇口味,顧客可以根據(jù)需求取消點單或者增加點單。
顧客狀態(tài):體現(xiàn)顧客狀態(tài)。
優(yōu)惠信息:包括菜品編號和對應折扣,由店員更新,針對不同菜品折扣不同,店員可根據(jù)時令和物價進行更新,折扣范圍是0-1。
收銀單:統(tǒng)計點菜單顧客實際應付款項和對應折扣后實際應付款,計入收款時間,方便店員計算賬目,可由店員維護。
店員:快餐店維護者,數(shù)據(jù)庫主要使用人和維護人,主要維護菜品信息和菜品對應折扣,完成收款和賬目統(tǒng)計等。
排隊表,用于體現(xiàn)顧客排隊情況,根據(jù)顧客人數(shù)等待餐桌不同。
4.數(shù)據(jù)字典
數(shù)據(jù)字典是關于數(shù)據(jù)的信息的集合,也是對數(shù)據(jù)流圖中所包含的所有元素的定義的集合。
由于本次是小型數(shù)據(jù)庫系統(tǒng)的開發(fā),所以采用卡片形式書寫數(shù)據(jù)字典。每張卡片上保存描述一個數(shù)據(jù)的信息。這樣做更新和修改起來比較方便,而且能單獨處理描述每個數(shù)據(jù)的信息。
下面列出若干數(shù)據(jù)元素的數(shù)據(jù)卡片信息。
5.數(shù)據(jù)流圖
二、數(shù)據(jù)概念結構
1.數(shù)據(jù)結構
概念結構設計是將分析得到的用戶需求抽象為概念模型的過程,即在需求分析的基礎上,設計出能夠滿足用戶需求的各種實體以及它們之間的相互關系的模型。概念結構的主要特點是能真實、充分地反映現(xiàn)實世界,易于理解,易于更改,易于向關系、網(wǎng)狀、層次等各種數(shù)據(jù)模型轉換,描述概念模型的有力工具是E-R模型。
2.ER圖
2.1局部ER圖
(1)顧客信息E-R圖
(2)餐桌E-R圖
(3)顧客狀態(tài)E-R圖
(4)菜品E-R圖
(5)點菜單E-R圖
(6)優(yōu)惠信息E-R圖
(7)收銀員E-R圖
(8)收銀單E-R圖
(8)排隊表E-R圖
2.2 全局ER圖
三、邏輯結構設計
邏輯結構設計的任務就是把概念模型結構轉換成某個具體的DBMS所支持的數(shù)據(jù)模型。設計邏輯結構時,首先是將概念結構轉換為一般的關系、網(wǎng)狀、層次模型,其次是將轉換來的關系、網(wǎng)狀、層次模型向特定DBMS支持下的數(shù)據(jù)模型轉換,最后是對數(shù)據(jù)模型進行優(yōu)化。
將餐飲點菜系統(tǒng)的E-R圖轉換成關系數(shù)據(jù)模型。關系模式如下:
1.實體
顧客:屬性有顧客編號、桌號、用餐人數(shù)、進店時間
餐桌:屬性有餐桌編號、容量、狀態(tài)(空閑、就餐)
顧客狀態(tài):顧客編號、時間、狀態(tài)(就餐、等待、結款)
菜品:屬性有菜品編號、菜品名稱、菜品分類、所屬菜系、價格、原材料
點菜單:屬性有點菜單編號、顧客編號、菜品編號、份數(shù)、口味
優(yōu)惠信息:屬性有菜品編號、折扣
收銀員:屬性有收銀員編號、姓名、聯(lián)系方式
收銀單:屬性有收銀單編號、收銀員編號、顧客編號、餐桌編號、應收金額、折扣、實收金額、收銀時間
排隊表:屬性有顧客編號,顧客人數(shù),對應需要餐桌人數(shù)
2.實體間聯(lián)系
一桌顧客對應一個菜單,多桌客人可以使用相同的菜單,因此顧客與菜單有多對一的聯(lián)系。
客人、收銀單之間存在一對一的關系,即一桌客人只對應一個收銀單
點菜單和菜品之間存在一對多聯(lián)系,一個菜單可對應多個菜品
菜品和折扣存在一對一聯(lián)系,一個菜品對應一種折扣
顧客和顧客狀態(tài)存在一對多聯(lián)系,一個顧客對應多種客戶狀態(tài)
排隊表顧客與顧客存在一對一關系
四、物理結構設計
數(shù)據(jù)庫的物理結構設計是對于給定的邏輯數(shù)據(jù)模型,選取一個最合適應用環(huán)境的物理結構。數(shù)據(jù)庫的物理結構指的是數(shù)據(jù)庫在物理設備上的存儲結構與存取方法,它依賴于給定的計算機系統(tǒng),是在數(shù)據(jù)庫邏輯結構的基礎上設計出一組能夠滿足實際需求的關系、約束、和索引等信息。餐廳點菜系統(tǒng)的數(shù)據(jù)庫表結構如下:
4.1 顧客CustomerInfo
4.2 菜品信息FoodInfo
4.3 優(yōu)惠信息DiscountInfo
4.4 點菜單OrderInfo
4.5 店員信息ManagerInfo
4.6 顧客狀態(tài)實時表ManagerInfo
4.7 收銀單ChargeInfo
4.8 顧客排隊表Queue
五、數(shù)據(jù)庫構建
1.建表語句
1.1 創(chuàng)建數(shù)據(jù)庫
create database restaurant on primary
(
name='restaurant',
filename='D:\database\restaurant.mdf',
size=5MB,
maxsize=100MB,
filegrowth=15%
)
Log on
(
name='restaurant_log',
filename='D:\database\restaurant.ldf',
size=5MB,
maxsize=100MB,
filegrowth=15%
)
GO
use restaurant;
1.2 創(chuàng)建表
-- 餐桌表
create table TableInfo
(
Table_Id int primary key not null,
Table_Num int not null,
Table_Status char(10) not null
);
-- 顧客表
create table CustomerInfo
(
Cus_Id int primary key not null,
Table_Id int not null,
Cus_num int not null,
Intime datetime not null
);
-- 收銀員表
create table CashierInfo
(
-- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
);
-- 菜品表
create table FoodInfo
(
-- 需要完整代碼請?zhí)砑游恼碌撞课⑿牛顿M咨詢
);
-- 菜品折扣表
create table DiscountInfo
(
-- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
);
--點菜單表
create table OrderInfo
(
-- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
);
-- 收銀表
create table ChargeInfo
(
-- 需要完整代碼請?zhí)砑游恼碌撞课⑿牛顿M咨詢
);
-- 顧客狀態(tài)實時表
create table CuststatusInfo
(
-- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
);
-- 顧客排隊表
create table Queue
(
-- 需要完整代碼請?zhí)砑游恼碌撞课⑿牛顿M咨詢
);
1.3 添加外鍵約束
--折扣菜品菜品id是菜品表菜品id的外鍵
alter table CustomerInfo
add constraint fk_Tab_Cu foreign key(Table_Id) references TableInfo(Table_Id);
--折扣菜品菜品id是菜品表菜品id的外鍵
alter table DiscountInfo
add -- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
--點菜單的菜品id是菜品表菜品id的外鍵,顧客id是顧客表顧客id的外鍵
alter table OrderInfo
add -- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
--收銀單的顧客id是顧客表顧客id的外鍵,收銀員id是收銀員表收銀員編號的外鍵,用餐餐桌id是餐桌表餐桌id的外鍵
alter table ChargeInfo
add -- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
--顧客狀態(tài)實時表的顧客id是顧客表顧客id的外鍵
alter table CuststatusInfo
add -- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
--顧客排隊表的顧客id是顧客表顧客id的外鍵
alter table Queue
add -- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
2.插入數(shù)據(jù)
--餐桌插入數(shù)據(jù)
insert into TableInfo values(1,2,'空閑');
insert into -- 需要完整代碼請?zhí)砑游恼碌撞课⑿牛顿M咨詢
--顧客插入數(shù)據(jù)
insert into CustomerInfo values(1001,2,1,'2019-11-19 08:21:56');
insert into -- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
--收銀員插入數(shù)據(jù)
insert into -- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
--菜品插入數(shù)據(jù)
insert into FoodInfo -- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
--菜品折扣插入數(shù)據(jù)
insert into DiscountInfo -- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
--點菜單插入數(shù)據(jù)
insert into OrderInfo -- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
--結算單表插入數(shù)據(jù)
insert into ChargeInfo -- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
--顧客狀態(tài)插入數(shù)據(jù)
insert into CuststatusInfo -- 需要完整代碼請?zhí)砑游恼碌撞课⑿牛顿M咨詢
--顧客排隊表插入數(shù)據(jù)
insert into Queue -- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
3.索引
--建立索引
CREATE INDEX Index_ Cash_Name ON -- 需要完整代碼請?zhí)砑游恼碌撞课⑿牛顿M咨詢
4.查詢
select
FoodInfo.Food_id as 菜品編號,
FoodInfo.Food_name as 菜品名稱,
Food_Type as 菜品類型,
FoodInfo.Cuisine AS 菜品菜系,
Price as 價格,
DiscountInfo.Discount as 折扣
from FoodInfo inner join DiscountInfo
on FoodInfo.Food_id=DiscountInfo.Food_id;
select
-- 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
5.觸發(fā)器
5.1 增加數(shù)據(jù)庫觸發(fā)器
點菜單產生一個數(shù)據(jù)自動傳入收銀單數(shù)據(jù)中,增加表OrderInfo,觸發(fā)表ChargeInfo
– 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
5.2 增觸發(fā)器
新增客戶自動默認排隊,默認排隊數(shù)桌人數(shù)為,后期可以修改,插入表CustomerInfo,觸發(fā)表Queue
– 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
5.3 刪觸發(fā)器
刪除不在參與排隊的客戶信息,即刪除排隊表中的客戶信息,刪除表CustomerInfo,觸發(fā)表Queue
– 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
5.4 update觸發(fā)器
更改客戶人數(shù),對應的排隊人數(shù)也更新,更新CustomerInfo,觸發(fā)CustomerInfo
– 需要完整代碼請?zhí)砑游恼碌撞课⑿牛顿M咨詢
6.存儲過程
6.1 新增存儲過程
新增顧客存儲過程
– 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
6.2 變更存儲過程
調節(jié)食品價格存儲過程
– 需要完整代碼請?zhí)砑游恼碌撞课⑿牛顿M咨詢
6.3 刪除存儲過程
根據(jù)顧客id刪除顧客排隊存儲過程
– 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
6.4 查詢存儲過程一
根據(jù)菜品類型查詢快餐廳目前食品清單存儲過程,默認主食
– 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
6.5 查詢存儲過程二
根據(jù)客戶id查詢排隊狀態(tài)存儲過程
– 需要完整代碼請?zhí)砑游恼碌撞课⑿牛顿M咨詢
6.6 查詢存儲過程三
根據(jù)食物口味查詢訂單存儲過程
– 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
7.視圖
7.1 菜品種類分布
– 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
7.2 建立視圖,查看菜品及折扣情況
– 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
測試
8.自定義函數(shù)
8.1 輸入收銀員編號,返回收銀員姓名
– 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢
測試
8.2 建立自定義函數(shù),輸入食物名稱,返回對應食物所屬菜系
– 需要完整代碼請?zhí)砑游恼碌撞课⑿?,付費咨詢文章來源:http://www.zghlxwxcb.cn/news/detail-788795.html
9.游標
顯示有折扣的菜品信息
– 需要完整代碼請?zhí)砑游恼碌撞课⑿牛顿M咨詢文章來源地址http://www.zghlxwxcb.cn/news/detail-788795.html
到了這里,關于點餐系統(tǒng)數(shù)據(jù)庫設計--SQL Server的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!