首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计,用户与订单模型的关系

数据库设计,用户与订单模型的关系
EN

Stack Overflow用户
提问于 2012-12-24 00:38:20
回答 2查看 480关注 0票数 0

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

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

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

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

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

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

感谢您的投入!

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-24 01:04:44

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

代码语言:javascript
复制
Users(1) -- owns -- (*)Orders

一个用户可以拥有多个订单。一个订单只归一个用户所有

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

代码语言:javascript
复制
Orders(*) -- outsourced-to -- (1)Users

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

表示这一点的最好方法是让Orders表在Users表中有一个'owner‘外键列,在Users表中也有另一个'outsourced_to’外键列。

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

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

票数 1
EN

Stack Overflow用户

发布于 2012-12-24 01:01:14

在订单表中添加一个user_id和outsourced_to字段如何?

听起来不错。

此外,考虑一种非规范化,比如移动字段,它可以由“outsorced”用户编辑以分隔表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14012673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档