Php 具有四个表的数据库数据交互

Php 具有四个表的数据库数据交互,php,mysql,doctrine-orm,Php,Mysql,Doctrine Orm,我有四张桌子(产品、品牌、颜色和彩色产品) -一种产品只有一个品牌 -一种颜色有一个品牌 -颜色产品有一种产品和一种颜色 我看到的问题是,一种颜色的产品引用了一种颜色和一种产品,而这两种颜色和产品都引用了一个品牌。 如果同一颜色引用的产品和颜色引用了两个不同的品牌,会发生什么情况 我想我的数据库坏了,但我不知道如何修复它。 我使用的是条令2 ORM,我在他们的文档中读到,如果可能的话,应该避免使用复合主键。你能找到解决我问题的办法吗 谢谢在我看来,一个有颜色的品牌是不必要的 它给你两个选择,将品

我有四张桌子(产品、品牌、颜色和彩色产品) -一种产品只有一个品牌 -一种颜色有一个品牌 -颜色产品有一种产品和一种颜色

我看到的问题是,一种颜色的产品引用了一种颜色和一种产品,而这两种颜色和产品都引用了一个品牌。 如果同一颜色引用的产品和颜色引用了两个不同的品牌,会发生什么情况

我想我的数据库坏了,但我不知道如何修复它。 我使用的是条令2 ORM,我在他们的文档中读到,如果可能的话,应该避免使用复合主键。你能找到解决我问题的办法吗


谢谢

在我看来,一个有颜色的品牌是不必要的

它给你两个选择,将品牌储存在产品中,或将品牌储存在产品中


我认为将品牌只存储在产品中是有意义的,这将完全解决您的问题,因为颜色与品牌完全无关,因此将品牌与颜色产品相关联并不一定有意义。

为什么颜色会有品牌?DanyCaissy说的是真的:至少说起来很奇怪。但是,如果您必须以这种方式实施,并且如果一个产品有一个品牌,一种颜色有一个品牌,并且一个约束条件是颜色产品组合与该产品和颜色具有相同的品牌,那么为什么不将对该品牌的引用存储在colorproduct表中,而不是存储在每个单独的表中呢?谢谢您的回答,但这是一个问题对我来说很重要的是,每种颜色都有一个品牌,因为不同的品牌有不同的颜色(例如,品牌a可能有深红色可用,而品牌B可能只有樱桃红可用)。当我添加一个产品时,我希望只建议该产品品牌中可用的颜色。那么您的数据库结构是错误的,颜色不应该有品牌,这是肯定的,您可以添加一个不同的表来处理允许哪个品牌有哪种颜色。非常感谢您的帮助。我会选择这个,并添加一个颜色/品牌表