Что-то подсказывает, вы несколько усложняете свою архитектуру.
Для чего вам необходимы свои таблицы под каждое свойство?
Я так понимаю, вы хотите сделать хитрую сущность, в которой любое поле может быть любого вашего "типа" со связью с любой таблицей?) Такое по-моему не нормализуется вообще..
(ну, скорее всего можно придумать что-нибудь работающее с триггерами и процедурами - но по-моему это будет страшно и не сопровождаемо)
Выносите это в приложение или обратите внимание на nosql решение.
Можете сделать таблицу свойств сущностей, с типом свойства и его значением в виде json, например.