Я продолжаю сталкиваться с этой проблемой проектирования, и я пока не доволен своим решением. Проблема заключается в следующем:
У меня есть два или более объекта, таких как Люди и Собаки, и они оба связаны с таблицей Notes, в которой хранится поле сообщения и некоторые метаданные о сообщении, например, автор.
1) Первый вариант - не применять внешний ключ. Таким образом, я могу хранить FK, например, peopleId или dogId (независимо от того, что это), в том же общем поле FK, что и fkId. Затем я бы сохранил tableId в другом столбце - можно надеяться получить идентификатор таблицы из метаданных RDMS, но вы также можете получить грязный хак и явно создать таблицу, полную таблиц, которые вам придется обновлять вручную. , Это действительно небрежно, и я просто упомяну это для полноты.
2) Клонируйте таблицу Notes для каждой таблицы, которая нуждается в ней, например PeopleNotes, DogNotes, CatNotes и т. Д. Это создает довольно серьезную проблему нормализации.
Что другие люди сделали в подобных ситуациях?