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

ora*_*e14 4 mysql database postgresql database-design

我很困惑,我在互联网和 SO 上阅读了很多,但我无法弄清楚。在这个设计中,可扩展性对我来说是一项重要的任务。

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

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

  1. 做3张桌子。用户,客户,厨师。
  2. 做2张桌子。用户,客户。
  3. 做2张桌子。顾客。厨师

我创建了一个 User 表,主要是为了安全,因为我不希望机密数据驻留在 Customer 或 Cook 表中。

问题是厨师也可以是顾客。

我正在考虑方法 1。我如何对其进行建模。我是否使用递归方法。递归方法适用于员工和经理的想法(标准教科书示例),但在这里似乎很奇怪。

在方法 2 中,我使用 1 张桌子,我不区分厨师和顾客。不明确这一点,不知何故似乎是一个坏主意。

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

一个用户表是这样的:

在此处输入图片说明

一个客户表是这样的:

在此处输入图片说明

Tre*_*orJ 5

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

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

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

在此处输入图片说明

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

  • 顺便说一句,使用代码制作数据库图表的 QuickDatabaseDiagram 方法看起来真的很酷。我将在我的下一个图表中使用它。 (3认同)