关系表主要包含两列:IDTABLE1
和IDTABLE2
。
只有关系表之间似乎有变化的是这两列的名称和表名。
如果我们创建一个表Relationships
会更好吗?在此表中我们放置3列:
TABLE_NAME
,IDTABLE1
,IDTABLE2
,然后将此表用于所有关系?
这是Web /桌面应用程序开发中的一个好/可接受的解决方案吗?这会有什么缺点?
注意:
谢谢大家的反馈。我很感激。
但是,我认为你有点太过分了......每个解决方案都有效,直到有一点
由于数据存储简单文本文件在某一点上是好的,所以比MS Access要好,比SQL Server,比...更好
说实话,我还没有看到任何论据说明为什么这个解决方案对于小型项目(数据库大小为几GB)不利。
答案 0 :(得分:13)
这将是一张桌子的怪物;这也很麻烦。在性能方面,这样的表不是一个好主意。而且,外键不可能添加到这样的表中。我真的看不出这样的解决方案有很多好处。
答案 1 :(得分:8)
糟糕的主意。
如果IDTABLE1
可以在任何表格中包含id
,您将如何强制执行外键?
要在连接上实现可接受的性能而不需要加载不必要的IO来引入完全不相关的行,您需要一个带有前导列TABLE_NAME
的复合索引,它基本上最终会将表分成几个部分。
显然,即使进行了这种伪分区,你仍然会在表/索引中浪费大量空间,只重复每行的表名。
答案 2 :(得分:0)
这不是一个很大的IF,你只会存储2个ID字段吗?如果我有StudentCourse(和更好的注册)表,其中包含StudentID&课程ID,但不会在此表中输入,因为并非所有学生都在课程的第一天注册。将此列添加到已经膨胀的表中似乎是一个坏主意,其中大多数记录将为空。
单个表的好处可能是应用程序能够允许用户/管理员使用数据创建这些关系(类似于具有单个查找或引用列表表)并且避免必须创建新表解决这些用户创建的参考。需要动态查询也可能会受益。需要此类动态数据结构要求的应用程序可能更适合无模式或nosql数据库。