sql关系,连接几个类别

问题描述

我希望一个评估可以具有多个类别(或只有一个类别)。类别表是我要预先填写葡萄酒等类别的表。所以我的问题是如何使之成为可能?我需要另一个桌子吗?

谢谢!

解决方法

那么一个评估有很多类别,而一个评估有很多评估吗?

这就是我们所说的多对多关系,典型的处理方式是拥有另一个表ValuationCategory *,该表具有一对ID,即ValuationId和CategoryId。

在“评估”和“类别”中,Id是主键。在ValuationCategory中,每个ID是两个父表的外键。在ValuationCategory中,每个ID可以出现多次,但是一对ID是唯一的,因此通常用作ValuationCategory表的组合主键(包含两列)

Valuation 1 ----- M ValuationCategory M ----- 1 Category

ValuationCategory也可以有其自己的列,例如“也许此估值首次在此类别中被认可的日期”。您添加到ValuationCategory中的列越多,它就越会变成“自己的表格”,例如Order是其在Person和Product之间的表格(许多人购买很多产品,order / orderdetail类型设置将两者映射但存储一堆与实际订购/完成过程相关的其他东西),因此,ValuationCategory可能不再是“仅分解多对多关系的表”,大概可以回答感兴趣的问题不仅是元信息(例如-“何时对估值进行分类”只是元数据,而是“作者X每年进行多少次带有“更正”原因的分类?”-如果VC知道作者,原因是,这是获取外部流程知识的日期,而不仅仅是“ x和y相关”。

就其本身而言,它变成一个“适当的”表时,您可能希望为其提供自己的唯一ID列;您不必一定要这么做,但是如果您要将其视为独立的实体(如“评估”或“类别”),则可能希望将其视为相同

总的来说,我确定您使用了这样的表,甚至没有意识到它,它只有更多的列


*对我来说,比CategoryValuation更有意义,但这取决于您的观点;如果类别是重要的而评估不是,则CategoryValuation起作用。如果“评估”是关注的对象,则最好将其命名。.

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...