我正在为 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/