Этот вопрос возник несколько раз на разных форумах в моем поиске, но ни один из них не дал краткого разрешения.Таблицы базы данных, одна таблица, ссылающаяся на несколько несвязанных таблиц
Если у меня есть следующие таблицы:
User
+- id
+- username
+- password
Article
+- id
+- title
+- content
и я хочу присоединиться к ним, с тем чтобы определить, кто создал то, что статьи, я мог бы просто добавить столбец User_ID в статье использовать в качестве Справка. С другой стороны, я добавляю промежуточную таблицу, чтобы показать, кто/когда/как, например:
User
+- ...
Article
+- ...
ChangeHistory
+- id
+- article_id
+- user_id
+- type [enum(insert, update, delete)]
+- datetime
Теперь это хорошо, но система я работаю должен быть гораздо более динамичным, в том, что новый модули могут быть легко введены и интегрированы. Так что теперь, если я добавлю СМИ таблицы мне нужно разделить ChangeHistory между Статья и Медиа, имеющие:
User
+- ...
Article
+- ...
Media
+- id
+- title
+- path
ArticleChangeHistory
+- id
+- article_id
+- user_id
+- type [enum(insert, update, delete)]
+- datetime
MediaChangeHistory
+- id
+- media_id
+- user_id
+- type [enum(insert, update, delete)]
+- datetime
Это может получить из рук быстро с введением многих модулей. Каждый модуль должен будет нести ответственность за создание и управление собственной таблицей ChangeHistory.
TL; DR: Какие методы можно изучить для создания промежуточной таблицы, которая может получать ссылки на несколько других несвязанных таблиц? Я мог бы добавить поле * record_type *, содержащее имя таблицы, к которой принадлежит запись, но это уродливо. Мне нужно что-то вроде таблицы «ID», чтобы ссылаться на таблицу, из которой она идет. Таким образом, когда/если модули добавляются или удаляются, модель не разваливается.
Любые идеи? Большое спасибо заранее.
Есть ли причина, по которой вы считаете, что «ID таблицы» лучше, чем «record_type»? –