设计数据库以跟踪所有者

ray*_*ygo 5 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|
----------------
Run Code Online (Sandbox Code Playgroud)

如果产品归用户所有,则只会填充product_id和user_id.如果它由公司拥有,那么将填写product_id,company_id和agent_assigned.

之后,我想要提取产品,并知道谁是所有者:用户信息,代理商和公司信息.

这是最好的方法吗?这对我来说似乎不太好.

Nei*_*gan 0

使用标准派对模型。阅读继承来实现它。

资产由法人拥有。它可以是一个个人、一群人(比如琼斯家族)、一个政府、一家公司。您需要将这些具体类型抽象为一种抽象类型,以便您可以将单个外键指向它们。