我正在构建一个数据库,发现我有两个不同的对象,我正在尝试建模。每一个都由相同的东西(varchar和几个外键)组成,并且将在可预见的未来中这样做。
我(截至目前)将它们放在同一个表格中,带有一个额外的“类型”字段,但我想知道是否有标准做法。
编辑:为了澄清,它们也将以相同的方式使用,唯一的区别在于它们显示的位置/时间。
答案 0 :(得分:1)
规则如下:
如果对象真的不同并且将以不同的方式行动,无论它们在实现中有多么相似,您都应该将它们放在两个不同的表中。
苹果和橘子。
如果对象在同一个上下文中或在聚合中相互比较,则将基类存储在一个带有代码字段的表中,并使用外键将子类存储在另外两个表中。
苹果和橘子的“水果报告”。我们有多少水果?有多少种水果来自加利福尼亚?
*注意:实际上有很多方法可以攻击数据库中的子类化问题。问题不在于您使用哪种策略,因为您将它们视为一种常见的超类型。
答案 1 :(得分:0)
您可以使用不同的模式来设计数据库。例如,您可以使用每种类型样式设计的表或每个层次设计的表来表示对象。每个人都有利有弊,但我没有看到一个人以“正确”的方式脱颖而出。
但是,根据您的设计,如果对象基本相同,我会尝试使用相同的对象并抛弃类型列。或者如果它们真的不同,似乎外键列与不同的表相关,因此您希望使用具有明确定义的主键,外键关联的不同表。