Introduction to Databases and Data Models
From the Database curriculum
Introduction to Databases and Data Models
TL;DR
A database is an organized collection of information, making it easy to store, manage, and retrieve data efficiently. Data models provide the blueprint for how this data is structured and related. Understanding these concepts is foundational for working with any data-driven application.
1. The Mental Model
Think of a database like a super-organized digital filing cabinet for all your important information. A data model is like the detailed plan for how you're going to organize everything within that cabinet—what goes where, and how different pieces of paper relate to each other.
2. The Core Material
What is a Database?

Photo by panumas nikhomkhai on Pexels
At its heart, a database is simply a structured collection of data. Instead of scattering information across various files or notes, a database centralizes it, making it accessible, manageable, and secure. This structure allows for fast searching, updating, and analysis.
For instance, imagine keeping track of customers, products, and orders for an online store. Without a database, you'd have separate spreadsheets or text files, making it hard to link a customer to their orders or to see which products are popular. A database solves this by providing a unified system.
Why Do We Use Databases?

Photo by Markus Winkler on Pexels
We use databases for several key reasons:
* Data Persistence: Information saved in a database remains there until explicitly deleted, unlike data in an application's memory which disappears when the app closes.
* Data Integrity: Databases help ensure the data is accurate and consistent, preventing errors like duplicate entries or invalid values.
* Concurrency Control: Multiple users can access and modify data simultaneously without corrupting it.
* Security: You can control who can see, add, or change specific pieces of information.
* Efficiency: They are optimized for retrieving large amounts of data quickly.
What is a Data Model?

