我正在尝试了解如何实现值将更改的查找表。 例如: 如果我有:
EmpType Type
1 FullTime
2 PartTime
3 Casual
基于上表,我生成了其他表。 但有一点,EmpType发生了变化:
EmpType Type
1 Contractor
2 PartTime
3 Casual
查找表是否应该有PrimaryKey?
它们是否与缓慢变化的尺寸相似?
它们应该与其他表相关吗?
如果有人能指出我如何使用查找表的正确方向,那就太棒了。我发现很多文章都在谈论不使用MUCK或Generic Lookup表,但我找不到任何关于如何正确使用它们的文章。
感谢。
答案 0 :(得分:3)
这有点抽象,所以我希望我能正确解释自己。
使用查找表的原因是您不希望(文本/语义)值分散在每个相关表中。 查找表不仅仅是帮助程序,以避免在许多表中保存更长的描述/值。基本上,这是一个节省空间的工具。
所以在你的例子中,如果你有5个表都有你的EmpType链接,而不是在这5个表中键入FullTime,你现在可以放1,从而节省空间。 然而,这意味着,正如您已经注意到的那样 - 如果1的“值”从FullTime变为承包商,则所有引用(现在,历史和未来)都将具有值Contractor。
这是查找表的预期行为和设计点。 如果值发生变化,则意图允许所有关联的值发生变化。 这意味着您默认情况下没有更改历史记录,并且无法看到值已从FullTime更改为Contractor
如果这不是预期的行为,那么你应该看看另一种模式。
我无法从您的数据中看到想要的行为是什么;这意味着为什么FullTime更改为Contractor对你来说是“坏”。
如果不是所有的FullTime都应该是承包商,那么您需要一个额外的表格,并将承包商/非承包商的FullTime / PartTime / Casual分开。
或者您可以添加另一个EmpType(4)并将其用于Contractor,并在相关时将FullTime从1更新为4。
如果您缺少历史记录,则可以创建更改表以跟踪对具有先前值和时间戳的EmpyType所做的更改。
等等......