В моей базе данных есть несколько категорий, к которым я хочу прикрепить пользовательские текстовые «заметки». Например, запись в таблице высокого уровня с именем jobs
может иметь несколько примечаний, написанных пользователем, но то же самое может быть и запись более низкого уровня в sub_projects
. Поскольку все эти заметки будут иметь одинаковый формат, мне интересно, могу ли я упростить ситуацию, имея только одну таблицу заметок, а не серию таблиц, таких как job_notes
или project_notes
, а затем использовать несколько отношений «многие ко многим», чтобы связать ее к нескольким другим столам одновременно.
Если это не ошибочная идея с самого начала (дайте мне знать, если это так!), мне интересно, как лучше всего это сделать. Насколько я понимаю, я мог бы сделать это двумя способами:
- Создайте таблицу соединений «многие ко многим» для каждой более крупной категории, например
job_notes_mapping
иproject_notes_mapping
, и управляйте отношениями MtM по отдельности. Иметь единую соединительную таблицу, связанную либо с перечислением, либо с отдельной таблицей для
table_type
, которая указывает, на какую таблицу сопоставляется отношение MtM:+-------------+-------------+---------------+ | note_id | table_id | table_type_id | +-------------+-------------+---------------+ | 1 | 1 | jobs | | 2 | 2 | jobs | | 3 | 1 | project | | 4 | 2 | subproject | | ........... | ........... | ........ | +-------------+-------------+---------------+
Простите меня, если какие-либо из этих идей совершенно ужасны, но я подумал, что это может быть интересным вопросом, по крайней мере, концептуально.