在应用程序之后或在其组件之后对数据库建模是否更好?

时间:2010-07-02 18:09:19

标签: database database-design relational-database

我正在构建一个数据库,发现我有两个不同的对象,我正在尝试建模。每一个都由相同的东西(varchar和几个外键)组成,并且将在可预见的未来中这样做。

我(截至目前)将它们放在同一个表格中,带有一个额外的“类型”字段,但我想知道是否有标准做法。

编辑:为了澄清,它们也将以相同的方式使用,唯一的区别在于它们显示的位置/时间。

2 个答案:

答案 0 :(得分:1)

规则如下:

如果对象真的不同并且将以不同的方式行动,无论它们在实现中有多么相似,您都应该将它们放在两个不同的表中。

苹果和橘子。

如果对象在同一个上下文中或在聚合中相互比较,则将基类存储在一个带有代码字段的表中,并使用外键将子类存储在另外两个表中。

苹果和橘子的“水果报告”。我们有多少水果?有多少种水果来自加利福尼亚?

*注意:实际上有很多方法可以攻击数据库中的子类化问题。问题不在于您使用哪种策略,因为您将它们视为一种常见的超类型。

答案 1 :(得分:0)

您可以使用不同的模式来设计数据库。例如,您可以使用每种类型样式设计的表或每个层次设计的表来表示对象。每个人都有利有弊,但我没有看到一个人以“正确”的方式脱颖而出。

但是,根据您的设计,如果对象基本相同,我会尝试使用相同的对象并抛弃类型列。或者如果它们真的不同,似乎外键列与不同的表相关,因此您希望使用具有明确定义的主键,外键关联的不同表。