Связывание дополнительных данных со столбцом MySQL

0

У меня есть типичная таблица, например

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 лучше справиться с этой проблемой?

Теги:
entity-relationship
relational-database

2 ответа

2
Лучший ответ

Подобно тому, что сказал Дэн, относительно простой способ реализации ассоциации в 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 "), а затем запросить таблицу сбоев. Эти таблицы впоследствии могут быть объединены с использованием представления с объединением, чтобы было достаточно одного запроса.

Надеюсь, что это поможет.

0

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

скажем, если вы расширите свой пример с помощью локализованных строк, что означало бы, что fail_message станет fail_message_id, а таблица fail_message будет иметь столбцы (id, язык, сообщение)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню