Build the mental model
Data is just values or information a system stores or works with: a user's name, an email address, a product's price, an order, a chat message. Almost everything an application does — showing a profile, calculating a total, sending a notification — is really just reading or changing data.
- Structured — a fixed, predictable format (a spreadsheet row with name/age)
- Semi-structured — some organization, but not rigid (a log line with tags)
- Unstructured — no built-in structure at all (a paragraph of free text)
A database is a system built specifically to store, organize, retrieve, and update data reliably, even as that data grows and many people use it at once. Picture a learning platform's database: Users, Courses, Lessons, Progress, and Bookmarks, all connected.
| What databases help with | Why it matters |
|---|---|
| Searching | finding the right record quickly among thousands |
| Relationships | modeling how pieces of data connect to each other |
| Concurrency & integrity | keeping data correct when many users write at once |
| Transactions & backups | grouping changes safely, plus backups, access control, and indexes |
Files aren't automatically wrong
A small script, a personal project, or a simple static site with barely any data can reasonably read and write plain files or a single JSON file instead of a full database.
- Structured Data
- Data that fits a fixed, predictable format with known fields and types, like a table row with clear columns.
- Unstructured Data
- Data with no built-in structure at all, like a free-text paragraph, an image, or an audio recording.
THE CRUD MENTAL MODEL
---------------------
THE CRUD MENTAL MODEL
-----------------------
Application
|
v
Database
|
+--> Store (Create)
+--> Read (Retrieve)
+--> Update (Modify)
+--> Delete (Remove)Connect it to a real scenario
When deciding whether something needs 'a database' in the full sense, ask what would break if two people used the feature at once, if data needed to survive a crash, or if you needed to search thousands of records instantly.
If nothing important would break, a flat file or small JSON file genuinely is fine. Concurrent writes, relationships, and fast search becoming real requirements is the signal to reach for an actual database.
Structured
a clean object with known fields
Semi-structured
some structure, but flexible
Unstructured
free-form text
This distinction also foreshadows the SQL-vs-NoSQL conversation later in this course — relational databases are built around structured data, while several NoSQL databases target semi-structured and unstructured data.
Try the working example
function classifyData(sample) {
if (typeof sample === "object" && sample !== null && !Array.isArray(sample)) {
return "structured";
}
if (typeof sample === "string") {
const looksTagged = /\w+[:=]\S+/.test(sample) && sample.trim().split(/\s+/).length > 1;
return looksTagged ? "semi-structured" : "unstructured";
}
return "unknown";
}
const examples = [
{ label: "User record object", value: { id: 1, name: "Aye Aye", email: "aye@example.com" } },
{ label: "Support message text", value: "Hi, my payment failed twice yesterday and I'm not sure why." },
{ label: "Server log line", value: '2026-08-24T10:15:00Z level=error user_id=42 msg="login failed"' },
];
for (const ex of examples) {
console.log(`${ex.label} -> ${classifyData(ex.value)}`);
}User record object -> structured
Support message text -> unstructured
Server log line -> semi-structured5-minute try-it
Try classifyData against a real piece of data from your own project (a user bio field, an error log, an order object) and check whether the classification matches your intuition.
One important caution
Assuming every project needs a full database from day one, even a two-page prototype with no concurrent users
Treating 'unstructured' as meaning 'useless' or 'unimportant' — plenty of critical data, like support messages, is unstructured
Wikipedia: Semi-structured data — How Databases Work