Изглежда, че искате да разграничите категориите и темите в две отделни таблици, но идентификаторите и на двете да бъдат посочени в друга таблица likes
за улесняване на потребителите да харесват категория или тема.
Това, което можете да направите, е да създадете таблица на супер-обект с подтипове categories
и topics
. Автоматично увеличеният ключ ще бъде генериран в таблицата на свръхобекти и ще бъде вмъкнат само в една от двете таблици на подтип (въз основа на това дали е категория или тема).
Таблиците с подтипове препращат към този супер-обект чрез автоматично увеличеното поле във връзка 1:1.
По този начин можете просто да свържете таблицата със супер-обекти с likes
таблица само въз основа на една колона (която може да представлява или категория, или тема) и без id
в таблиците на подтиповете ще присъства и в двете.
Ето опростен пример за това как можете да моделирате това:
Този модел би ви позволил да поддържате връзката между категории и теми, но и двете обекти, обобщени в superentity
таблица.
Друго предимство на този модел е, че можете да абстрахирате общи полета в таблиците на подтиповете в таблицата със свръхсъщност. Кажете например, че categories
и topics
и двете съдържаха полетата title
и url
:можете да поставите тези полета в superentity
таблица, тъй като те са общи атрибути на нейните подтипове. Поставяйте само полета, които са специфични за таблиците на подтиповете В таблиците на подтиповете.