数据库设计模型是客户,厨师,用户关系

时间:2017-05-08 18:20:46

标签: mysql database postgresql database-design

我非常困惑,而且我在互联网上阅读了很多内容。所以,但我无法弄清楚。在这种设计中,可扩展性对我来说是一项重要任务。

我正在建立一个人们可以出售食物的门户网站,或者可以去这个门户网站购买食物。

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

  1. 制作3张桌子。用户,顾客,厨师。
  2. 制作2张桌子。用户,客户。
  3. 制作2张桌子。顾客。库克
  4. 我创建了一个主要用于安全性的User表,因为我不希望秘密数据驻留在Customer或Cook表中。

    问题是库克也可以成为顾客。

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

    在方法2中,我使用了1个表,我没有区分厨师和顾客。没有做到这一点,似乎是一个坏主意。

    方法3是可能的,但我无法在脑海中思考它是如何工作的

    用户表格如下:

    enter image description here

    客户表格如下:

    enter image description here

2 个答案:

答案 0 :(得分:2)

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

  • User表包含两个角色共有的数据,例如用户名。
  • 其他两个表仅包含特定于角色的数据。

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

enter image description here

此处绘制的图表:https://app.quickdatabasediagrams.com/#/schema/t_JngpUcm0-w_dbnW3FzsA [免责声明:我为QuickDatabaseDiagrams工作]

答案 1 :(得分:1)

您可以在用户表“userType”[买家/卖家/两者]中再创建一列。这将有助于了解当前用户是买家,卖家还是两者。这也有助于建模系统流程。