mysql - 如何创建一个数据库来列出餐厅的自助餐系统?

标签 mysql database-design relational-database

餐厅提供自助餐。和自助餐有不同的点差。我想为自助餐上的每道菜启用照片和评论。不确定将它们存储在数据库中的最佳方式

我做了什么?

我有一个餐厅数据库,用于存储 REst 的一般信息。 存储餐厅菜肴的菜肴数据库。每道菜都再次映射到一个类别,如开胃菜、饮料、主菜。

现在如何以标准化方式将菜肴存储为餐厅自助餐的一部分。

最佳答案

您需要一个具有唯一主键 REST_ID 和其他餐厅属性(例如名称和位置、厨师姓名)的 Restaurant 表

您需要一个包含主键(REST_ID、BUFFET_ID)和其他自助餐属性(例如名称(例如“沙拉吧”、“自助餐”或“糖果”))的自助餐表。

您需要一个带有主键(REST_ID、BUFFET_ID、DISH_ID)和其他属性(例如名称(“Potato Salad”、“Buttered Nan”))的 Dish 表

您需要一个带有主键(REST_ID、BUFFET_ID、DISH_ID、PHOTO_ID)和其他属性(例如照片本身的路径名或 blob 以及标题)的照片表。

您需要一个带有主键(REST_ID、BUFFET_ID、DISH_ID、REVIEW_ID)的评论表。

请注意,此数据模型中有一个设计选择:同一道菜不可能出现在两个不同的自助餐上。同样的自助餐也不可能出现在两家不同的餐厅。也就是说,数据是严格分层的:

One restaurant: zero, one, or more buffets
One buffet: zero, one or more dishes
One dish: zero, one or more photos
One dish: zero, one or more reviews

这对于审核申请来说很有意义。如果您因 A 餐厅的鸡蛋沙拉食物中毒,那么您对这道菜的差评出现在 B 餐厅下是没有意义的。

以下是每个表的一些示例行。

餐厅(REST_ID、名称、厨师)

1 "McDonalds" Ronald
2 "Julia's Place" Julia
3 "Ritz Carlton Dining Room" Jack

自助餐(REST_ID、BUFFET_ID、名称)

2 1 "Soup Bar"   (this is the soup bar at Julia's place)
2 2 "Salad Bar"  (the salad bar at Julia's place)
3 1 "Cold Breakfast"  (the cold breakfast bar at the hotel dining room)
3 2 "Sweets"  ( the dessert bar at the hotel dining room)

菜肴:(REST_ID、BUFFET_ID、DISH_ID、名称和类别)

2 1 1 "Minestrone" "Soup"
2 1 2 "French Onion" "Soup"
2 1 3 "Vegetarian Barley" "Soup"
2 1 4 "Saltines" "Crackers"
3 1 1 "Melon" "Fruit"
3 1 2 "Strawberry" "Fruit"
3 1 3 "Blueberry Muffin" "Bread"
3 1 4 "Multigrain Bread" "Bread"
3 1 5 "Corn Flakes" "Cereal"
3 1 6 "Orange Juice" "Drink"
3 1 7 "Milk" "Drink"

等等

关于mysql - 如何创建一个数据库来列出餐厅的自助餐系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3793343/

相关文章:

mysql - 使用 MySQL 数据库的 VB.NET 登录

mysql - 是否可以在 SUM 查询期间对值进行 CAST 转换?

mysql - 使用 Grocery CRUD 连接具有不同字段名称的表

mysql - 在 NoSQL 中存储动态数据

hibernate - 在Grails应用程序中使用奇怪的 hibernate/Gorm行为

mysql - 如何将 SQL Server 数据库导出到 MySQL?

mysql - 多个一对多关系的正确架构?

mysql - 弱实体的数据库建模

MySQL SELECT 两个表,同时用第二个表的字段值替换第一个表的字段值

java - 对象关系映射中的多值属性(Android 应用程序)