通过魔术表的关系

时间:2009-12-28 13:03:25

标签: sql database relational

我遇到了一个有趣的SQL表(列出的列名):
From_TableName | From_Id | To_TableName | To_Id

据我所知,该表用于数据库中的所有表关系。数据库中没有很多数据(前面提到的表中超过10000行),因此,我猜,性能并不重要。我不是SQL专家,所以我决定在这里问一下:我应该将它发送给DailyWTF,还是在某些情况下这是一个可行的解决方案?

我的想法:我认为这种做法没有任何优势。当然,你只需要一张桌子就可以了解你所有的关系,但这不是一个好处。当你创建一个新表时,我不确定是否会有更少的工作量。除非你想让你的用户做任何事情,否则必须有某种验证逻辑(什么样的关系是有效的),你需要更新它。

4 个答案:

答案 0 :(得分:2)

这很可能用于映射应用程序层中的类似实体的对象(希望)而不是sql数据库本身。

即使没有推荐,我之前也看过这些方法。

这可能导致一些严重的性能问题,但正如您所说,数据库非常小。

我不认为这完全等于 DailyWTF

答案 1 :(得分:1)

我曾经在这样的系统上工作,用户可以随时添加新的表和关系,而无需开发人员的参与。

答案 2 :(得分:0)

我在自定义ORM中看到了类似的设计。

如果:

,这是有道理的
  • “表名称”读作“类名”
  • 所有类实例都存储在单独的表中
  • 实际表包含类属性

答案 3 :(得分:0)

使用单独的表来包含关系信息的方法并不罕见。许多框架(例如Rails)使用它们来存储多对多关系。但是,在这些情况下,每个关系通常只有一个表,表中只有两个ID。

话虽如此,我之前没有见过这种方法,在这种方法中,不是每个关系都有单独的表,所有关系都收集在一个中。与我刚才描述的方法相比,这种方法唯一真正的缺点是性能。通过减少表格,数据库中的优势(对于某些人而言,不管怎样)会更加混乱。

但不,绝对不是DailyWTF值得的。我对设计提出质疑,但没有嘲笑它。