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产品可以是一个或多个采购的一部分。还有账单、运输和所有相关的东西。在这种情况下,你可以做一个用户和产品之间的直接关系,但它告诉你什么?如果一个用户不止一次地购买一个产品怎么办 在某些情况下,您可能认为多对多是一个好主意,但事实并非如此(见上文),因为您创建了冗余数据和/或破坏了数据完整性。避免这种情况的过程称为规范化: 多对多关系的一个很好的例子是
用户
和特权
。
有用户,也有用户可以拥有的特权。因此,一个用户可以拥有零、一个或多个权限,并且一个权限可以应用于零、一个或多个用户
因此,如果你问产品\用户
是否是一个好方法,真正的答案是:这取决于