Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 具有(模拟)多态关联的表上PK_Sql_Ms Access_Primary Key_Polymorphic Associations - Fatal编程技术网

Sql 具有(模拟)多态关联的表上PK

Sql 具有(模拟)多态关联的表上PK,sql,ms-access,primary-key,polymorphic-associations,Sql,Ms Access,Primary Key,Polymorphic Associations,我正在尝试在我刚刚创建的表上设置正确的索引,该表包含4个“多态关联”和一个PKID。这4个关联允许我不必将表的数量增加到数据库的四倍,并且不应在本次讨论中进行修改。我的问题是,我应该如何设置指标,以便获得最佳性能(速度、空间不是那么多)?这4个键都不是PK的候选键。更具体地说,所有4个一次只能有一个。我添加了一个PK“ID”,因为我读到添加PK,即使没有使用,也比不添加PK要好。然而,我越来越怀疑这种说法 关于该表的更多信息:访问表单强制执行仅应使用4个FK中的1个的逻辑。非开发人员没有人可以直

我正在尝试在我刚刚创建的表上设置正确的索引,该表包含4个“多态关联”和一个PK
ID
。这4个关联允许我不必将表的数量增加到数据库的四倍,并且不应在本次讨论中进行修改。我的问题是,我应该如何设置指标,以便获得最佳性能(速度、空间不是那么多)?这4个键都不是PK的候选键。更具体地说,所有4个一次只能有一个。我添加了一个PK“ID”,因为我读到添加PK,即使没有使用,也比不添加PK要好。然而,我越来越怀疑这种说法

关于该表的更多信息:访问表单强制执行仅应使用4个FK中的1个的逻辑。非开发人员没有人可以直接访问这些表。我预计,只要这个数据库还在使用,每个月就不会有超过几百个条目。假设我们使用它10年以上,平均每月500个条目(这可能比它将要多出一点),我们在10年内应该不会有超过6万个条目。基本上,这不是一个大量填充的表

数据库和表单在Access 2003上运行(是的,我知道…)

我希望这对你来说是足够的信息来帮助我。在下图中,您可以看到当前的表格结构。这四个FK分别是
nodemandementtransit
nodemandementrubrique
noamendmenttransit
noamendmentrubrique

非常感谢


更实用的设计是为您引用的所有四个子类型创建一个单一的超类型表。然后使用单个外键引用超类型表,而不是使用四个单独的FK。这是一种设计模式,您可以在大多数关于数据库设计的好书中找到,它比具有多个“可选”外键更简单、更高效。它还将为您提供更有用的主键。

更实用的设计是为您引用的所有四个子类型创建一个单一的超类型表。然后使用单个外键引用超类型表,而不是使用四个单独的FK。这是一种设计模式,您可以在大多数关于数据库设计的好书中找到,它比具有多个“可选”外键更简单、更高效。它还将为您提供一个更有用的主键。

该表在引用4个表中的一个表时不会有同样的问题吗?不会,因为引用超类型的是子类型表,而不是相反。Meh。我理解并同意这样做会更有效率。我想这使得我的问题现在有点没有意义了。那张表不也会有同样的问题,只引用4张表中的一张吗?不会,因为引用超类型的是子类型表,而不是相反的.Meh。我理解并同意这样做会更有效率。我想这使得我的问题现在有点没有意义了。