2017-05-08 34 views
1

我很困惑,我已经在互联网上读了很多&所以,但我不知道。在这种设计中,可扩展性对我来说是一项重要任务。数据库设计模型一个客户,厨师,用户关系

我正在制作一个门户,人们可以提供出售他们的食物或可以去这个门户购买食物。

我正在考虑以下3个选项:

  1. 把3个表。用户,客户,厨师。
  2. 制作2个表格。用户,客户。
  3. 制作2个表格。顾客。厨师

我创建了一个用户表主要是为了安全,因为我不希望秘密数据驻留在客户或库表中。

问题是库克也可能是客户。

我在考虑方法1.我如何建模。我是否使用递归方法?递归方法适用于员工和经理的想法(标准教科书示例),但在这里看起来很奇怪。

在方法2中,我使用了1个表格,我没有区分厨师和客户。不做这个独特的,不知何故似乎是一个坏主意。

方法3是可能的,但我不能相信在我的脑海里,怎么能工作

用户表是这样的:

enter image description here

一位顾客表是这样的:

enter image description here

+0

有人可以是用户,客户和一名厨师。这可能会更好,因为您可以轻松分离数据的相关性。 –

+0

这是一个常见问题,谷歌我的数据库子类型的SO评论。 – philipxy

回答

2

我建议使用三表方法来分离特定于每个角色的数据。

  • User表包含两个角色(如用户名)通用的数据。
  • 其他两个表仅包含角色特定的数据。

用户和客户(或用户和厨师)之间的关系是一比零的。因此,对于每个用户,如果用户履行了这两种角色,则可能有客户或库克记录,或两者都有。

enter image description here

图这里提出:https://app.quickdatabasediagrams.com/#/schema/t_JngpUcm0-w_dbnW3FzsA [免责声明:我对QuickDatabaseDiagrams工作]

+0

感谢您的协助。昨天我结束了思考完全相同的方法。很高兴我的意见得到重申。 – orange14

+0

btw QuickDatabaseDiagram使用代码制作数据库图的方法看起来非常酷。我将用它来做我的下一个图。 – orange14

1

您可以在用户表“userType”[买方/卖方/两者]中创建一个更多的列。这将有助于了解当前用户是作为买方还是卖方,还是两者兼而有之。这也有助于建模系统流程。

+0

我采取了不同的方法,但这也可以起作用。谢谢 – orange14