如何引用可能不包含查找记录的查找表?

问题描述 投票:0回答:1

我有一个有点像参考数据的表格。但不包含所有参考数据。我们将包含 id 和 label 列的表称为“标签”。

其他业务模型表可以指定可能包含也可能不包含在标签表中的 ID。

UI显示业务模型表数据时,如果id在标签表中则显示标签值。否则只显示 id。

此外...还有一个下拉菜单可以过滤页面上显示的数据。下拉列表包含标签和未标记的 id

所以该表并不是真正的参考数据......

这是什么样的桌子?

database database-design naming-conventions
1个回答
0
投票

嗯,你所描述的是一种可疑的设计,而不是一种表:),否则我会称其为“查找”表:但我认为这个术语没有什么特别标准的东西。

为了更具体,您所描述的情况类似于翻译中发生的情况,其中翻译术语表在任何时刻都可能是部分的,即不包含每个可能术语的翻译。

但是解决这个问题的规范方法是让“查找”表完整,因为它包含所有可能的 id(所有可能的“术语”),只是关联的“标签”可以为空,并且只要没有人就保持为 NULL提供缺失的信息。

与您所描述的主要区别在于,通过这种方式,您实际上可以从任何表到该查找表都有一个适当的 FK,而如果 id 本身可能存在或可能不存在,则您不能对 id 中使用的 id 施加任何约束其他表,甚至没有存在关系的基本事实。

而且,当然,这也会对性能产生影响,因为没有 FK 通常意味着查询引擎无法对 JOIN 子句和类似子句执行优化。

© www.soinside.com 2019 - 2024. All rights reserved.