Если ваша база данных не имеет отношений, определенных где-либо, кроме кода, нет реального способа угадать, как таблицы связаны друг с другом.
Хуже того, вы не можете знать тип отношений и должен ли происходить каскад обновления и удаления.
Сказав, что, если вы следовали некоторым строгим правилам именования полей внешнего ключа, то можно было бы восстановить структуру отношений.
Например, я использую схему, подобную этой:
Table Product
- Field ID /* The Unique ID for a Product */
- Field Designation
- Field Cost
Table Order
- Field ID /* the unique ID for an Order */
- Field ProductID
- Field Quantity
Отношение легко обнаружить, если взглянуть на Order
: Order.ProductID
относится к Product.ID
, и это легко определить из кода, проходящего через каждое поле.
Если у вас есть подобная схема, то, сколько вы сможете извлечь из нее, зависит от того, насколько хорошо вы будете следовать своему собственному соглашению, но она может достичь 100% точности, хотя у вас, вероятно, есть некоторые исключения (которые вы можете построить - в вашем коде или, лучше, посмотрите где-нибудь).
Другое решение заключается в том, что каждый из уникальных идентификаторов вашей таблицы соответствует своей схеме нумерации.
Скажем, ваш Order.ID
фактически следует схеме, подобной OR001
, OR002
и т. Д., А Product.ID
следует PD001
, PD002
и т. Д.
В этом случае, просматривая все поля во всех таблицах, вы можете искать записи FK, которые соответствуют каждому PK.
Если вы придерживаетесь вменяемого соглашения об именовании ваших полей и таблиц, то, вероятно, вы можете автоматизировать обнаружение отношений между ними, сохранить их в таблице и вручную выполнить исправления.
Как только вы закончите, используйте эту таблицу результатов, чтобы фактически построить отношения из кода, используя метод Database.CreateRelation()
(посмотрите документацию по Access, для этого есть пример кода).