Relational Databases: Tables, Keys, SQL, ACID, and Common Use Cases
A relational database organizes data into tables and connects those tables through defined relationships.
This model allows organizations to store information consistently while avoiding unnecessary duplication. Users can retrieve and combine related records using SQL, making relational databases suitable for transaction-processing systems, business applications, reporting platforms, and data warehouses.
Relational database technology has existed for decades, but it remains one of the most widely used approaches for managing structured data.
What Is a Relational Database?
A relational database stores data in tables composed of rows and columns.
- A row represents an individual record.
- A column represents an attribute of that record.
- A table represents a category of entities or events.
- A relationship connects records stored in different tables.
For example, a company may maintain separate tables for customers and transactions.
Customer Table
| customer_id | company_name | address | primary_phone |
|---|---|---|---|
| 1001 | Sunrise Market | Phoenix, Arizona | 555-0101 |
| 1002 | Valley Books | Denver, Colorado | 555-0102 |
Each row represents one customer, while the columns describe that customer.
Transaction Table
| transaction_id | transaction_date | customer_id | amount | payment_method |
|---|---|---|---|---|
| 5001 | 2026-05-01 | 1001 | 125.50 | Credit Card |
| 5002 | 2026-05-03 | 1001 | 89.00 | Bank Transfer |
| 5003 | 2026-05-04 | 1002 | 210.25 | Credit Card |
The two tables are connected through customer_id.
Instead of repeating the company name, address, and telephone number in every transaction record, the transaction table stores a reference to the corresponding customer.
Relationships Between Tables
Relationships allow data from separate tables to be combined.
A query can join customer information with transaction records:
SELECT
c.company_name,
t.transaction_date,
t.amount,
t.payment_method
FROM customers AS c
JOIN transactions AS t
ON c.customer_id = t.customer_id
WHERE c.customer_id = 1001
ORDER BY t.transaction_date;This query returns a new result containing information from both tables.
The result is not necessarily stored as another permanent table. It is a result set constructed by the database in response to the query.
Common Relationship Types
One-to-one
One record in the first table is associated with one record in the second.
Example:
- One employee
- One assigned parking space
One-to-many
One record in the first table is associated with several records in the second.
Example:
- One customer
- Many transactions
This is one of the most common relational patterns.
Many-to-many
Many records in one table relate to many records in another.
Example:
- Students can enroll in several courses.
- Each course can contain several students.
This relationship is usually represented using an intermediate table:
| student_id | course_id |
|---|---|
| 101 | 201 |
| 101 | 205 |
| 102 | 201 |
The intermediate table is sometimes called a junction, bridge, or association table.
Primary and Foreign Keys
Keys identify records and define relationships.
Primary Key
A primary key uniquely identifies each row in a table.
For example:
CREATE TABLE customers (
customer_id INTEGER PRIMARY KEY,
company_name VARCHAR(150) NOT NULL,
address VARCHAR(250),
primary_phone VARCHAR(30)
);The database prevents two customer records from having the same primary-key value.
A primary key may consist of one column or a combination of columns.
Foreign Key
A foreign key references a primary or unique key in another table.
CREATE TABLE transactions (
transaction_id INTEGER PRIMARY KEY,
transaction_date DATE NOT NULL,
customer_id INTEGER NOT NULL,
amount DECIMAL(12, 2) NOT NULL,
payment_method VARCHAR(50),
FOREIGN KEY (customer_id)
REFERENCES customers(customer_id)
);The foreign-key constraint helps ensure that a transaction cannot reference a customer that does not exist.
This property is known as referential integrity.
Relational Databases and Flat Files
Relational tables and flat files can both display information as rows and columns, but they operate very differently.
A CSV file may resemble one database table, but it generally does not provide:
- Relationships between tables
- Transactions
- Concurrent access controls
- Query optimization
- Indexes
- Referential integrity
- Database permissions
- Recovery mechanisms
- Enforced constraints
Relational databases did not simply develop as larger spreadsheets or flat files. They are based on a formal relational model and provide database-management capabilities beyond tabular presentation.
Schemas and Data Types
A relational schema defines how data is organized.
It may specify:
- Tables
- Columns
- Data types
- Keys
- Relationships
- Constraints
- Default values
- Views
- Indexes
Example data types include:
- Integer
- Decimal
- Character string
- Date
- Timestamp
- Boolean
- Binary data
Data types help prevent invalid information from entering a table.
For example, a column defined as a date should not accept arbitrary free-form text without conversion.
Constraints and Data Integrity
Constraints enforce rules within a relational database.
NOT NULL
Requires a value:
company_name VARCHAR(150) NOT NULLUNIQUE
Prevents duplicate values:
email_address VARCHAR(255) UNIQUECHECK
Requires values to satisfy a condition:
amount DECIMAL(12, 2) CHECK (amount >= 0)DEFAULT
Provides a value when none is supplied:
account_status VARCHAR(20) DEFAULT 'active'Foreign-key constraint
Prevents invalid relationships between tables.
These controls improve consistency by moving important validation rules into the database.
SQL and Relational Databases
SQL is the standard language for working with relational data.
It can be used to:
- Create database objects
- Insert records
- Retrieve data
- Join tables
- Aggregate values
- Update records
- Delete records
- Define views
- Manage transactions
- Control permissions
Aggregating Related Data
A query can calculate total transaction value by customer:
SELECT
c.customer_id,
c.company_name,
COUNT(t.transaction_id) AS transaction_count,
SUM(t.amount) AS total_amount
FROM customers AS c
LEFT JOIN transactions AS t
ON c.customer_id = t.customer_id
GROUP BY
c.customer_id,
c.company_name
ORDER BY total_amount DESC;The database can combine and summarize millions of records, but performance depends on:
- Hardware and available resources
- Table design
- Indexes
- Query structure
- Data distribution
- Database configuration
- Concurrent workloads
- Storage architecture
SQL alone does not guarantee that every large query will finish within seconds.
Reducing Data Redundancy
Relational design often separates data into related tables to reduce unnecessary duplication.
Without normalization, a transaction table might repeat the customer’s name, address, and phone number on every row.
This creates several problems:
- More storage is required.
- Updating an address requires changing many records.
- Different records may contain conflicting values.
- Deleted transactions could accidentally remove the only customer information.
Separating customers and transactions reduces these risks.
Normalization
Normalization is the process of organizing relational tables to reduce redundancy and improve consistency.
It typically involves:
- Separating distinct entities
- Assigning unique keys
- Removing repeating groups
- Ensuring attributes depend on the appropriate key
- Connecting tables with foreign keys
Normalization is especially useful for transactional systems.
Denormalization
Analytical systems sometimes deliberately duplicate selected information to simplify queries and improve performance.
This is called denormalization.
Denormalization is not automatically poor design. It is a trade-off that may be appropriate when:
- Read performance is more important than update efficiency.
- The data is refreshed through controlled pipelines.
- Simpler analytical queries are required.
- Storage duplication is acceptable.
Indexes
An index is a data structure that helps the database locate records more efficiently.
For example:
CREATE INDEX idx_transactions_customer
ON transactions(customer_id);This index may improve queries that search or join transactions by customer.
However, indexes also:
- Consume storage
- Require maintenance
- Add work to inserts and updates
- May be ignored for certain queries
Indexes should be selected according to actual access patterns.
Transactions and ACID Properties
A transaction is a logical unit of work that may contain one or more database operations.
Consider transferring money between two accounts:
- Subtract money from the first account.
- Add money to the second account.
- Record the transfer.
These actions should succeed or fail together.
Relational systems commonly support ACID transaction properties.
Atomicity
A transaction is treated as one unit. Either all its required operations succeed or none are committed.
Consistency
A successful transaction moves the database from one valid state to another while respecting defined rules and constraints.
Consistency here refers to database invariants, not to every possible meaning of data quality.
Isolation
Concurrent transactions should not interfere in ways that produce invalid outcomes.
Databases provide different isolation levels that balance consistency, concurrency, and performance.
Durability
Once a transaction is committed, its results should survive subsequent failures according to the system’s durability guarantees.
ACID support is particularly important for financial, inventory, reservation, and account-management systems.
Concurrent Access
Relational databases can serve many users and applications simultaneously.
The DBMS coordinates concurrent access through mechanisms such as:
- Locks
- Transaction isolation
- Multiversion concurrency control
- Deadlock detection
- Connection management
The objective is to preserve correctness while allowing useful levels of parallel activity.
Security
Relational databases offer security capabilities such as:
- User authentication
- Roles
- Object-level permissions
- Row-level security
- Column-level controls
- Encryption
- Audit logging
- Network restrictions
- Views that expose limited data
Example:
GRANT SELECT
ON active_customer_summary
TO reporting_analyst;This grants a user or role access to a specific view rather than to every underlying table.
Security still requires careful configuration. A relational database is not secure merely because it supports these features.
Backup and Disaster Recovery
Relational database platforms provide several mechanisms for protecting data.
These may include:
- Full backups
- Incremental backups
- Transaction-log backups
- Replication
- Point-in-time recovery
- Automated snapshots
- Standby systems
- Cross-region copies
Simple exports can be useful for data exchange or small backups, but they are not a complete disaster-recovery strategy for every production system.
Recovery Objectives
Two important measures are:
- Recovery Point Objective: How much recent data the organization can tolerate losing
- Recovery Time Objective: How long the system can remain unavailable
Cloud replication does not automatically guarantee near-zero data loss. Actual recovery depends on configuration, replication mode, failure type, and service guarantees.
Relational Database Deployment Models
Relational databases can be deployed in several ways.
Desktop or embedded databases
Used within small applications or on individual devices.
Examples include SQLite and embedded database engines.
On-premises databases
Installed and operated on infrastructure owned or controlled by the organization.
Databases on virtual machines
Installed and managed by the organization on hosted or cloud virtual machines.
Managed database services
A cloud provider manages selected operational tasks such as:
- Infrastructure provisioning
- Software maintenance
- Backups
- Monitoring
- High-availability options
- Scaling features
Managed services reduce some administrative work, but the customer remains responsible for matters such as schema design, access policies, query performance, data quality, and cost management.
Cloud resources are elastic but not literally limitless. They remain subject to service quotas, architectural limits, and financial constraints.
Open-Source and Commercial Databases
Relational database products may be:
- Open source and self-supported
- Open source with commercial support
- Commercial and proprietary
- Cloud-managed services
Common relational systems include:
- PostgreSQL
- MySQL
- MariaDB
- Microsoft SQL Server
- Oracle Database
- IBM Db2
- SQLite
Selection factors include:
- Required features
- Existing expertise
- Licensing
- Workload scale
- Compatibility
- Support requirements
- Availability needs
- Cloud strategy
- Total cost of ownership
Schema Changes
Relational schemas can evolve.
Common changes include:
- Adding columns
- Creating tables
- Adding indexes
- Renaming objects
- Modifying data types
- Adding constraints
However, schema changes are not always effortless.
On large or heavily used systems, a change may:
- Lock a table
- Require data rewriting
- Affect applications
- Break existing queries
- Consume substantial resources
- Require a staged migration
Production schema changes should therefore be tested, version-controlled, and coordinated with dependent systems.
Data Migration
Migrating between relational databases does not require source and destination schemas to be identical.
Data can be:
- Mapped to different column names
- Converted between data types
- Split across tables
- Combined into new structures
- Transformed during loading
However, migrations become more complicated when platforms use different:
- Data types
- SQL dialects
- Stored procedures
- Functions
- Identity mechanisms
- Constraint behavior
- Transaction semantics
A migration requires assessment, mapping, transformation, testing, and reconciliation.
Semi-Structured Data in Relational Databases
Traditional relational models are strongest with structured data. However, many modern relational databases also support semi-structured formats such as JSON and XML.
This allows a system to combine:
- Strong relational fields
- Constraints and transactions
- Flexible document attributes
- JSON queries and indexes
For example, stable customer identifiers and account fields may use ordinary relational columns, while variable preferences are stored in a JSON column.
This hybrid approach can be useful, but excessive reliance on flexible documents may weaken the benefits of relational modeling.
Unstructured Data
Large images, audio files, and videos are often better stored in file systems or object storage.
A relational database may instead store:
- File identifier
- Storage location
- Owner
- Media type
- Creation time
- Security classification
- Processing status
Some databases can store large binary objects directly, but the decision should be based on access, backup, cost, performance, and operational requirements.
Common Use Cases
Online Transaction Processing
Relational databases are widely used for OLTP systems because they support:
- Frequent inserts and updates
- Short transactions
- Concurrent users
- Constraints
- Fast retrieval by key
- Strong integrity requirements
Examples include:
- Banking
- E-commerce
- Reservations
- Billing
- Inventory
- Customer accounts
Data Warehousing
Relational and relational-style analytical systems are widely used in data warehouses.
Analytical designs may include:
- Fact tables
- Dimension tables
- Star schemas
- Historical data
- Column-oriented storage
- Materialized views
These systems are optimized for large scans, joins, and aggregations rather than frequent individual transactions.
Content and Business Applications
Relational databases support:
- Customer relationship management
- Enterprise resource planning
- Learning management systems
- Content-management applications
- Healthcare administration
- Financial reporting
Internet of Things
Relational databases can support IoT applications when data is structured and transactional consistency is important.
However, IoT workloads vary widely. High-volume telemetry may instead use:
- Time-series databases
- Streaming platforms
- Distributed NoSQL systems
- Object storage
A lightweight relational database may also be used at the edge for local configuration or temporary storage.
Advantages of Relational Databases
Meaningful joins
Related tables can be combined to answer complex questions.
Data integrity
Types, keys, and constraints enforce important rules.
Reduced redundancy
Normalized designs reduce repeated information.
Transaction support
ACID properties support reliable changes.
Mature technology
Relational systems have extensive documentation, tooling, and professional expertise.
Powerful querying
SQL supports filtering, joining, grouping, and aggregation.
Security controls
Permissions, roles, views, and audit features support controlled access.
Backup and recovery
Mature platforms provide robust recovery mechanisms.
Limitations of Relational Databases
Rigid schemas
Strict structures may be inconvenient for rapidly changing or highly irregular records.
Horizontal scaling complexity
Some relational workloads require careful architecture to distribute across many servers.
Object-relational mismatch
Application objects and nested documents do not always map naturally to normalized tables.
Schema migration costs
Large production tables can be difficult to modify safely.
Unstructured content
Media and free-form documents generally require additional storage and processing systems.
Specialized workloads
Graph traversal, extremely fast key-value access, high-volume event storage, or flexible documents may be served more naturally by specialized databases.
These are trade-offs rather than universal failures. The appropriate choice depends on the workload.
Relational vs. NoSQL
| Consideration | Relational database | NoSQL database |
|---|---|---|
| Primary organization | Related tables | Documents, keys, graphs, or wide columns |
| Schema | Usually predefined and enforced | Often flexible or application-enforced |
| Query language | Usually SQL | Varies by product |
| Relationships | Strong join and constraint support | Varies by database model |
| Transactions | Common and mature | Varies; many support transactions to different extents |
| Scaling | Vertical and increasingly distributed | Frequently designed for horizontal distribution |
| Best fit | Structured, relational, transactional data | Specialized structures or distributed workloads |
The categories increasingly overlap. Modern relational databases support JSON and distributed architectures, while many NoSQL systems support transactions and SQL-like queries.
Practical Example
Suppose a retailer needs to create monthly customer statements.
The database stores:
- One customer record in the customer table
- Multiple purchases in the transaction table
- Payment information in a payment table
- Refunds in a refund table
A SQL query can join these tables, filter the required date range, calculate balances, and produce one statement for each customer.
This illustrates the primary strength of the relational model: related data can be stored separately for integrity and then recombined when required.
Key Takeaways
- A relational database stores data in tables composed of rows and columns.
- Tables are related through shared keys.
- Primary keys identify records, while foreign keys establish relationships.
- SQL retrieves, combines, aggregates, and modifies relational data.
- Schemas, data types, and constraints support data integrity.
- Normalization can reduce redundancy and update inconsistencies.
- ACID properties support reliable transaction processing.
- Relational databases support concurrent access, security, backup, and recovery.
- Modern relational databases can support some semi-structured data.
- Managed cloud databases reduce operational work but are not unlimited or administration-free.
- Schema migrations require planning and do not require identical source and destination structures.
- Relational databases remain important for OLTP, data warehousing, and structured business applications.
Conclusion
Relational databases remain a foundational technology because they combine structured storage, meaningful relationships, powerful SQL queries, reliable transactions, and mature management capabilities.
Their greatest strength is not simply that they store rows and columns. It is that they enforce relationships and rules while allowing users to reconstruct meaningful information from multiple tables.
Although specialized databases may be better suited to certain document, graph, streaming, or large-scale workloads, relational databases continue to be a strong default for structured and transactional data.
One-sentence summary: A relational database organizes structured data into related tables and uses keys, constraints, transactions, and SQL to preserve integrity and retrieve meaningful information.
