Теперь возникает вопрос, как это реализовать конкретно в mySQL. В частности, не пойму как сделать последнюю таблицу reference_data( ref_id, field_id, ref_data). Как вы поняли, ref_id и field_id это внешние ключи из таблицы справочников и полей. Можно ли в mySQl сделать внешний ключ field_id, таким образом, что бы значения в нем можно было выбрать из того диапазона столбцов, которые прописаны в таблице reference_field.
Вот так думаю будет более наглядно:
Таблица reference:
reference_id | reference_name | reference_description |
-------------------------------- -------------------------------- ---------
1 | Reference 1 | bla-bla-bla |
2 | Reference 2 | --//--//--//--// |
Таблица reference_field:
field_id | reference_id | field_name |
-------------------------------- --------------------------------
1 | 1 | Field 1 |
2 | 1 | Field 2 |
3 | 1 | Field 3 |
4 | 2 | Field 1 |
5 | 2 | Field 2 |
Таблица reference_data:
ref_id | field_id | field_data |
Можно ли как-то объяснить Мускулу, что если в столбце ref_id таблицы reference_data выбран id первого справочника, тобиш 1, то в столбце field_id можно было бы выбрать id только тех полей, которые относятся к Reference 1, тобиш 1, 2 и 3.?
И вообще, мне кажется что foreign key лучше брать из таблицы reference_field, ведь справочник может быть создан, а поля для него еще нет, поэтому если брать внешний ключ справочника из его первичной таблицы reference, то в field_id можно записать id любого поля, даже не относящегося к выбранному по Id справочнику. (Отредактировано автором: 20 Мая, 2013 - 06:18:32)
|