У меня есть типичная таблица, например
id(int) name(varchar) address(varchar) date(datetime)
У меня также есть таблица, которая ссылается на функции валидации для каждого из них, например
id(int) function(varchar) fail_message(varchar)
1 email Please enter a valid email address
2 required This field can not be left blank
Я хотел бы иметь возможность связать каждый столбец из первой таблицы с одним или несколькими из этих валидаторов.
Единственный способ, которым я могу это сделать, - это заполнить идентификаторы именами столбцов, например. (имя столбца: электронная почта, 1; 2) и отслеживать его через PHP, но это кажется очень грязным.
Есть ли хороший способ сделать это с реляционными базами данных? Может ли реализация NoSQL лучше справиться с этой проблемой?
Подобно тому, что сказал Дэн, относительно простой способ реализации ассоциации в sql состоял в следующем:
id(int) function_id(int) col_name(varchar)
1 1 address
2 1 second_address
3 2 address
4 2 name
И затем, когда вы хотите выполнить проверку отказа, используйте приведенную выше таблицу, чтобы связать сообщение об ошибке с именем столбца (например, "select function_id from above_table where col_name =" address "), а затем запросить таблицу сбоев. Эти таблицы впоследствии могут быть объединены с использованием представления с объединением, чтобы было достаточно одного запроса.
Надеюсь, что это поможет.
поместите это в другую таблицу, которая описывает столбцы для таблиц странно, это очень похоже на расширение таблицы, в которой перечислены столбцы таблицы с дополнительными столбцами
скажем, если вы расширите свой пример с помощью локализованных строк, что означало бы, что fail_message станет fail_message_id, а таблица fail_message будет иметь столбцы (id, язык, сообщение)