Привет!
Необходимо хранить данные в виде key-value, но значние может быть различным в зависимости от N «поправок» или «уточнений». Например ключ K, по умолчанию его значение V, если установлена поправка N1 — V1, если установлена N2 — V2, если установлены обе поправки — V12. Приоритет различных комбинаций поправок должен настраиваться. Как эту задачу представить в базе данных?
Вариант в лоб: таблица с колонками
N1, N2, key, valueи серия выборок:
SELECT value FROM tbl WHERE key = 'key' AND N1 = n1 AND N2 = n2; ... AND N1 = n1 AND N2 IS NULL; ... AND N1 IS NULL AND N2 = n2; ... AND N1 IS NULL AND N2 IS NULL;
Первый минус - необходимость выполнения серии запросов, в данном случае в худшем случае четырех. Второй минус, число запросов дико растет с увеличением уточняющих параметров. Как быть-то?