πΎ What is a Database?
π Definitionβ
A Database (DB) is a systematically structured collection of data. A DBMS (Database Management System) is software that creates, manages, and accesses databases. Databases enable efficient data storage and retrieval, allowing multiple users to access safely and simultaneously.
π― Understanding with Analogyβ
Library Systemβ
Think of a database as a library:
- Database: The entire library
- Table: Each section (fiction, science, history, etc.)
- Row: Individual book
- Column: Book attributes (title, author, publication year, etc.)
- Primary Key: Unique book number
- DBMS: Librarian and management system
βοΈ How It Worksβ
Database Structureβ
Database
ββ Table
ββ Row (Record) - Individual data item
β ββ Example: One user's information
ββ Column (Field) - Data attributes
ββ Example: Name, email, age
Relational Database Exampleβ
-- Users table
users
ββββββ¬βββββββββ¬βββββββββββββββββββ¬ββββββ
β id β name β email β age β
ββββββΌβββββββββΌβββββββββββββββββββΌββββββ€
β 1 β John β john@mail.com β 25 β
β 2 β Alice β alice@mail.com β 30 β
β 3 β Bob β bob@mail.com β 28 β
ββββββ΄βββββββββ΄βββββββββββββββββββ΄ββββββ
-- Orders table
orders
ββββββ¬ββββββββββ¬ββββββββββββββ¬ββββββββ
β id β user_id β product β price β
ββββββΌββββββββββΌββββββββββββββΌββββββββ€
β 1 β 1 β Laptop β 1500 β
β 2 β 1 β Mouse β 30 β
β 3 β 2 β Keyboard β 80 β
ββββββ΄ββββββββββ΄ββββββββββββββ΄ββββββββ
β
ββ Foreign key: References id in users table
CRUD Operationsβ
CRUD are the 4 basic database operations:
C - Create (Insert): Add new data
R - Read (Select): Query data
U - Update (Modify): Change existing data
D - Delete (Remove): Remove data
π‘ Real Examplesβ
CRUD with SQLβ
-- CREATE: Add data
INSERT INTO users (name, email, age)
VALUES ('John', 'john@mail.com', 25);
-- READ: Query data
SELECT * FROM users;
SELECT name, email FROM users WHERE age >= 28;
-- UPDATE: Modify data
UPDATE users SET age = 26 WHERE name = 'John';
-- DELETE: Remove data
DELETE FROM users WHERE id = 3;
Node.js Database Usageβ
const mysql = require('mysql2/promise');
// Database connection
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'password',
database: 'myapp'
});
// CREATE - Add user
async function createUser(name, email, age) {
const [result] = await pool.execute(
'INSERT INTO users (name, email, age) VALUES (?, ?, ?)',
[name, email, age]
);
return result.insertId;
}
// READ - Get all users
async function getAllUsers() {
const [rows] = await pool.execute('SELECT * FROM users');
return rows;
}
// UPDATE - Modify user
async function updateUser(id, name, email, age) {
const [result] = await pool.execute(
'UPDATE users SET name = ?, email = ?, age = ? WHERE id = ?',
[name, email, age, id]
);
return result.affectedRows;
}
// DELETE - Remove user
async function deleteUser(id) {
const [result] = await pool.execute(
'DELETE FROM users WHERE id = ?',
[id]
);
return result.affectedRows;
}
π€ FAQβ
Q1. Why use databases?
A: Many advantages over file systems:
β File System (e.g., users.txt)
ββ Data duplication possible
ββ Concurrent access issues
ββ Difficult backup/recovery
ββ Security vulnerabilities
ββ Slow searches
β
Database
ββ Data integrity guaranteed
ββ Concurrency control (multiple users)
ββ Automated backup/recovery
ββ Access permission management
ββ Fast searches (indexes)
ββ Transaction support
Q2. Which database to choose?
A: Depends on project requirements:
// Relational Databases (SQL)
MySQL / PostgreSQL / SQLite
ββ Pros: Precise data structure, transactions
ββ Cons: Low flexibility, limited scalability
ββ Suitable: Finance, e-commerce, user management
// Non-relational Databases (NoSQL)
MongoDB / Redis / Cassandra
ββ Pros: Flexible schema, horizontal scaling
ββ Cons: Difficult complex relationship handling
ββ Suitable: Social media, real-time analytics, caching
Q3. What is an Index?
A: A data structure that speeds up data retrieval:
-- Without index: Check all 1M rows (slow)
SELECT * FROM users WHERE email = 'test@mail.com';
-- Create index
CREATE INDEX idx_email ON users(email);
-- With index: Find directly via index (fast!)
SELECT * FROM users WHERE email = 'test@mail.com';
-- Downside: Slower writes (index must be updated)
Q4. What is a Transaction?
A: Bundling multiple operations as a single unit:
// Bank transfer example
async function transferMoney(fromId, toId, amount) {
const connection = await pool.getConnection();
try {
await connection.beginTransaction();
// 1. Decrease sender's balance
await connection.execute(
'UPDATE accounts SET balance = balance - ? WHERE id = ?',
[amount, fromId]
);
// 2. Increase receiver's balance
await connection.execute(
'UPDATE accounts SET balance = balance + ? WHERE id = ?',
[amount, toId]
);
// All success β Commit
await connection.commit();
} catch (error) {
// Error β Rollback all
await connection.rollback();
throw error;
} finally {
connection.release();
}
}
π¬ Summaryβ
Databases are the core of all applications:
- Database: Structured data collection
- CRUD: Create, Read, Update, Delete - basic operations
- Table: Organizes data in rows and columns
- Relationship: Connections between tables (JOIN)
- Transaction: Safe data processing
Understanding databases well enables building stable and scalable applications! πΎβ¨