Skip to main content

Command Palette

Search for a command to run...

Relational Database Foundations

Updated
•6 min read•View as Markdown
P
AI Product Engineer exploring the reality of building with language models. I use this blog to openly share what I learn along the way, turning complex engineering hurdles into practical knowledge for other builders.

Relational databases have been the backbone of software engineering for decades. Whether you are building a simple web application or a massive enterprise system, understanding how data is structured, connected, and queried is non-negotiable.

While it is easy to learn basic SQL syntax, mastering database design requires understanding the underlying theory. Here is a complete breakdown of relational database foundations, mapping the journey from basic tables all the way down to the mathematical operations that power your queries.


1. The Core Anatomy: Tables, Rows, and Columns

At the highest level, a relational database is a collection of structured data organized for easy access and management. This structure is built on three fundamental concepts:

  • Relation: In theoretical terms, a relation is simply a table. It represents a specific entity, like Users or Orders.

  • Tuple: A tuple is a single row or record inside that table. It represents one specific instance of an entity, such as a single user's profile.

  • Attribute: An attribute is a column or property within a table. It defines the specific pieces of data held by each tuple, like first_name or date_of_birth.


2. Keys: Identifying and Connecting Data

To manage data effectively, a database must be able to uniquely identify records and establish relationships between different tables. This is handled through a system of keys.

Identifying Data:

  • Candidate Key: Any column (or combination of columns) that could uniquely identify a row.

  • Primary Key: The specific candidate key chosen by the database designer to uniquely identify each row in the table.

  • Composite Key: A primary key made by combining multiple columns. For example, in an order details table, a single row might be identified by (order_id, product_id).

Types of Keys:

  • Natural Key: A uniquely identifying column that has real-world business meaning, such as an email address, passport number, or an ISBN for a book.

  • Surrogate Key: A system-generated identifier with no business meaning. These are typically auto-incrementing integers (like user_id = 1) or UUIDs used strictly for database mechanics.

Connecting Data:

  • Foreign Key: A column in one table that references the primary key of another table. This is the "relational" part of a relational database, linking a row in an Orders table to a specific row in the Users table.

3. Data Correctness: Keeping Information Reliable

A database is only as good as the integrity of its data. To prevent messy, orphaned, or illogical data, databases enforce strict rules.

  • Constraints: Database-enforced rules that protect data quality. Common constraints include PRIMARY KEY (must be unique and exist), UNIQUE (no duplicates), NOT NULL (cannot be empty), and CHECK (must meet a specific condition, like age > 18).

  • Referential Integrity: The mechanism that ensures relationships remain valid. If an order references user_id = 5, referential integrity ensures that user 5 actually exists in the database.

  • Functional Dependency: A rule describing how attributes relate to one another, specifically when one attribute determines another. For example, student_id → student_name means that if you know the ID, you can definitively determine the name.


4. Database Design: Normalization vs. Denormalization

Designing a database requires balancing data consistency with read performance. This is where normalization comes in a systematic process of organizing data to reduce duplication and eliminate anomalies.

  • First Normal Form (1NF): Keep values atomic. A single field should hold a single value. (e.g., Do not store "apples, oranges, bananas" in a single favorite_fruits column).

  • Second Normal Form (2NF): Remove partial dependencies. In a table with a composite key, a non-key attribute must depend on the entire key, not just a part of it.

  • Third Normal Form (3NF): Remove transitive dependencies. Non-key columns should not depend on other non-key columns. Everything must depend strictly on the primary key.

  • Boyce-Codd Normal Form (BCNF): A stricter version of 3NF where every determinant (an attribute that determines another) must be a candidate key.

While normalization ensures pristine, duplication-free data, it forces the database to perform heavy joins during queries. Denormalization is the strategic, intentional duplication or combination of data to speed up read performance in highly queried systems.


5. Schema Design and Relationships

With normalized data, you must define exactly how this information is structured and connected.

Schema Levels:

  • Logical Schema Design: Focuses on the "what." It maps out entities, attributes, keys, relationships, and normalization rules without worrying about the underlying hardware.

  • Physical Schema Design: Focuses on the "how." It dictates how data is actually stored and accessed efficiently on disk, dealing with indexes, partitions, data types, and storage engines.

Relationship Modeling:

  • One-to-One (1:1): One row in Table A relates to at most one row in Table B. Example: User ↔ User_Profile.

  • One-to-Many (1:N): One row in Table A relates to multiple rows in Table B. Example: User → Orders.

  • Many-to-Many (N:M): Many rows in Table A relate to many rows in Table B. Because databases cannot handle this directly, it is resolved using a junction table (e.g., Students and Classes connected by an Enrollments table).


6. Query Foundations: Relational Algebra

When you write SQL, the database engine translates your query into a series of mathematical operations known as relational algebra. Understanding these operations makes it much easier to write efficient queries.

  • Selection: Filtering specific rows based on a condition (The equivalent of a SQL WHERE clause).

  • Projection: Filtering specific columns (The equivalent of a SQL SELECT clause).

  • Join: Combining related rows from multiple tables based on a shared key.

  • Cartesian Product: Combining every single row from one table with every single row from another table. This happens if you join tables without specifying a relationship, resulting in a massive, usually unintended, output.

Set Operations:

  • Union: Combines the results of two compatible sets into a single list.

  • Intersection: Returns only the rows that appear in both sets.

  • Difference: Returns the rows present in the first set, but removes any that also appear in the second set.

Understanding these foundations changes how you view a database. It stops being a black box where SQL goes in and data comes out, and becomes a logical, predictable, and mathematically sound engine for application state.

The DB Diaries

Part 1 of 1

Welcome to The DB Diaries! This series is a dedicated, deep dive into mastering relational databases from the ground up. We will explore the core foundations of database engineering starting from basic tables, rows, and keys, all the way to advanced normalization, schema design, constraints, and relational algebra. Whether you are a beginner looking to understand data structures or a developer aiming to design clean and efficient databases, this series provides the rock-solid data foundation you need.