0

我正在构建一个具有用户和订单的 Web 应用程序。我有一个关于如何处理两者之间关系的问题。

订单属于用户。但这是一个转折点,用户可以选择将订单外包给另一个用户。

当订单外包时,原始用户仍然是所有者,只有他可以修改订单上的某些内容,例如价格、数量等。订单外包给的用户可以查看一些订单信息,并可以更新订单上的特定属性,例如标记为已完成。外包订单应显示在两个用户的“订单索引”上。

所有用户都是“平等的”,这意味着在某些订单上,用户可能是所有者,而在其他订单上,他可能正在履行订单。用户也可以履行他自己的订单。

这似乎不是真正的多对多关系,因为其中一位用户并不真正拥有该订单,他只是对它的访问权限有限。

处理此订单/用户关系的最简单方法是什么?我想避免使用完整的权限系统,有没有办法用“外包”表简单地处理这个问题?在订单表上有一个 user_id 和 outsourced_to 字段怎么样?

感谢您的输入!

如果有任何帮助,该应用程序使用 Laravel。

4

2 回答 2

1

您的 Orders 表似乎与 Users 表有两个独立的关系。订单与用户具有拥有/拥有关系。

Users(1) -- owns -- (*)Orders

一个用户可以拥有多个订单。一份订单仅由一名用户拥有

然后在订单和用户之间有一个完全独立的外包关系。

Orders(*) -- outsourced-to -- (1)Users

(这里我假设一个订单只能外包给另一个用户。一个用户可能有很多订单外包给他们。)

表示这一点的最佳方式是让 Orders 表在 Users 表中有一个“所有者”外键列,在 Users 表中还有另一个“outsourced_to”外键列。

外包用户可以编辑的订单列将由代码控制,而不是由 dB 控制。

只有当订单可以同时外包给多个用户时,才需要单独的外包表。

于 2012-12-23T17:04:43.567 回答
0

在订单表上有一个 user_id 和 outsourced_to 字段怎么样?

听起来不错。

另外,考虑一种非规范化,例如移动字段,可以由“外包给”用户编辑到单独的表中。

于 2012-12-23T17:01:14.067 回答