mysql - 数据库设计模型客户、厨师、用户关系

标签 mysql database postgresql database-design

我很困惑,我已经在互联网上阅读了很多,但我还是想不通。在这个设计中,可扩展性对我来说是一项重要的任务。

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

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

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

我主要出于安全考虑创建了一个 User 表,因为我不希望 secret 数据驻留在 Customer 或 Cook 表中。

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

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

在方法 2 中,我使用 1 个表,并且不区分厨师和顾客。不区分这一点,在某种程度上似乎是个坏主意。

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

一个用户表是这样的:

enter image description here

一个客户表是这样的:

enter image description here

最佳答案

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

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

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

enter image description here

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

关于mysql - 数据库设计模型客户、厨师、用户关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43854692/

相关文章:

mysql - 即使通过它也找不到存储过程 "already exists"

mysql - 递归关系的基数?

php - 构建数据库,为用户记录大量动态数据

postgresql - pg_terminate_backend 在循环中不起作用

node.js - sequelize 和 postgres 中关联表中的多个值

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源

mysql - "Group by"子查询的问题

python - 如何调试MySQL错误消息: Caught an exception while rendering

php - Codeigniter $this->db->where() 不工作

测试存储过程