
Last month, I faced one of those challenges that every database architect dreads: making a legacy system work with modern AI tools. A client wanted to implement Natural Language Processing (NLP) capabilities over their existing SQL database to enable business users to query data using plain English. Sounds straightforward, right? Well, not when you're dealing with a database schema that was clearly designed in the "abbreviate everything" era of software development.
Picture this scenario: You're tasked with making an AI system understand a database where every table and column name looks like it was created by someone allergic to vowels. The client's database was a masterclass in what not to do:
The Tables
The Columns - A Naming Nightmare. The situation got worse when we looked inside these tables. There was no single consistent ID column across the entire schema. Instead, we found:
AI systems, especially those using Large Language Models (LLMs), need a clear, structured "contract" to understand and interact with your application. You can think of this as a Model Context Protocol (MCP): a semantic layer that translates business concepts into data reality.
When that layer is a mess, everything breaks:
AI Systems Need Context Unlike human developers who can eventually learn that cmz_usrs means "users," AI systems rely on semantic understanding. When an AI encounters cmz_usrs, it has no inherent way to understand this refers to user data. This creates a significant barrier to natural language querying.
Relationship Discovery Becomes Impossible With inconsistent foreign key naming (user_key in one table, usr_id in another, u_ref in a third), AI systems struggle to automatically discover and understand table relationships—a critical requirement for complex queries.
Query Generation Fails When a business user asks "Show me all active users created this month," the AI needs to map "users" to cmz_usrs, "active" to ind_act, and "created" to whatever variant of creation date that particular table uses.
Since renaming tables and columns wasn't an option (too much risk, too much effort, too many dependent systems), we implemented what I call the "Translation Layer" approach using database views:
-- The Good: Clean, AI-friendly view layer
CREATE VIEW users AS
SELECT
user_key AS user_id,
nm AS name,
email_addr AS email,
cdate AS date_created,
udate AS date_updated,
hire_dt AS hire_date,
ind_act AS is_active
FROM cmz_usrs;
CREATE VIEW projects AS
SELECT
proj_num AS project_id,
proj_nm AS name,
proj_desc AS description,
own_key AS owner_id,
Date_cre AS date_created,
proj_stat AS status
FROM cmz_prjct;
CREATE VIEW sales AS
SELECT
sale_ref AS sale_id,
proj_num AS project_id,
user_key AS salesperson_id,
amt AS amount,
vDate AS sale_date,
ind_act AS is_active
FROM cmz_sls;
The Results This translation layer immediately solved several problems:
While our view-based solution worked for read operations, it came with significant limitations:
Read-Only Reality Standard database views are inherently read-only for complex transformations. This meant our AI system could answer questions like "Who are our top salespeople?" but couldn't execute commands like "Create a new project for Client X."
(Minor) Performance Implications Every query through the view layer adds a translation step, which can impact performance for complex joins across multiple views.
Maintenance Overhead Any schema changes to the underlying tables require corresponding updates to the views, creating an additional maintenance burden.
This project highlighted several critical insights:
Schema Design Has Long-Term Consequences What seemed like minor naming decisions years ago became major barriers to AI adoption. The few seconds saved by abbreviating column names cost us weeks of implementation time.
AI Integration Amplifies Existing Problems Issues that human developers could work around became showstoppers for AI systems. Poor naming conventions, inconsistent relationships, and cryptic field names all multiply in complexity when AI tries to interpret them.
Half-Measures Have Hidden Costs While our view-based solution worked, it's essentially a band-aid. We're now maintaining two schemas (the original and the view layer), with all the complexity that entails.
This experience reinforced why proper schema design matters more than ever in the AI era. Organizations need to start thinking about their databases not just as data storage systems, but as resources that AI systems need to understand and interact with.
In my next article, I'll share the comprehensive approach we developed for designing MCP-compatible schemas from the ground up: so you won't need the kind of workarounds we implemented here.
The bottom line? Every database schema decision you make today will either help or hinder your AI integration efforts tomorrow. Choose wisely.
Automate deployment, scaling, and maintenance of your database clusters to ensure peak performance and reliability.