【发布时间】:2018-07-01 03:07:54
【问题描述】:
我想在我的数据库(以及一张表)中存储许多不同的产品。在继承(每个具体类型的表)的帮助下,我将所有常见字段(日期、客户、订单 ID)保留在父表中,并为一种产品创建了一个子表。
一个子表 => 它包含许多具有相同和不同字段的不同产品
ProductOne = {A,B,**C**}
ProductTwo = {A,B,**D**}
ProductThree ={A,B,**F**}
现在我做了 TableAllProduct 和表格的字段是 {A,B,C,D,F}
之所以选择这个设计,是因为我正在考虑我未来的新产品,例如,如果我们有这些现有字段{A,B,C,D,F}的新产品,那么我们应该能够存储新的TableAllProduct 表中的产品数据,无需任何软件升级(而是根据需要新代码的继承方法创建新表)
TableAllProduct 可以容纳三个不同的产品 ProductOne = {A,B,C} ProductTwo = {A,B,D} ProductThree ={A,B,F}
下一步是将数据存储在 TableAllProduct 中
根据给定的场景,ProductOne 和 ProductTwo 具有公共字段 {A,B} 但 A 字段存储来自 ProductOne 以及 ProductTwo 的数据
ProductOne 有以下选项=={data__A_1,data__A_2,data__A_3}
ProductTwo 有以下选项 =={data__B_1,data__B_2 } 我从其他桌子带来的(曼尼到曼尼)
这里我们打破了RDBMS的规则,因为我在一列需要多个外键,但RDBMS不支持,删除/编辑外键职责/功能可以使用DELETE_trigger(它将检查类别表中的记录)
这样,我可以在表中存储现在和将来的多个产品。
这种方法有什么缺点?
是否有任何其他可能的解决方案可以用更好的方式解决这个问题。(我知道实体-属性-价值模型,但在我们的情况下,产品不会每天/每周改变基数,而且 EVA 太复杂而无法维护).谢谢
【问题讨论】:
标签: c# database-design