Skip to main content

Database Fundamentals

Database Family: Types and Use Cases​

you need to know how to use the database for webdevelopment and data storage is the base of the whole development. databasefamily

1. Relational Database (RDBMS)​

Definition: Stores data in structured tables with rows/columns and enforces relationships via keys.
Key Features:

  • ACID compliance (Atomicity, Consistency, Isolation, Durability)
  • SQL query language
  • Schema-defined structure
    Popular Systems:
  • PostgreSQL, MySQL, SQLite
    When to Use:
  • Financial transactions
  • Applications requiring strict data integrity

2. PostgreSQL​

Why Stand Out?

  • Advanced JSON support
  • Full-text search
  • Geospatial data handling
    Example SQL:
-- Create a user table
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE
);

3. SQL (Structured Query Language)​

Core Operations:

SELECT * FROM products WHERE price > 100; -- Query data
INSERT INTO orders (user_id, total) VALUES (1, 99.99); -- Insert data
UPDATE users SET status = 'active' WHERE id = 5; -- Modify data

Other database types​

1. Graph Database​

Definition: Uses nodes/edges to represent relationships (e.g., social networks).
Key Features:

  • Optimized for relationship-heavy queries
  • Flexible schema
    Tools:
  • Neo4j, Amazon Neptune
    Use Case:
// Find friends of a user in Neo4j
MATCH (u:User {name: "Alice"})-[:FRIEND]->(friend)
RETURN friend.name;

ORM: Bridging Code and Databases​

What is ORM?​

Object-Relational Mapping converts database tables into code objects (e.g., JavaScript/Java classes).

orm


1. Doctrine with Symfony (PHP)​

Setup:

composer require doctrine/orm

Entity Example:

// src/Entity/Product.php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
class Product {
#[ORM\Id]
#[ORM\GeneratedValue]
private ?int $id = null;

#[ORM\Column(type: 'string')]
private string $name;
}

2. Node.js ORM Tools​

Popular Libraries:

  • Sequelize (Supports PostgreSQL/MySQL):
    const { Sequelize, Model } = require('sequelize');
    const sequelize = new Sequelize('postgres://user:pass@localhost:5432/dbname');

    class User extends Model {}
    User.init({ name: Sequelize.STRING }, { sequelize });
  • TypeORM (TypeScript-friendly):
    import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

    @Entity()
    export class User {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    name: string;
    }

Pro Tip​

When to Use What?​

ScenarioTool Recommendation
Strict data relationshipsPostgreSQL + TypeORM
Rapid prototypingSQLite + Sequelize
Social network featuresNeo4j (Graph Database)

Learning Resources​

Tools​

  • Datagrip: use the database in one platform
  • Prisma: