Php 数据库设计、用户与订单关系模型

Php 数据库设计、用户与订单关系模型,php,activerecord,one-to-many,laravel,Php,Activerecord,One To Many,Laravel,我正在构建一个包含用户和订单的web应用程序。我有一个关于如何处理两者之间关系的问题 订单属于用户。但这里有一个转折点,用户可以选择将订单外包给其他用户 当订单外包时,原始用户仍然是所有者,只有他可以修改订单上的某些内容,如价格、数量等。 订单外包给的用户可以查看一些订单信息,并可以更新订单上的特定属性,如标记已完成。 外包订单应显示在两个用户的“订单索引”上 所有用户都是“平等”的,这意味着在某些订单上,用户可能是所有者,而在其他订单上,用户可能正在履行订单。用户也可以完成自己的订单 这似乎不

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

订单属于用户。但这里有一个转折点,用户可以选择将订单外包给其他用户

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

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

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

处理订单/用户关系的最简单方法是什么?我想避免使用完整的权限系统,有没有一种方法可以简单地通过“外包”表来处理这个问题?在订单表上有一个用户id和外包对象字段如何

谢谢你的意见

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

在订单表上有一个用户id和外包对象字段如何

听起来不错


另外,考虑一种非规范化,比如移动字段,可以通过“outforced to”用户到单独的表进行编辑。

看起来您的订单表与用户表有两种单独的关系。 订单与用户之间存在own/own by关系

Users(1) -- owns -- (*)Orders
一个用户可以拥有多个订单。一个订单仅由一个用户拥有

然后是订单和用户之间完全独立的外包关系

Orders(*) -- outsourced-to -- (1)Users
(这里我假设一个订单只能外包给另一个用户。一个用户可能有许多订单外包给他们。)

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

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


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

如果您可以确定一个订单上只会有两个用户,那么我看不出为他们的ID设置字段有什么问题,正如您在最后所述。如果有无限的可能性,我会想,一个单独的表格保存链接会更好。事实上,一个订单最多只能有2个用户。谢谢你这样分解它。