How to Work Better with Foreign Keys and Virtual Keys
Introduction
Imagine your database as a city. Each table represents something from that city - Neighborhoods, Streets, Homes, and People. Foreign keys are the roads that connect them. Without those roads, each area still exists, but no one knows how to travel between them.
Foreign keys make sure your data stays connected and consistent.

In this article, we’ll go through what they are, why they’re useful, and what you can do if your database doesn’t have them.
Let's see how DbSchema helps you rebuild those connections using Virtual Foreign Keys.
What Are Foreign Keys?
A foreign key is simply a link between two tables. It says, “this value in one table must exist in another.”
Another example, every order should belong to a real customer - not to something random or missing.

links each order to a real customer
That rule keeps your data organized. If someone tries to insert an order for a customer that doesn’t exist, the database stops it. That’s why foreign keys are called constraints - they protect your data from breaking its own logic.
Why Are Foreign Keys Useful?
Foreign keys help your database behave like a system, not a collection of separate tables. They make your work easier in several ways:
- Consistency: they prevent mistakes like missing references or duplicate data.
- Clear relationships: you can instantly see how tables connect.
- Safer updates: if a customer is deleted, the related orders can also be removed automatically.
- Better queries: tools like DbSchema or SQL builders know how to join tables correctly.
- Readable diagrams: your schema looks structured, not random.
Without foreign keys, you lose that safety net. Developers must guess how tables relate, which often leads to confusion or bad queries.
When Databases Don’t Use Foreign Keys
Not every database supports foreign keys. For example:
- NoSQL systems like MongoDB or Cassandra store data differently.
- Some SQL databases skip constraints for performance or legacy reasons.

The downside? You can’t always see how your data is related. When you open such a schema, you just see a list of tables - no visible structure.
That’s where Virtual Foreign Keys in DbSchema become incredibly useful.
Virtual Foreign Keys in DbSchema
DbSchema lets you define Virtual Foreign Keys right inside your model. These act like real relationships, but they exist only inside your design - not in the actual database.

enforced foreign keys
They help you:
- Visualize connections in your diagrams
- Build joins automatically in the Query Builder
- Generate HTML5 documentation that shows how tables are related
- Share those diagrams with your team or store them in Git
In short: even if your database doesn’t enforce rules, DbSchema lets you keep everything connected visually.
Example: Creating a Virtual Foreign Key
Let’s say you have a Customers
table and an Orders
table.
Both contain a column called customer_id
, but the database doesn’t define a foreign key.
Here’s what to do:
- Open your Diagram Editor in DbSchema.
- Drag a line from
orders.customer_id
tocustomers.customer_id
. - Choose “Virtual Foreign Key” when asked.
- Save the model.
You’ve now created a relationship - not in the database, but in your design. From this point, you can explore data, build queries, or generate documentation as if the foreign key existed.
Why It Matters
When teams collaborate, clarity matters more than strict rules. Even if your system doesn’t use real constraints, virtual ones help everyone understand how data fits together.
With DbSchema, you can:
- Keep your schema clean and easy to follow
- Teach others how your database works
- Generate diagrams that stay relevant and accurate
- Work with both SQL and NoSQL databases using the same visual logic
That’s the real value - clarity, even when the database itself doesn’t enforce it.
Conclusion
Foreign keys keep databases organized by showing how data connects. When they’re missing, things can quickly become messy - but tools like DbSchema help you restore that structure visually through Virtual Foreign Keys.
So, whether your database has foreign keys or not, you can still design, understand, and share it clearly.
Try it yourself: Open your database in DbSchema, create a few Virtual Foreign Keys, and see how much easier it becomes to understand your schema.