SQL Lookup表,其中有多个传入代码

时间:2018-05-29 19:03:30

标签: sql sql-server database database-design

SQL查找 我需要构建一个允许多个'匹配'可能性的查找表 即 根据来自俄亥俄州或佛蒙特州的传入文本查找文本代码,以后可能会有其他人。我还需要历史记录,所以如果俄亥俄代码仍然可以在日期之前找到,而不会干扰当前的活动代码。

txtCode | OhioCode | VACode|  … future expansion

100A    | 567BR     | Thing |

100B    | 4FJEU    | 54DS  |

我可以使用单个表,但这似乎不是很有效。有多个表,每个州一个,未来的扩展似乎更复杂,但也许这是要走的路?我可以使用表来查找查找表吗?

那么做这样的事情的最佳做法是什么?

2 个答案:

答案 0 :(得分:2)

标准化方法看起来更像这样。我不太了解的是你的“当前活动代码”的概念。不确定这与发布的数据有什么关系。

protected $policies = [
    // 'App\Model' => 'App\Policies\ModelPolicy',
    'App\User' => 'App\Policies\UserPolicy',
    'App\Post' => 'App\Policies\PostPolicy',
];

答案 1 :(得分:1)

什么是txtCode?

执行此操作的最标准方法是使用生效日期时间戳进行标准化查找。

 Txt_Code | State_Code | State_Value | Rec_Strt_Dt | Rec_End_Dt   | Current_Flag
 100A       OH           567BR         12/1/2000     12/03/9999     N
 100A       OH           NewValue      12/3/2000     12/31/9999     Y
 100A       VA           Thing         12/1/2000     12/31/9999     Y
 100B       OH           4FJEU         12/1/2000     12/31/9999     Y
 100B       VA           54DS          12/1/2000     12/31/9999     Y

这确实取决于您将要运行的查询类型。 (并且您可能希望时间戳在生效日期偏移1秒)

然后你可以索引state_code,txt_code + state_code,current_flag等... 取决于你正在做什么。