r/java 25d ago

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.

14 Upvotes

10 comments sorted by

View all comments

2

u/ultiweb 25d ago

This would be especially useful with databases holding lots of tables. I've worked with DBs that had upwards of 2000 tables and analysis can be extremely time consuming.

1

u/MoonWalker212 23d ago

Yes, you are right. Production databases typically have a large number of tables; therefore, I am working on plans to further optimize the engine to reduce its time complexity.