Jasper Alblas
Jasper Alblas
Data Engineering • Analytics • Business Intelligence
How Databases, Files & Schemas Organize Information
In the previous articles, we explored:
You now understand why companies collect data and who works with it.
But before we start writing SQL queries, building Python pipelines, or working with cloud platforms, we need to answer a more fundamental question:
Where does data actually live?
Every Data Engineer works with concepts like:
These are the building blocks of modern data platforms.
If you understand them, many advanced topics become much easier later. If you skip them, tools like SQL, Spark, Databricks, and cloud services can feel like a collection of unrelated technologies.
By the end of this article, you will understand:
Imagine an online store receives one million orders today. For each order, the company needs to remember:
That is already millions of pieces of information from a single day. Now multiply that by several years. Companies cannot manage this reliably using random spreadsheets and folders. They need a structured way to store, find, update, and analyze information.
That is why databases and other data storage systems exist.
At its simplest, data is information that can be stored and processed by a computer.
For example:
Customer
Customer ID: 1001
Name: Anna Jensen
Country: Denmark
In data engineering, we often use a few important terms to discuss data and the way it is formatted:
An entity is something we want to store information about.
Examples:
An attribute describes an entity.
Customer attributes:
A record is one individual instance of an entity.
One customer record:
Customer ID: 1001
Name: Anna Jensen
Country: Denmark
Later, when we work with tables, records become rows and attributes become columns.
Not all data looks the same.
Structured data has a predefined format.
| CustomerID | Name | Country |
|---|---|---|
| 1001 | Anna | Denmark |
| 1002 | Michael | Germany |
Examples include customer databases, sales transactions, and financial records.
Semi-structured data has some organization, but it does not fit neatly into rows and columns.
Example JSON:
JSON
{
"customerId": 1001,
"name": "Anna",
"country": "Denmark"
}Examples include API responses, application logs, and XML files.
Important: The QuakeFlow project will use JSON data from a real earthquake API.
Unstructured data has no predefined format.
Examples:
Modern organizations often store and analyze all three types of data.
Data engineers commonly work with four major storage approaches.
Common formats:
Advantages:
Disadvantages:
CSV is often the first format beginners encounter.
CustomerID,Name,Country
1001,Anna,Denmark
1002,Michael,GermanyA database is an organized collection of data that allows information to be stored, searched, updated, and retrieved efficiently.
Examples:
Databases are excellent when you need:
A data warehouse is a database optimized for analytics and reporting.
Instead of supporting millions of small transactions, it supports questions like:
A data lake stores large amounts of raw data in many formats.
Examples:
The idea is to store the data first. Decide how to use it later.
Inside a relational database, information is organized in a hierarchy.
Database -> Schema -> Table -> Column -> Row -> Value
Example:
EarthquakeDB
└── staging
└── earthquakes_raw
└── magnitude
└── 5.3
Understanding this hierarchy makes SQL much easier later.
A table stores information about one specific entity. Some examples:
| Table | Stores |
|---|---|
| Customers | Customer information |
| Orders | Order information |
| Products | Product information |
| Payments | Payment information |
Keeping tables focused makes systems easier to understand and maintain.
Columns describe what information is stored.
| CustomerID | Name | Country |
|---|---|---|
| 1001 | Anna | Denmark |
The columns are CustomerID, Name, and Country.
Rows represent individual records.
| CustomerID | Name | Country |
|---|---|---|
| 1001 | Anna | Denmark |
| 1002 | Michael | Germany |
Each row is one customer.
Databases need to know what kind of data each column contains.
| Data Type | Example |
|---|---|
| Integer | 42 |
| Decimal | 19.95 |
| Text | “Anna” |
| Date | 2026-07-18 |
| Boolean | TRUE / FALSE |
Choosing appropriate data types improves performance and data quality.
A primary key uniquely identifies each row in a table.
| CustomerID | Name |
|---|---|
| 1001 | Anna |
| 1002 | Michael |
Why not use names? Because names are not guaranteed to be unique. A company could have multiple customers named Anna Jensen.
Primary keys are often automatically generated IDs, or combinations of columns which together are unique.
A foreign key creates a relationship between tables.
Customers
| CustomerID | Name |
|---|---|
| 1001 | Anna |
Orders
| OrderID | CustomerID | Amount |
|---|---|---|
| 50001 | 1001 | 250 |
The CustomerID in Orders points back to the Customers table.
This allows the database to know which customer placed each order.
The most common relationship.
One customer can have many orders.
Customer – 1 -> Orders (Many)
One order can contain many products, and one product can appear in many orders.
This is usually solved with a bridge table.
| OrderID | ProductID |
|---|---|
| 50001 | 501 |
| 50001 | 502 |
A schema is a way of organizing database objects.
Think of it as a folder inside a database.
sales
• customers
• orders
• products
finance
• payments
• invoices
hr
• employees
Schemas help with:
A full table name often looks like:
sales.orderswhich means the orders table inside the sales schema.
Imagine storing everything together.
| Customer | Country | Order | Product |
|---|---|---|---|
| Anna | Denmark | 50001 | Keyboard |
| Anna | Denmark | 50002 | Mouse |
The customer information is repeated again and again.
This causes:
Separating data into related tables reduces these problems.
We covered this in an earlier article, but let’s cover the essentials again:
Purpose: Run the business.
Examples:
Characteristics:
To make these systems optimised for inserting data, tables are often heavily normalised. This means that each entity has its own table, without including information on other entities. Instead, information of other entities are joined onto the table by using SQL and foreign keys.
Purpose: Analyze the business.
Examples:
Characteristics:
To improve performance for analytical use cases, tables are often denormalized. This reduces the amount of joins needed when analyzing data, and thus increasing performance.
A data warehouse is an analytical system designed for reporting and business intelligence.
Data is usually copied from operational systems into the warehouse, where it is cleaned, standardized, and organized for analysis.
Benefits:
A data lake stores large amounts of raw data in many formats.
Examples:
Data lakes are especially useful when you want to keep the original data before deciding how to transform it.
Modern platforms often combine the flexibility of a data lake with the reliability of a data warehouse.
This approach is called a lakehouse.
Benefits include:
Technologies in this space include Delta Lake, Apache Iceberg, and Apache Hudi.
Let’s combine everything we have learned.
Applications, APIs, CSV files, Sensors
Data Pipeline
Data Lake (raw data)
Transformations (SQL / Python)
Data Warehouse / Lakehouse
Power BI / Analytics
Each component has a different responsibility.
| Component | Purpose |
|---|---|
| Source systems | Create data |
| Data pipeline | Move data |
| Data lake | Store raw data |
| Transformations | Clean and structure data |
| Warehouse/Lakehouse | Serve analytics |
| Power BI | Present insights |
In the next phase of this series, we will build QuakeFlow, an end-to-end data engineering project using real earthquake data.
The flow will look like this:
USGS Earthquake API
Python ingestion
Raw JSON storage
Database tables
SQL transformations
Analytical model
Power BI dashboard
Notice how almost every concept from this article appears somewhere in that pipeline.
That is the point of the Fundamentals phase: understand the pieces before you build the system.
You now understand where data lives and how it is organized.
The next step is understanding how data moves between systems.
In Data Fundamentals 0.5 — Data Pipelines Explained, we will learn:
Before building QuakeFlow, you need to understand the journey data takes.
Understand the storage. Next, understand the movement.
That is the foundation of Data Engineering.