sql关系,连接几类
sql relations, connecting several categories
我希望单个估值能够有多个类别(或只有一个)。类别 table 是我预先填充的类别,如葡萄酒等。所以我的问题是如何才能实现这一点?我需要另一个 table 吗?
谢谢!
所以一个 Valuation 有很多 Categories,一个 Category 有很多 Valuations?
这就是我们所说的 many:many 关系,处理它的典型方法是使用另一个 table,ValuationCategory*,它有一对 Id - ValuationId 和 CategoryId
在 Valuation 和 Category 中,Id 是主键。在 ValuationCategory 中,每个 Id 都是两个父 table 的外键。在 ValuationCategory 中,每个 Id 可以出现不止一次,但是一对 id 是唯一的,因此经常用作 ValuationCategory table
的复合主键(两列组成它)
Valuation 1 ----- M ValuationCategory M ----- 1 Category
ValuationCategory 也可以有自己的列,比如“该估值在该类别中首次被认可的日期”。您添加到 ValuationCategory 的列越多,它就越开始成为“table 本身”,就像 Order 在 Person 和 Product 之间是它自己的 table(许多人购买许多产品,order/orderdetail 类型设置映射了两者,但存储了一堆与实际 ordering/fulfillment 过程相关的其他东西)所以有一点 ValuationCategory 可能不再是“table 只是分解 many:many 关系”,可能是关于它可以回答的问题不仅仅是元信息(例如 - “估值何时分类”只是元,但是“有多少分类的原因是 'correction' 作者 X 每年赚多少?”- 如果 VC 知道作者、原因、日期,它获得的外部过程知识比“x 和 y 是相关的”更多。
当它成为一个“合适的”table 时,您可能想给它一个唯一的 ID 列;你不必这样做,但如果你打算将其视为独立实体,如估价或类别,你可能希望它受到相同的对待
总而言之,我敢肯定您已经使用了这样的 table 甚至没有意识到它,它只是有更多的列
* 对我来说,这比 CategoryValuation 更有意义,但这取决于您的观点;如果类别是重要的事情而估值不是那么 CategoryValuation 工作。如果估值是焦点对象,最好先命名它..
我希望单个估值能够有多个类别(或只有一个)。类别 table 是我预先填充的类别,如葡萄酒等。所以我的问题是如何才能实现这一点?我需要另一个 table 吗?
谢谢!
所以一个 Valuation 有很多 Categories,一个 Category 有很多 Valuations?
这就是我们所说的 many:many 关系,处理它的典型方法是使用另一个 table,ValuationCategory*,它有一对 Id - ValuationId 和 CategoryId
在 Valuation 和 Category 中,Id 是主键。在 ValuationCategory 中,每个 Id 都是两个父 table 的外键。在 ValuationCategory 中,每个 Id 可以出现不止一次,但是一对 id 是唯一的,因此经常用作 ValuationCategory table
的复合主键(两列组成它)Valuation 1 ----- M ValuationCategory M ----- 1 Category
ValuationCategory 也可以有自己的列,比如“该估值在该类别中首次被认可的日期”。您添加到 ValuationCategory 的列越多,它就越开始成为“table 本身”,就像 Order 在 Person 和 Product 之间是它自己的 table(许多人购买许多产品,order/orderdetail 类型设置映射了两者,但存储了一堆与实际 ordering/fulfillment 过程相关的其他东西)所以有一点 ValuationCategory 可能不再是“table 只是分解 many:many 关系”,可能是关于它可以回答的问题不仅仅是元信息(例如 - “估值何时分类”只是元,但是“有多少分类的原因是 'correction' 作者 X 每年赚多少?”- 如果 VC 知道作者、原因、日期,它获得的外部过程知识比“x 和 y 是相关的”更多。
当它成为一个“合适的”table 时,您可能想给它一个唯一的 ID 列;你不必这样做,但如果你打算将其视为独立实体,如估价或类别,你可能希望它受到相同的对待
总而言之,我敢肯定您已经使用了这样的 table 甚至没有意识到它,它只是有更多的列
* 对我来说,这比 CategoryValuation 更有意义,但这取决于您的观点;如果类别是重要的事情而估值不是那么 CategoryValuation 工作。如果估值是焦点对象,最好先命名它..