gpt4 book ai didi

mysql - 数据库模式、表中的多对多或 bool 值

转载 作者:行者123 更新时间:2023-11-29 14:32:19 25 4
gpt4 key购买 nike

如果我的数据库中有很多餐厅,并且每个餐厅都可以有午餐菜单、晚餐菜单或早午餐菜单,那么在餐厅表中设置 bool 值是否有意义,如下所示:

餐厅 ID |餐厅名称 |地址 |等等.. |午餐菜单|晚餐菜单|早午餐菜单

或者我应该创建一个菜单表,然后有一个 RestaurantMenu 表(多对关系)

菜单 ID |菜单名称

1 |午餐菜单

2 |晚餐菜单

3 |早午餐菜单

最佳答案

另一个建议是您使用链接器表。这将更易于维护并且更容易记录。当存在多对多关系时,将使用链接器表。 (一家餐厅可以有多种类型的菜单,并且特定类型的菜单可以被许多餐厅使用。)

这使您可以稍后将其他菜单类型添加为“menu_types”表中的一行,而无需更改任何表的结构。

不过,它确实使您的查询变得更加复杂,因为您必须执行一些联接。

首先,您将拥有三个类似这样的表:

restaurants
---------------
id name
1 Moe's
2 Steak & Shrimp House
3 McDonald's

restaurant_menus
----------------
restaurant_id menu_type
1 1
1 3
2 4
3 1
3 3
3 4

menu_types
---------------
id type
1 Breakfast
2 Brunch
3 Lunch
4 Dinner

因此,要查看每家餐厅提供什么类型的菜单,您的查询如下所示:

SELECT r.name, mt.type
FROM restaurants r
JOIN restaurant_menus rm
ON (r.id = rm.restaurant_id)
JOIN menu_types mt
ON (rm.menu_type = mt.id)
ORDER BY r.name ASC;

这会产生:

name                  type       
-------------------- -----------
McDonald's Lunch
McDonald's Breakfast
McDonald's Dinner
Moe's Breakfast
Moe's Lunch
Steak & Shrimp House Dinner

关于mysql - 数据库模式、表中的多对多或 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com