Skip to main content

πŸ’Ύ 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! πŸ’Ύβœ¨