Я думаю, что это очень сложная проблема, потому что вы можете вывести отношение «многие ко многим», что является бессмысленным в контексте вашего приложения.
Например, таблица Person может иметьвнешний ключ к таблице, PostalAddress (описывающий, где они живут) и внешний ключ к таблице CoffeeMachine (описывающий, какую кофемашину им разрешено использовать).
Опираясь на наличие таблицы с внешними ключами длядве другие таблицы могут привести вас к выводу, что существует много-много-многозначная связь между PostalAddress и CoffeeMachine (кофемашины, используемые людьми, живущими по определенным адресам), которая, вероятно, не имеет отношения к контексту приложения.
Вы также не должны полагаться на таблицы связей, имеющие только внешние ключи, с другими таблицами, поскольку могут существовать другие атрибуты, которые описывают что-то об отношениях (например, роль, которую человек выполняет в конкретном проекте).1008 * Хотя мы используем таблицы ссылок для моделирования отношений многие ко многимps, я не думаю, что в такой таблице есть что-то такое, что позволяет вывести обратное.