我只是想为餐厅创建一个简单的预订系统。我现在有5张桌子。
会员->预订<-独享之夜
菜单->菜单
上面显示了它们之间的关系。因此,一位顾客可以预订很多房间,而且很多预订都是一个晚上的专属房间。
然而,我有另外两张桌子和底部的菜单和菜肴,一个菜单有许多菜肴。
虽然成员和非成员可以查看菜单,但我不确定如何通过外键连接它们,或者根本不能连接它们。
所以我的问题是,像这样的两个表没有链接到数据库的其余部分,这是错误的/不鼓励的吗?
谢谢你的帮助。
发布于 2012-02-07 17:23:43
将数据与关联相关联意味着约束数据具有与关联一致的值。
如果您必须表示成员和菜单之间的关联(如果您可以使用应用程序上下文特定的单词来表示它,并且需要表示它以满足您的应用程序逻辑的目的),那么您将设计这种关联,然后通过向表中添加一列(例如,菜单表中成员的外键)来减少这种关联,并添加一个解释以确保FK中的数据与PK中的数据一致,如果需要,您将添加引用完整性。
这是你的选择,你不必非得去。
在数据库设计中,你应该首先问问自己,你是否需要使用。
发布于 2012-02-07 17:41:20
你说了算。它们之所以被称为约束,是因为您限制了可能的输入。
举个例子,如果
menus是MenuId,MenuName,DishId,而菜肴是DishId,DishName,这是非常合理的说法,菜单上的所有菜肴都必须存在于菜单表中,所以您应该在菜单上放置一个Foreignkey约束。
在那之后,比如把菜单加到菜肴上
打印一份鸡蛋炒饭,而不是42份
找到所有的菜单,上面都有厨师特制的放在菠菜床上的屋顶菜肴。
所有从未出现在菜单上的菜肴。
都是你可能想要的东西,但你不满足的是菜单上的一道菜“你”对此一无所知。
关系是机制,约束是原因。
https://stackoverflow.com/questions/9173541
复制相似问题