Рекомендации по схеме базы данных / структуре данных для выбора значения по умолчанию с учетом списка - PullRequest
0 голосов
/ 18 апреля 2020

Извините за смутный заголовок.

У нас есть вариант использования, в котором мы можем получить 0 для многих ролей, и из этого списка нам нужно установить «значение по умолчанию»

Например, сказать мы сканируем текст документа (do c 1) на наличие ролей и находим роль x, y, z, а другой документ (do c b) находим роли a, b, y. И третий документ (сделайте c 2), мы находим роль y.

У нас есть бизнес-правило, которое говорит, что если мы находим роли x, y, z, все вместе выбираем z. Если мы найдем x, z вместе вернем не по умолчанию. Если мы найдем, выберите, независимо от того, какие другие роли с ним. И если мы найдем только одну роль, по умолчанию эта роль.

Если бы правила были жесткими и быстрыми, я мог бы легко сделать это как гигантский оператор переключения или что-то в коде, но все может измениться на лету поэтому я хотел бы сохранить это в базе данных или что-то такое, чтобы я мог просто сделать что-то вроде:

    PsuedoSelectDefault(Inputs[])
      If inputs.length == 0
        Return ""
      Else of inputs.length == 1
        Return inputs[0]
      Else 
       Return RunSomeSql(Inputs)
       // Where RunSomeSql choses the default for me.

Но я в растерянности из-за структуры этой базы данных. 1012 *

Я предполагаю, что это не новая проблема, но я не уверен, какие ключевые слова мне следует искать.

Если кто-то может указать мне правильное направление, это будет с благодарностью.

1 Ответ

0 голосов
/ 19 апреля 2020

вы можете использовать файл свойств, где вы можете сохранить правила в паре ключей и прочитать файл свойств и применить это правило в коде вместо использования операторов case или switch, так что вам не придется жестко кодировать что-нибудь. Другим подходом было бы сохранить правила в таблице и выполнить поиск по ней. Если правила минимальны, я рекомендую подход с использованием файла свойств / конфигурации, чтобы вы могли избежать вызова БД в оба конца.

...