我打算做一个自助点菜(kiosk)的美食法庭计划。
这就是我计划构建的体系结构(数据库服务器是本地服务器,不在云上)。
基本上,我将有一个运行mysql服务器的本地数据库服务器。每个食品摊位都有一台连接到数据库服务器的计算机。每个食品摊位都可以更新菜单和供应情况。例如,每个卖家都可以标记哪些菜单缺货(不可用)。此外,当有订单时,可以通知卖方。交付订单后,他可以将订单状态更新为“完成”。有多台订购机连接到数据库服务器。每个买主下单时都会插入他们的表号。
这是我目前的数据库设计。
Seller Table
Seller Username (Unique, Primary Key) | Seller Password | Name of the Stall
Menu Table
Menu ID (AutoIncrement, Primary Key) | Food Name | Price | Availability | Seller ID (Foreign Key) //Seller ID is used to indicate who sells the product
Order Table
Order ID (AutoIncrement, Primary Key) | Total Price | Table Number
Order Detail Table
Order ID (Foreign Key) | Food Name | Quantity | Table Number | Seller ID (Foreign Key) | Status //Status is used to determine whether the order has been delivered or not
编辑
我的问题是:
数据库设计正确吗?
我怎样才能避免买家购买一个没有货的产品?例如,突然卖家改变了汉堡的供应。但是自助点菜机已经进行了查询,所以汉堡会显示在自助点菜机屏幕上。有人建议,当买家点击订购时,机器必须先检查是否有货,但如何做到这一点(什么是查询)?
有订单时如何立即通知卖方?我的应用程序是否必须每分钟进行一次查询才能订购明细表?
1条答案
按热度按时间ctzwtxfj1#
在设计方面,您应该在表之间创建更多的关系。不要复制信息,而是使用链接到存储信息的表的外键。
具体来说:在order detail中,将fieldfood name替换为menu id的外键(来自menu table)。要在下订单时验证产品可用性,可以使用使用该关系的触发器,如: