DEV Community

ArisynData
ArisynData

Posted on

Foreign Keys Aren't Enough: Why Enterprise AI Needs Relationship Discovery

Modern AI systems are surprisingly good at writing SQL.

Give an LLM a database schema, and it can often generate syntactically correct queries within seconds. With Retrieval-Augmented Generation (RAG), database metadata, and function calling, connecting AI to enterprise databases has become easier than ever.

Yet many enterprise AI projects encounter the same problem after deployment:

The SQL executes successfully, but the answer is still wrong.

This isn't usually a model problem.

It's a relationship problem.


The assumption most AI systems make

Most AI-powered database assistants follow roughly the same workflow:

User Question
      │
      ▼
Schema Retrieval
      │
      ▼
LLM Generates SQL
      │
      ▼
Database Execution
      │
      ▼
Answer
Enter fullscreen mode Exit fullscreen mode

This workflow assumes something important:

The schema contains enough information for AI to understand how data is connected.

Unfortunately, enterprise databases rarely work that way.


Real enterprise databases rarely have complete foreign keys

In tutorials, relationships are simple.

Customer
    │
    ▼
Order
    │
    ▼
Invoice
Enter fullscreen mode Exit fullscreen mode

Every relationship is explicitly defined.

Every foreign key exists.

Every table follows the same modeling standard.

Production systems look very different.

A company may have:

  • an ERP system
  • a CRM platform
  • a financial system
  • a manufacturing system
  • a data warehouse
  • several legacy databases

Each system was designed independently.

Relationships frequently exist without database constraints.

For example:

  • the same customer appears under different identifiers
  • order numbers are reused across systems
  • warehouse codes connect operational databases
  • contract IDs link finance and sales data
  • relationships rely on business rules rather than foreign keys

Applications understand these connections because developers encoded them years ago.

The database itself often does not.


Why column names are unreliable

A common strategy is to infer joins from matching field names.

For example:

customer_id
Enter fullscreen mode Exit fullscreen mode

appears in two tables.

Therefore they must be related.

Sometimes that's correct.

Sometimes it's completely wrong.

Likewise,

customer_code
Enter fullscreen mode Exit fullscreen mode

and

account_number
Enter fullscreen mode Exit fullscreen mode

may represent exactly the same business entity even though their names are different.

Enterprise systems evolve over years.

Naming conventions change.

Systems are merged.

Columns are duplicated.

Temporary tables become permanent.

Column names alone cannot describe the real data model.


Relationships exist inside the data

One of the biggest misconceptions is that relationships only exist in metadata.

In reality, much stronger evidence often exists inside the data itself.

Imagine two tables:

Orders
Enter fullscreen mode Exit fullscreen mode

and

Customers
Enter fullscreen mode Exit fullscreen mode

Neither contains a foreign key.

However:

  • every customer ID appearing in Orders also appears in Customers
  • Customer IDs are unique in Customers
  • the inclusion ratio remains stable over time

That combination provides strong evidence that the relationship is real.

Similar signals include:

  • distinct value overlap
  • inclusion ratios
  • uniqueness
  • composite key candidates
  • relationship direction
  • cardinality
  • value distribution

Unlike naming conventions, these signals come directly from the data.


Discovery is only the first step

Finding candidate relationships is valuable.

Trusting them automatically is dangerous.

Enterprise environments frequently contain multiple possible join paths.

For example:

Customer
   │
Order
   │
Invoice
Enter fullscreen mode Exit fullscreen mode

may be valid.

So may:

Customer
   │
Contract
   │
Invoice
Enter fullscreen mode Exit fullscreen mode

Technically, both queries execute.

Only one answers the business question correctly.

Relationship discovery should therefore be followed by relationship governance.

Organizations need to know:

  • which relationships were verified
  • where they came from
  • how reliable they are
  • which scenarios they support
  • which path should be preferred

Without that layer, AI still has to guess.


AI needs a relationship layer

Instead of discovering relationships every time SQL is generated, enterprises should treat relationship knowledge as reusable metadata.

An effective relationship layer can:

  • detect implicit relationships across databases
  • discover candidate joins from actual data
  • measure confidence using statistical evidence
  • preserve verified relationship paths
  • expose trusted relationships to AI systems
  • update relationship knowledge as data evolves

Once this layer exists, AI no longer starts from zero every time it answers a question.

It starts with knowledge accumulated by the organization.


Beyond SQL generation

Enterprise AI discussions often focus on better prompts, larger models, or more powerful agents.

Those improvements certainly matter.

But they cannot compensate for missing relationship knowledge.

A model cannot reliably choose a relationship that has never been made visible.

Better reasoning helps evaluate evidence.

It cannot invent enterprise knowledge that the organization has never captured.

As AI becomes a permanent part of enterprise software, relationship discovery is becoming more than a data engineering task.

It is becoming part of the infrastructure that enables AI to understand how enterprise data actually fits together.

Because in enterprise databases, the most important relationships often aren't missing.

They're simply invisible.

Top comments (0)