Интересно узнать, может ли кто-нибудь помочь понять, хорошо ли я использую одну таблицу с содержанием вики для нескольких объектов, поэтому:
TABLE wiki
==> wiki_id
wiki_content
wiki_language
wiki_user_id
TABLE houses
house_id
house_name
house_year
house_location
==> wiki_id
TABLE architects
arch_id
arch_name
arch_born
arch_died
==> wiki_id
Я думаю, что это может быть правильный путь, если я использую:
SELECT * FROM houses WHERE house_id = '123' INNER JOIN wiki ON houses.wiki_id = wiki.wiki_id
но у меня нет опыта работы с базами данных.
Структура wiki, по сути, идентична в обоих случаях, поэтому я ошибаюсь, используя одну таблицу вики для двух разных таблиц? Могу ли я столкнуться с проблемами в будущем в этом решении для разработки db?
Если информация о вики напрямую связана с домами и архитекторами, я не вижу проблем с их связыванием с внешними ключами. Это отношение от одного до нескольких для нескольких объектов. Пока они связаны, тогда их можно связать.
Это может быть проблема с целостностью данных, если набор вики, связанных с домами, полностью отделен от вики, связанных с архитекторами, поскольку ограничение внешнего ключа не гарантирует, что это всегда верно.
SELECT *
FROM wiki AS w
JOIN houses AS h ON w.wiki_id = h.wiki_id
JOIN architects AS a ON w.wiki_id = a.wiki_id
WHERE house_name = 'big tall house'
AND house_location = 'two blocks that way'
;
Если вы будете обращаться с домами и архитекторами в пределах одной и той же вики, я бы подумал, что именно так вы захотите это сделать.
Как у вас есть это, вы можете видеть, какие дома (и какие архитекторы) связаны с данной вики. Разделение вещей на две таблицы wiki указывает на то, что они не являются частью одной и той же вики, что может указывать на то, что ваша вики слишком "тесно связана" с вашими домами и вашими архитекторами.