php - 为需要批准的每种类型的关系定义一个表与定义一个通用表以适应所有关系

标签 php mysql database-design

我正在为 mysql 5.5 中的应用程序设计一个数据库,该数据库在用户表和业务表之间具有多对多关系,如下所示:

user
----
user_id (PK)

handle

email

password

password_salt

created_at

updated_at


business
--------
business_id (PK)

business_name

website

created_at

updated_at

updated_by

为此我定义了以下桥接表

user_business_relationship
--------------------------
user_id (FK) (PF)

business_id (FK) (PF)

但是,在将用户与企业相关联并将关系记录在 user_business_relationship 表中之前,企业需要获得批准

因此,我定义了如下的approver表

(option 1)
--------

user_business_relationship_approver
-----------------------------------
user_id (FK) (PF)

business_id (FK) (PF)

approver_id (FK) (PF)

status |requested|approved|rejected|

updated_at

我的问题如下:

我知道当我扩展我的数据库设计时,我会遇到其他类型的情况,在这些情况下我需要使用需要另一个表的相同审批工作流程,例如:

user_promotions_relationship_approver
-------------------------------------

and so on

那么,您会建议我为每种类型的关系定义单独的批准者表,还是只为需要批准的任何类型的关系定义一个通用批准者表更好?

(option 2)
----------

relationship_approver
---------------------
requestor_id |user_id| (PK) (PF)

request_id |business_id|promotion_id|etc| (PK) (PF)

approver_id (PF) (PF)

request_type

status

updated_at

updated_by

我还将感谢有关我当前设计的任何其他反馈。谢谢

最佳答案

我会在主关系表中简单地定义一个附加状态字段:

user_business_relationship

user_id (FK) (PF)
business_id (FK) (PF)
status |requested|approved|rejected|

如果这样做,您不需要任何额外的表来处理批准。您还可以根据需要添加任意数量的额外字段,以标识请求者、批准者、请求日期、批准日期等。

关于php - 为需要批准的每种类型的关系定义一个表与定义一个通用表以适应所有关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32231651/

相关文章:

php - 日期和 Unix 时间之间的时间,以及对该时间进行倒计时的计时器

php - 如何在单列中获取多个复选框值

mysql - Visual Studio 2017无法加载MySQL数据库

php - CRM应用程序的数据库表结构

database-design - PintOS 等数据库系统的教育项目?

php - 使用 Imagemagick - PHP 计算 PDF 文件中的页数

php - 修改javascript以输出表单名称而不是表单id

php - 为什么连接到 mySQL 数据库和查询不起作用?

mysql - 如何使用 vb.net 将字符串转换为 mysql 日期格式?

database - 如何处理数据库中的几十个标志