Как правило, у вас есть промежуточная таблица между зданием и кровлей, а также зданием и экстерьером, если вы хотите, чтобы ссылка шла обоими путями, или имели отношения один ко многим или многие ко многим (не уверен, применимо ли это в твоем случае).
В вашем случае вы создадите новое здание, кровлю и внешние объекты без ссылок друг на друга. Поскольку они не имеют ссылок, нет ограничений FK при добавлении ваших объектов. Затем вы добавляете запись в таблицу buildingRoofing, которая связывает здание с кровлей, и запись в таблице buildingExteriors, которая связывает здание с экстерьером. Наконец, вы фиксируете свои изменения.