在连接三个表时创建的视图,一个表与另一个表相似

时间:2012-02-08 22:44:24

标签: sql join view

这可能是一个坏主意,但我看到了这个设计,并想评估: 我有一个通过连接两个表创建的视图(基于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)添加到一般产品详细信息表中是不合适的。有什么建议? 如果您更喜欢第三个表,如何加入这三个表(一个是另一个表的子表)?

2 个答案:

答案 0 :(得分:2)

你需要用更多的工作来折衷建筑的纯洁。将来只会将新字段粘贴到同一个表中会导致维护问题吗?如果没有,请采用较少单词的方法(只需将其粘贴!)。如果您认为额外字段会使应用程序更难以理解和改进,请引入第三个表格。

在这种情况下,我认为您可以安全地重用现有表。第三张表将比我认为合适的工作量大得多。

答案 1 :(得分:2)

我同意Michael和usr。此外,听起来第三个表的参数是使用面向对象的派生逻辑:Food类派生自Product类,他们试图将数据库与其类对齐。这种想法最终会被很多表格所取代,几乎无法维持。