真的需要关系表吗?

时间:2011-02-08 11:47:35

标签: sql database

关系表主要包含两列:IDTABLE1IDTABLE2

只有关系表之间似乎有变化的是这两列的名称和表名。

如果我们创建一个表Relationships会更好吗?在此表中我们放置3列:
TABLE_NAMEIDTABLE1IDTABLE2,然后将此表用于所有关系?

这是Web /桌面应用程序开发中的一个好/可接受的解决方案吗?这会有什么缺点?

注意:
谢谢大家的反馈。我很感激。
但是,我认为你有点太过分了......每个解决方案都有效,直到有一点 由于数据存储简单文本文件在某一点上是好的,所以比MS Access要好,比SQL Server,比...更好 说实话,我还没有看到任何论据说明为什么这个解决方案对于小型项目(数据库大小为几GB)不利。

3 个答案:

答案 0 :(得分:13)

这将是一张桌子的怪物;这也很麻烦。在性能方面,这样的表不是一个好主意。而且,外键不可能添加到这样的表中。我真的看不出这样的解决方案有很多好处。

答案 1 :(得分:8)

糟糕的主意。

如果IDTABLE1可以在任何表格中包含id,您将如何强制执行外键?

要在连接上实现可接受的性能而不需要加载不必要的IO来引入完全不相关的行,您需要一个带有前导列TABLE_NAME的复合索引,它基本上最终会将表分成几个部分。

显然,即使进行了这种伪分区,你仍然会在表/索引中浪费大量空间,只重复每行的表名。

答案 2 :(得分:0)

这不是一个很大的IF,你只会存储2个ID字段吗?如果我有StudentCourse(和更好的注册)表,其中包含StudentID&课程ID,但不会在此表中输入,因为并非所有学生都在课程的第一天注册。将此列添加到已经膨胀的表中似乎是一个坏主意,其中大多数记录将为空。

单个表的好处可能是应用程序能够允许用户/管理员使用数据创建这些关系(类似于具有单个查找或引用列表表)并且避免必须创建新表解决这些用户创建的参考。需要动态查询也可能会受益。需要此类动态数据结构要求的应用程序可能更适合无​​模式或nosql数据库。