Таблица поиска SQL, где есть несколько входящих кодов - PullRequest
0 голосов
/ 29 мая 2018

SQL Lookup Мне нужно создать справочную таблицу, которая позволит использовать несколько возможностей «сопоставления с». Т.е. найти текстовый код, основанный на входящем тексте, скажем, из Огайо или Вермонта, с возможностью использования других позже.Мне также нужна история, чтобы в случае изменения кода в Огайо, который все еще можно было найти по дате, не мешая текущему активному коду.

txtCode | OhioCode | VACode|  … future expansion

100A    | 567BR     | Thing |

100B    | 4FJEU    | 54DS  |

Я мог бы использовать одну таблицу, но это не очень эффективно.С несколькими таблицами, по одной для каждого состояния, расширение в будущем кажется более сложным, но, возможно, таков путь?Как я могу использовать таблицу для некоторых таблиц поиска?

Так, каковы лучшие практики для того, чтобы сделать что-то подобное?

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Что такое 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 и т. д ... В зависимости от того, что вы делаете.

0 голосов
/ 29 мая 2018

Нормализованный подход будет выглядеть примерно так.Однако я не совсем понимаю вашу концепцию «активного кода».Не уверен, что это значит в отношении опубликованных данных.

create table CodeLookup
(
    txtCode varchar(10) not null
    , CodeValue varchar(10) not null
    , StateCode char(2) not null
    , DateCreated datetime not null
)

insert CodeLookup values
('100A', '567BR', 'OH', getdate())
, ('100A', 'Thing', 'VA', getdate())
, ('100B', '4FJEU', 'OH', getdate())
, ('100B', '54DS', 'VA', getdate())


select *
from CodeLookup
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...