Photo by Markus Winkler on Pexels
A data model is an abstract representation that defines how data is organized and how different data elements relate to one another. It's not the database itself, but the conceptual blueprint you design before building the database. It helps you understand what information you need to store and how it should be structured.
There are several types of data models, each with its own way of organizing data:
a. Hierarchical Model
This model organizes data in a tree-like structure, similar to an organizational chart. Each "parent" record can have multiple "child" records, but each child record can only have one parent. It's simple but inflexible for complex relationships.
b. Network Model
An extension of the hierarchical model, the network model allows a child record to have multiple parent records. This offers more flexibility in representing complex relationships than the hierarchical model.
c. Relational Model
This is the most widely used data model today. Data is organized into tables (often called "relations"), with rows representing records (or "tuples") and columns representing attributes (or "fields"). Relationships between tables are established using common columns, called keys.
Let's illustrate with an example:
graph LR
A["Customer"] -- "places" --> B["Order"];
B -- "contains" --> C["Product"];
A -- "has" --> D["Address"];
subgraph Customer Table
CustID_C["CustomerID (PK)"]
Name_C["Name"]
Email_C["Email"]
end
subgraph Order Table
OrderID_O["OrderID (PK)"]
CustID_O["CustomerID (FK)"]
OrderDate_O["OrderDate"]
end
subgraph Product Table
ProductID_P["ProductID (PK)"]
ProductName_P["ProductName"]
Price_P["Price"]
end
subgraph OrderLineItem Table
OrderID_OL["OrderID (PK, FK)"]
ProductID_OL["ProductID (PK, FK)"]
Quantity_OL["Quantity"]
end
subgraph Address Table
AddressID_A["AddressID (PK)"]
CustID_A["CustomerID (FK)"]
Street_A["Street"]
City_A["City"]
end
CustID_C -- "matches" --> CustID_O
CustID_C -- "matches" --> CustID_A
OrderID_O -- "matches" --> OrderID_OL
ProductID_P -- "matches" --> ProductID_OL
In this diagram:
* PK stands for Primary Key: A column (or set of columns) that uniquely identifies each row in a table. For example, CustomerID uniquely identifies each customer.
* FK stands for Foreign Key: A column (or set of columns) in one table that refers to the Primary Key in another table. This establishes the relationship. For example, CustomerID in the Order table is a foreign key linking back to the Customer table.
d. Object-Oriented Model
This model attempts to incorporate concepts from object-oriented programming, where data and its behavior (methods) are encapsulated into objects. Databases based on this model are called Object-Oriented Database Management Systems (OODBMS).
e. NoSQL Models (Non-Relational)
NoSQL databases are a diverse group of non-relational databases that came about to handle modern application needs like massive scale, rapid development, and flexible data structures. Common types include:
* Document Databases: Store data in flexible, semi-structured documents (e.g., JSON, XML). Example: MongoDB.
* Key-Value Stores: Store data as simple key-value pairs. Example: Redis, DynamoDB.
* Column-Family Stores: Store data in column families rather than rows. Example: Cassandra.
* Graph Databases: Store data in nodes and edges, ideal for representing relationships. Example: Neo4j.
3. Worked Example
Let's say you want to store information about books and authors.
Without a data model (bad practice):
You might put all author and book details into one giant spreadsheet.
| Book Title | Author Name | Author Birthday | Book Genre | ISBN |
|---|---|---|---|---|
| The Hobbit | J.R.R. Tolkien | 1892-01-03 | Fantasy | 978-0345339683 |
| The Lord of the Rings | J.R.R. Tolkien | 1892-01-03 | Fantasy | 978-0618053267 |
| Pride and Prejudice | Jane Austen | 1775-12-16 | Romance | 978-0141439518 |
Problems:
* Redundancy: J.R.R. Tolkien's birthday is repeated for every book he wrote. If he wrote 100 books, that's 100 repetitions.
* Update Anomalies: If you need to correct Tolkien's birthday, you have to update it in multiple places. Miss one, and your data becomes inconsistent.
* Deletion Anomalies: If you delete all books by Jane Austen, you lose all information about Jane Austen herself.
With a Relational Data Model (good practice):
You'd separate this into two tables: Authors and Books, linked by a foreign key.
Authors Table:
| AuthorID (PK) | AuthorName | AuthorBirthday |
|---|---|---|
| 1 | J.R.R. Tolkien | 1892-01-03 |
| 2 | Jane Austen | 1775-12-16 |
Books Table:
| BookID (PK) | Title | AuthorID (FK) | Genre | ISBN |
|---|---|---|---|---|
| 101 | The Hobbit | 1 | Fantasy | 978-0345339683 |
| 102 | The Lord of the Rings | 1 | Fantasy | 978-0618053267 |
| 103 | Pride and Prejudice | 2 | Romance | 978-0141439518 |
Now:
* No Redundancy: Author details are stored only once.
* Easy Updates: To correct an author's birthday, you change it in only one place in the Authors table.
* Safe Deletions: You can delete all books by an author, and the author's information remains in the Authors table.
4. Key Takeaways
- A database is an organized collection of data designed for efficient storage, retrieval, and management.
- Databases provide data persistence, integrity, concurrency control, and security.
- A data model is a conceptual blueprint that defines how data is structured and related within a database.
- The Relational Model, using tables, primary keys, and foreign keys, is the most common and powerful data model for structured data.
- NoSQL models offer flexible alternatives for diverse data types and scaling needs beyond traditional relational databases.
- Understanding your data model is crucial for designing effective and robust database systems.
- Primary Keys uniquely identify records, while Foreign Keys establish relationships between tables.
Common Mistakes to Avoid:
- Putting all data in one giant table: This leads to redundancy and integrity issues.
- Not defining relationships between pieces of data: This makes it hard to query and understand your information.
- Confusing a data model with the actual database software: The model is the design; the database is the implementation.
- Ignoring the type of data model needed: Using a relational database for highly interconnected graph data, for instance, can be inefficient.
5. Now Try It
Think about a simple application like a music library. On a piece of paper, sketch out what data you'd need to store (song titles, artists, albums, genres, release years). Then, design a basic relational data model using at least three tables. Identify primary keys and foreign keys for each table to show how they relate.
What success looks like: You should have distinct tables like Songs, Artists, and Albums, with columns in each, and clear arrows or notes indicating which foreign keys link which tables together. For example, Songs might have an ArtistID (FK) linking to Artists' ArtistID (PK).
Frequently asked about Introduction to Databases and Data Models
More from Database
Get the full Database curriculum
Clone the complete plan to your dashboard for unlimited AI-generated notes, practice quizzes, and a personalised revision schedule.
Create Free Account