这可能是一个坏主意,但我看到了这个设计,并想评估: 我有一个通过连接两个表创建的视图(基于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)添加到一般产品详细信息表中是不合适的。有什么建议? 如果您更喜欢第三个表,如何加入这三个表(一个是另一个表的子表)?
答案 0 :(得分:2)
你需要用更多的工作来折衷建筑的纯洁。将来只会将新字段粘贴到同一个表中会导致维护问题吗?如果没有,请采用较少单词的方法(只需将其粘贴!)。如果您认为额外字段会使应用程序更难以理解和改进,请引入第三个表格。
在这种情况下,我认为您可以安全地重用现有表。第三张表将比我认为合适的工作量大得多。
答案 1 :(得分:2)
我同意Michael和usr。此外,听起来第三个表的参数是使用面向对象的派生逻辑:Food类派生自Product类,他们试图将数据库与其类对齐。这种想法最终会被很多表格所取代,几乎无法维持。