【发布时间】:2020-08-04 11:03:03
【问题描述】:
背景
我正在建立私人厨师预订服务,您可以在其中预订厨师为您烹制自定义菜单。我在创建准确表示域同时保持数据完整性的 SQL 数据库架构时遇到了问题。
要求
- 客户通过选择
Chef和Menu来创建Booking,并为每个MenuCourse选择他们想要的MenuItems -
Chef定义了一组MenuItem,客户可以从中选择以创建他们的Booking -
Menu是MenuCourses的集合。 (例如,名为“品尝菜单”的Menu是 6 道菜的餐点,每道菜的价格在 10-20 美元之间,MenuCourse)。 -
Chef应该能够将其MenuItems与多个Menus和MenuCourses相关联。 - 客户
Booking应包含所选客户的Chef以及将要服务的Menu(和MenuItems)。Booking价格由Menu和MenuCourse选择决定(开胃菜的价格低于主菜)
问题
在我当前的数据模型中,我有以下不知道如何解决的问题:
A.可以使用Chef“A”创建一个Booking,但随后有一个BookingMenuItem 使用Chef“B”引用MenuItem(Booking 的所有BookingMenuItem 应该属于一样的Chef)
B. Booking 引用了特定的 Menu(我需要定价,定价基于 Menu 和 MenuCourse)但是 BookingMenuItem 的 Booking 可以引用完全不同的 Menu 或 @987654362 @
是否可以重新设计我的数据库架构来解决我遇到的完整性问题?还是我只需要在应用程序级别实施这些检查。谢谢!
【问题讨论】:
-
请use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。无法搜索或剪切和粘贴图像。在图像中包含图例/键和说明。只提供您需要的东西并将其与您的问题联系起来。
-
你是说一旦有人和 Nigella Lawson 一起预订芝士蛋糕,就再也没有人可以和其他厨师一起预订芝士蛋糕了?
-
@Nick.McDermaid 不,每个厨师都定义了自己的菜单项,客户可以根据他们在预订中选择的厨师来预订他们想要的任何东西......厨师可以是不同客户多次预订
-
关于问题 A,您似乎应该从
MenuItem中删除chef_id。您可以通过遍历连接到Booking来计算出特定厨师预订了哪些菜单项,反之亦然。关于问题 B,这是因为顾客可能会预订套餐菜单,还是他们可能会从个别项目中预订自定义菜单?
标签: sql database database-design database-schema data-modeling