Я не знаю, как выразить эту проблему, поэтому приношу свои извинения, если она уже решена.
У меня есть бизнес-правила, обобщенные в виде таблицы результатов с двумя входными данными. Для каждого из пяти возможных значений на одной оси и каждого из пяти значений на другой оси существует один выход. В этих 25 ячейках есть десять различных возможностей, поэтому не каждая пара входов имеет уникальный выход.
Я закодировал эти правила в TSQL с помощью вложенных операторов CASE, но их сложно отлаживать и изменять. В C # я мог бы использовать литерал массива. Мне интересно, есть ли академическая тема, которая касается преобразования логических правил в матрицы и наоборот.
В качестве примера можно перевести эту тривиальную матрицу:
A B C
-- -- -- --
X 1 1 0
Y 0 1 0
... в правилах так:
if B OR (A and X) then 1 else 0
... или, в подробном SQL:
CASE WHEN FieldABC = 'B' THEN 1
WHEN FieldABX = 'A' AND FieldXY = 'X' THEN 1
ELSE 0
Я ищу хороший подход для больших матриц, особенно тот, который я могу использовать в SQL (MS SQL 2K8, если это имеет значение). Какие-либо предложения? Есть ли термин для этого типа перевода, с которым я должен искать?