Php 不使用多对多关系有什么好处吗
我被要求根据给定的指令为作业创建一个小程序。 我得到了两个必须创建的表:Php 不使用多对多关系有什么好处吗,php,sql,database,many-to-many,relational-database,Php,Sql,Database,Many To Many,Relational Database,我被要求根据给定的指令为作业创建一个小程序。 我得到了两个必须创建的表: 产品表,包含两个字段:id和name, 产品的类别表,包含两个字段:产品id和名称 据说产品可以有很多种类 我还收到了以下产品示例: 产品:耐克鞋,类别:运动鞋,类别:新款 产品:匡威鞋,类别:运动鞋,类别:新款 等等 为了完成任务,每个示例条目都有两个类别,最后我必须调用数据库以获取属于a类别但不属于b类别的产品 我首先想到的是多对多关系,在我看来,它仍然几乎是唯一的选择。但由于我不得不这样做,我用重复的分类方法,每个分
产品
表,包含两个字段:id
和name
,产品的
类别
表,包含两个字段:产品id
和名称
据说产品可以有很多种类
我还收到了以下产品示例:
等等
a
类别但不属于b
类别的产品
我首先想到的是多对多关系,在我看来,它仍然几乎是唯一的选择。但由于我不得不这样做,我用重复的分类方法,每个分类只能分配给一个产品
最后,我必须给出他们给我的方法的优缺点,并提出备选方案
问题是:有没有真正的专业人士可以像这样设置数据库?我认为查询少量数据可能会快一点,但我不确定这是否有利于我们得到的缺点。我想不出任何不定义关系的“优点”。如果关系是
产品具有一对多类别
,那么它是一个多对多关系,我们尝试以任何其他方式实现它都是愚蠢的。否则,我们无法保证唯一性、强制外键关系或创建访问数据的有效方法。如果一个产品可以有许多类别,而一个类别可以有许多产品,那么它确实是一个M:M关系。出于有用的建模目的,您可以使用映射产品和类别的表将其分解为两个1:M关系together@CaiusJard我发布的第一个产品和第二个产品都属于名为New
的类别。哦,它们都属于New
和运动鞋
或运动鞋
的类别。是的,对不起,我在“类别:运动鞋”和“类别:运动鞋”上停了下来,发现它们属于不同的类别。很少有什么好的理由这样做(基本上你是说你计划在每一行上都有一点CSV,列出一个产品可以包含的所有类别)。一开始它可能会让事情变得更简单,但很快就会让你感到痛苦。好吧,我不打算像你提到的那样将这个应用程序扩展到很多领域。我相信这些都是正确的。这是我面试时必须做的一件小事。我只是想知道不使用多对多有什么好处。但你似乎同意我的看法,没有。。。谢谢你的详细回答!