php - 设计一个数据库来跟踪所有者

标签 php mysql sql database-design

在我的业务逻辑中,我有一个用户,一个公司(用户可以是公司的一部分,作为员工,我称他们为“代理人”)和产品。

产品可以归用户所有,也可以归公司所有,公司可以稍后将其分配给用户(代理),但它仍然归公司所有(以防公司解雇代理)。

我的想法是拥有用户表、公司表和产品表以及一个表来跟踪谁是产品的所有者:

--------------
|   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/

相关文章:

php - 比较两个大数据——2000万种产品

php - MySQL QUERY - 循环遍历表并执行条件计算(适用于 PHP)

php - 在执行 UNION 查询时,如何让 Zend Db 返回行集而不是数组?

php - Google App Engine 的简单用户管理示例?

mysql - 我如何知道 solr 索引中有什么?

mysql - 如何解决MySQL死锁

mysql - 根据其条目列值迭代行

mysql - 不确定如何编写此 sql 查询

mysql - SQL - 我将如何选择涉及多个表的数据?

php - 在 php 中验证 XMLHttpRequest