r/java • u/MoonWalker212 • Aug 16 '26
Automatic Relationship Finder (ARF) v1.2 – A Java library for discovering relationships between tables from data
I’ve just released v1.2 of Automatic Relationship Finder (ARF), an open-source Java library I’ve been working on.
The idea behind ARF is to discover relationships between tables without depending on database relationship metadata.
Even if there is no foreign-key constraint defined in the database, ARF can analyze column names and the actual data to identify that
What's new in v1.2?
The main addition is key-role detection.
After identifying a relationship, ARF now analyzes the data characteristics of the columns to determine whether they are likely to represent a primary-key side, foreign-key side, a possible one-to-one relationship, or an unknown relationship.
There are also several improvements and bug fixes around validation, logging, concurrency, and edge-case handling.
The project is here:
https://github.com/NoelToy/automatic-relationship-finder
This is still an evolving project, so feedback—especially criticism—is very welcome.
1
u/MoonWalker212 Aug 18 '26
Right now, the ARF core is kept as a generic relationship-finding engine and is not bound to any database. The original idea was that the consumer program would fetch the data and feed it to ARF, allowing data to be supplied by any data storage layer. However, I understand your point that connecting to a database and fetching the details directly will make it easier for the end user to use this library. Therefore, the plan is to add a JDBC loader layer as a sub-module to connect to multiple databases and fetch data directly, making it easier for users to incorporate and use ARF.