【发布时间】:2012-02-08 22:44:23
【问题描述】:
这可能是个坏主意,但我看到了这个设计并想评估一下: 我通过连接两个表(基于 product 和 productDetail 表的产品视图)创建了一个视图。
SELECT
tP.ProductId,
tP.ProductType,
tP.Description
tPD.Statement,
tPD.Condition,
FROM
tbl_Product AS tP
INNER JOIN tbl_ProductDetail AS tPD
ON tP.ProductId = tPD.ProductId
现在,我有一个新产品类型,需要在详细信息表中添加一个新字段(例如 ExpirationDate)。一个论点是,由于这仅适用于特定产品类型,因此我们创建了一个名为 tbl_FoodProductDetial 的新表(新表将包含 Statement、Condition 和 ExpirationDate)。直观地说,我认为在 tbl_ProductDetail 中包含这个字段更好,所以我们只需要在视图中添加额外的字段,而不用担心任何新的变化。但反对这一点的论点是在一般产品详细信息表中添加字段 (ExpirationDate) 是不合适的。有什么建议么? 如果你更喜欢第三张表,如何加入这三张表(一个是另一个的子表)?
【问题讨论】:
-
我认为将
expirationDate添加到tbl_ProductDetail很好。即使只有一些产品有过期日期,该字段仍然与所有产品相关,因为它告诉您它们不会过期。 -
@MichaelFredrickson,非常有效的观点!
-
加入很简单:
LEFT JOIN tbl_FoodProductDetial tFPD ON tFPD.ProductId = tP.ProductId