Если у меня есть три таблицы:
music_genres
-----------
music_type_id
genres
[other unique fields]
minerals
--------
mineral_id
mineral
[other unique fields]
verbs
-----
verb_id
verbs
[other unique fields]
и они заполнены:
rock
jazz
funk
punk
rock
boulder
stone
shale
rock
wobble
shake
vibrate
Теперь предположим, что я отображал веб-страницу для каждого из этих элементов, каждый из которых использовал отдельный шаблон, и сохранил эту информацию в следующей таблице:
pages
-----
page_id
page_url
template_url
foreign_key_id
с такими данными, как:
/page/music-genres/rock/
/music-genres-template.html
1
/page/verbs/rock/
/verb-template.html
1
/page/minerals/rock/
/mineral-template.html
1
/page/minerals/rock/images/
/mineral-images-template.html
1
Шаблоны будут знать, что внешний ключ относится к конкретной связанной таблице, поэтому шаблон минералов со знанием дела запрашивает таблицу минералов для других полей этой таблицы. Однако у меня нет ссылочной целостности. Если камень удаляется из таблицы минералов, я не могу использовать каскадное удаление для удаления строк со страниц, поскольку внешние ключи не уникальны. Я могу придумать множество способов безупречно обойти это:
- Эмуляция каскадных удалений с помощью триггеров
- Сохранение типа элемента в каждой строке таблиц music_types, минералов и глаголов и использование этого дополнительного внешнего ключа
- Сохранение соответствующего имени таблицы в таблице страниц
- Поддержание целостности базы данных с помощью PHP и т. Д.
Я думаю, что должен быть лучший способ хранения моих данных или поддержания целостности базы данных. Есть предположения?