Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用户和产品之间的多对多关系-Laravel_Php_Mysql_Laravel - Fatal编程技术网

Php 用户和产品之间的多对多关系-Laravel

Php 用户和产品之间的多对多关系-Laravel,php,mysql,laravel,Php,Mysql,Laravel,我正在创建一个数据库,用于管理公司及其产品(类别)和客户。我已经设计了数据库,但我想确定我的表是否违反了数据库模式的规则 用户表和产品表是多对多链接的(有一个pivot产品用户) 在这种情况下 用户1可以输入名为“硬件”的产品 因此在透视表中,product\u id:1和user\u id:1 用户2还可以输入名为“硬件”的相同产品 所以在透视表中,product\u id:2和user\u id:2 这是一个好方法吗?我现在不认识拉威尔。请帮忙。谢谢是的,这是一个好方法,但我建议您使用“公司

我正在创建一个数据库,用于管理公司及其产品(类别)和客户。我已经设计了数据库,但我想确定我的表是否违反了数据库模式的规则

用户表和产品表
是多对多链接的(有一个pivot
产品用户

在这种情况下

用户1可以输入名为“硬件”的产品 因此在透视表中,
product\u id:1和user\u id:1

用户2还可以输入名为“硬件”的相同产品 所以在透视表中,
product\u id:2和user\u id:2


这是一个好方法吗?我现在不认识拉威尔。请帮忙。谢谢

是的,这是一个好方法,但我建议您使用“公司”而不是“用户”。这样命名对每个人来说都很清楚


你可能想读一读关于关系的书。这些示例也非常有用且易于理解。

除了这不是一个PHP、Laravael或MySQL(作为产品)问题之外,真正的问题是这种多对多关系代表什么

这都是关于一般数据库模式设计的。我们不能告诉你这是对还是错,因为我们不知道这意味着什么

如果你能造出这样的句子:“一个用户拥有/拥有零个或多个产品”,同时“一个产品被零个、一个或多个用户使用/属于零个、一个或多个用户”,那么这就很好地表明需要多对多关系

但也有例外,多对多关系不仅仅是一个链接表。因为如果用户购买了一个产品,那么这很可能会稍微复杂一点

e、 在网上商店,一个用户可以进行一次或多次购买,但一次购买只属于一个用户。采购确实包括一个或多个产品,并且a产品可以是一个或多个采购的一部分。还有账单、运输和所有相关的东西。在这种情况下,你可以做一个用户和产品之间的直接关系,但它告诉你什么?如果一个用户不止一次地购买一个产品怎么办

在某些情况下,您可能认为多对多是一个好主意,但事实并非如此(见上文),因为您创建了冗余数据和/或破坏了数据完整性。避免这种情况的过程称为规范化:

多对多关系的一个很好的例子是
用户
特权
。 有用户,也有用户可以拥有的特权。因此,一个用户可以拥有零、一个或多个权限,并且一个权限可以应用于零、一个或多个用户

因此,如果你问
产品\用户
是否是一个好方法,真正的答案是:这取决于