В моем приложении я разрешаю пользователям создавать форму, содержащую любое поле формы HTML, которое они хотят (например, ввод текста, текстовое поле, выбор и т. Д.). Я хочу дать пользователям возможность определять 0 или более кумулятивных правил валидации для каждого поля (может быть до 25 различных правил проверки). Как мне это моделировать?Дизайн базы данных для проверки динамической формы поля
Вот возможное решение:
============================================================
| Id | FieldId | ValidationRuleType | ValidationRuleDetail |
============================================================
| 1 | 25 | Required | NULL |
------------------------------------------------------------
| 2 | 26 | Minimum Length | 5 |
------------------------------------------------------------
| 3 | 26 | Maximum Length | 12 |
------------------------------------------------------------
...
Используя описанную выше конструкцию, может быть, в большинстве случаев, ValidationRuleType может быть просто «Regex» (или значение из таблицы поиска, такие как ValidationRuleTypeId = 1 для " Regex ") и используйте для ValidationRuleDetail следующее:
// Added bonus of this approach is that users who know regex could define their own patterns
.{1,} // Any character, 1 or more times. Use for "Required"
.{5,} // Any character, 5 or more times. Use for "Minimum Length = 5"
.{,12} // Any character, 12 or less times. Use for "Maximum Length = 12"
Проблема в том, что это решение EAV. Это плохо, правда?
Другим возможным решением:
=============================================================
| Id | FieldId | Required | Minimum Length | Maximum Length |
=============================================================
| 1 | 25 | TRUE | NULL | NULL |
-------------------------------------------------------------
| 2 | 26 | NULL | 5 | 12 |
-------------------------------------------------------------
...
Является ли это лучше? Я противоречил тому, какой подход использовать. Любое руководство, которое я могу получить, очень ценится.
Я предпочитаю создавать правила на основе таблиц. Спасибо @ Взрывные таблетки –