Пожалуйста, извините за заголовок, у меня возникли проблемы с формулировкой моего вопроса без излишней наглядности.
В моем приложении есть такие таблицы:
контакты
свойства
события
Я добавляю метод прикрепления примечания к элементам в приведенных выше таблицах.Мне бы хотелось, чтобы одна заметка могла ассоциироваться с контактом, свойством или событием (или их комбинацией).
В настоящее время моя таблица notes выглядит следующим образом:
noteID int
noteCreated datatime
noteContent text
userID int ( идентификатор пользователя, создавшего заметку )
contactID int
propertyID int
eventID int
Указанная часть выделена жирным шрифтом.Прямо сейчас, когда я создаю заметку для события , я просто вставляю заметку и также устанавливаю eventID .Если событие также относится к контакту , я также могу добавить contactID (будут установлены contactID и eventID).Хотя это работает, я думаю, что это неэффективно и не нормализовано должным образом.
Я пытаюсь создать отношение «один ко многим», проблема в том, что часть «многие» может иметь разные целевые таблицы.В то же время я хочу уменьшить количество запросов, необходимых для выбора или вставки заметки.
Я думал создать таблицу, которая соединяет их вместе, а затем присваивает свойствам, контактам и событиям свой уникальный targetType.это остается неизменным.Но я все еще чувствую, что это не лучший способ сделать это.В качестве альтернативы я могу создать отдельную таблицу отношений для каждой целевой таблицы (notes_properties, notes_contacts и т. Д.).
noteID int
targetID int
targetType int
Буду признателен за большую помощь.Спасибо:)