如何管理用户可修改的查找表

col*_*ium 1 c# sql-server lookup-tables

我们的数据库中有一个表非常类似于标准查找表(ID,描述).但是,这个特定的不是静态的,客户端希望能够动态添加条目.预先填充的一些条目是"特殊的",因为将有代码检查它们(各种业务规则).

通常情况下,我会创建没有自动递增ID的表,因此我可以安全地知道镜像表中条目的枚举始终匹配.然后,只需检查此对象的ID是否与我正在检查的枚举值匹配.

我可以尝试相同的方法,使用不自动递增的ID和仅覆盖未动态添加的条目的枚举.当用户添加新条目时,我们很快就会遇到提出下一个ID的问题.基本上在代码中重新实现数据库的自动增量功能.

如果我切换到使用标识列,则会出现与枚举值不同步的问题.

当然,我总是可以匹配文本的"描述"属性,但由于显而易见的原因,这很糟糕.

有没有一种很好的方式来处理这样的事情? 这个问题并没有真正为我解答.

Cad*_*oux 5

除了这里给出的解决方案之外,总是有可能为所有查找外键使用完全无意义的标识,但也有一个列将查找链接到业务逻辑的枚举值:

lkpTable
PK Identity
Description
FK LogicEnum NULL

lkpLogic
PK EnumValue
LogicParamColumns
Run Code Online (Sandbox Code Playgroud)

在这种情况下,逻辑被提供而不会被用户改变.甚至可以将新查找路由到使用任何现有逻辑规则 - 因此您可以使用与现有硬编码业务规则相同的不同设置,但显示方式不同.