Использование одной вики-таблицы для нескольких предметных таблиц - PullRequest
0 голосов
/ 05 декабря 2009

Интересно узнать, может ли кто-нибудь помочь понять, хорошо ли я использую одну таблицу с вики-контентом для нескольких предметов, поэтому:

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

но у меня нет опыта работы с базами данных.

Структура вики в обоих случаях практически одинакова, поэтому я ошибаюсь, используя одну вики-таблицу для двух разных таблиц? Могу ли я столкнуться с проблемами в будущем с этим дизайнерским решением БД?

Ответы [ 3 ]

1 голос
/ 05 декабря 2009

Если вы работаете с домами и архитекторами в одной и той же вики, я подумаю, что именно так вы и захотите.

Таким образом, вы можете видеть, какие дома (и какие архитекторы) связаны с данной вики. Разделение элементов на две вики-таблицы означало бы, что они не являются частью одной и той же вики, что может указывать на то, что ваша вики слишком «тесно связана» с вашими домами и вашими архитекторами.

1 голос
/ 05 декабря 2009
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'
;
1 голос
/ 05 декабря 2009

Если вики-информация напрямую связана с домами и архитекторами, то я не вижу проблем, связывая их с внешними ключами. Это просто отношение один ко многим для нескольких объектов. Пока они связаны, тогда хорошо связать их.

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

...