在我的业务逻辑中,我有一个用户,一个公司(用户可以是公司的一部分,作为员工,我称他们为“代理人”)和产品。
产品可以归用户所有,也可以归公司所有,公司可以稍后将其分配给用户(代理),但它仍然归公司所有(以防公司解雇代理)。
我的想法是拥有用户表、公司表和产品表以及一个表来跟踪谁是产品的所有者:
--------------
| users |
--------------
| user_id |
| name |
--------------
--------------
| products |
--------------
| product_id |
| title |
--------------
--------------
| company |
--------------
| company_id |
| name |
--------------
--------------
| agents |
--------------
| agent_id |
| user_id |
| company_id |
--------------
----------------
|product_owner |
----------------
| id |
| product_id |
| user_id |
| company_id |
|agent_assigned|
----------------
如果产品归用户所有,则只填写 product_id 和 user_id。如果它归一家公司所有,则将填写 product_id、company_id 和 agent_assigned。
稍后,我想拉取一个产品,并知道谁是所有者:用户信息,或代理商和公司信息。
这是最好的方法吗?对我来说似乎不太好。
最佳答案
使用标准Party Model .继续阅读 Table继承来实现它。
Assets 由合法方拥有。它可以是一个人、一群人(比如琼斯家族)、一个政府、一家公司。您需要将这些具体类型抽象为一个抽象类型,以便您可以将单个外键指向它们。
关于php - 设计一个数据库来跟踪所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20498211/