2010-11-29 2 views
0

У меня есть типичная таблица, например.Связать дополнительные данные с столбцом MySQL

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

ответ

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

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

0

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

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

Смежные вопросы