Мне кажется, я понимаю, о чем вы спрашиваете. У вас есть два типа объектов, которые могут обмениваться некоторой общей информацией между ними (в частности, «С чем я связан?»), Но у вас есть много принципиальных отличий (я мог бы представить устройства на базе IP, имеющие поле для «IP Адрес ", в то время как на основе Serial не будет).
Возможно, вы захотите провести исследование термина " наследование одной таблицы ". Это метод, при котором одна таблица содержит все поля для обоих типов объектов. Некоторые из этих полей будут общими для обоих типов, но некоторые из них будут применимы только к одному типу или другому. Под STI это ожидается; У вас обычно есть поле, которое указывает, какой «тип» сущности представляет запись, а все неприменимые поля будут установлены в NULL.
Кроме того, вы можете сделать аналогичную вещь с несколькими таблицами. Вы можете иметь таблицу оборудования для представления общих данных, а затем таблицы IPHardware и SerialHardware для представления данных, характерных для каждого типа. Две последние таблицы могут затем иметь ссылку внешнего ключа на таблицу оборудования, чтобы сделать ссылку на их собственные «общие» данные. Другие таблицы обычно ссылаются на таблицу «Оборудование», а затем переходят к таблицам «подкласса» в зависимости от их потребностей и типа оборудования.