SQL Database — Relational Database
সারিতে সারিতে data — ৫০ বছর ধরে শক্তিশালী।
আপনার বাড়িতে যদি ৩টি ডায়েরি থাকে — একটিতে পরিবারের সদস্য, একটিতে আত্মীয়, একটিতে বন্ধু। প্রতিটিতে কলাম: নাম, বয়স, ফোন। এই tabular structure-ই relational database-এর মূল ভাবনা।
SQL Database কী?
SQL Database (Relational Database) = data table-এ সংরক্ষিত যেখানে প্রতিটি row একটি record এবং column একটি attribute। Table-এর মধ্যে সম্পর্ক (relationship) থাকে — তাই "relational"।
SQL = Structured Query Language — RDBMS-এ data manipulate করার ভাষা।
মূল কাঠামো
- Database: সবচেয়ে উপরের container।
- Table: একটি specific entity (users, orders, products)।
- Column (field): Data-র attribute — name, email, age।
- Row (record/tuple): একটি specific entry।
- Primary Key: প্রতিটি row-কে unique করে।
- Foreign Key: অন্য table-এর সাথে link।
users table:
+----+-------+------------------+
| id | name | email |
+----+-------+------------------+
| 1 | Mahfuz| m@mahfuzmia.dev |
| 2 | Sumi | sumi@email.com |
+----+-------+------------------+
Schema ও Data Types
Schema = table-এর structure-এর blueprint। SQL DB schema-driven — column type ও constraint আগে define করতে হয়।
সাধারণ data types:
INT, BIGINT— সংখ্যাVARCHAR(n), TEXT— stringDATE, TIMESTAMP— সময়BOOLEAN— true/falseDECIMAL(p,s)— money/precisionJSON, JSONB— flexible (PostgreSQL)
SQL Commands-এর শ্রেণীভাগ
- DDL (Data Definition): CREATE, ALTER, DROP — schema পরিবর্তন।
- DML (Data Manipulation): INSERT, UPDATE, DELETE — data পরিবর্তন।
- DQL (Data Query): SELECT — data fetch।
- DCL (Data Control): GRANT, REVOKE — permission।
- TCL (Transaction Control): COMMIT, ROLLBACK।
JOIN — Table যুক্ত করা
একাধিক table থেকে data মিলিয়ে আনতে JOIN ব্যবহৃত হয়।
INNER JOIN
- দুই table-এর match হওয়া row
- সবচেয়ে কমন
- Match না থাকলে exclude
LEFT JOIN
- Left table-এর সব row
- Right-এ match না থাকলে NULL
RIGHT JOIN
- Right-এর সব row
- Left-এ match না থাকলে NULL
FULL OUTER JOIN
- উভয় table-এর সব row
- Match না হলে NULL
SELECT u.name, o.product
FROM users u
INNER JOIN orders o ON u.id = o.user_id
WHERE o.amount > 1000;
Relational DB-এর শক্তি
- ACID Transaction: Bank transfer-এর মতো critical operation।
- Strong consistency: Write-এর পর সবাই latest দেখবে।
- Powerful query: JOIN, GROUP BY, complex aggregate।
- Schema validation: Invalid data DB-তে আসতে পারে না।
- Mature ecosystem: ৫০ বছরের tooling।
- Standardized: SQL ANSI standard।
সীমাবদ্ধতা
- Vertical scaling primary: Horizontal (sharding) কঠিন।
- Schema rigidity: Production-এ schema change কঠিন।
- JOIN expensive at scale: Million row-এ slow হয়।
- Object-relational mismatch: OOP code-এ map করা জটিল (ORM-এর জন্ম)।
জনপ্রিয় RDBMS
- PostgreSQL: Modern বিশ্বে সবচেয়ে লোভনীয় — JSON, full-text search, advanced features।
- MySQL: ওয়েবের হৃদয় — সবচেয়ে বহুল ব্যবহৃত (WordPress, Facebook প্রথমে)।
- SQLite: File-based, embedded — mobile, browser-এ।
- Oracle: Enterprise — banking, healthcare।
- Microsoft SQL Server: Windows ecosystem।
- MariaDB: MySQL-এর fork — open-source-focused।
ACID Properties
- Atomicity: Transaction-এ সব হবে বা কিছুই না।
- Consistency: DB constraint বজায় থাকবে।
- Isolation: Concurrent transaction-এ একে অপরকে বিরক্ত করবে না।
- Durability: Commit হলে stay forever (crash-এও)।
বাস্তব উদাহরণ
- Booking.com: PostgreSQL-এ সব booking, ঘর, payment।
- Instagram: Original — PostgreSQL।
- Banking: Oracle/DB2 (SLA-bound, audit-heavy)।
- Stack Overflow: Microsoft SQL Server।
সাধারণ ভুল ধারণা
- "SQL ধীর": Indexed query সঠিক হলে SQL DB খুব দ্রুত — million row-এ ms।
- "NoSQL সবসময় modern": না — relational DB এখনও ৭০%+ application-এ primary store।
- "SQL = MySQL": SQL ভাষা; MySQL একটি implementation। PostgreSQL, Oracle আলাদা DB।
Best Practices
- সব column-এ NOT NULL default — explicit nullable।
- Foreign key constraint enable — referential integrity।
- Index frequently filtered/joined column-এ।
- Prepared statement — SQL injection prevention।
- Connection pool — direct connection নয়।
- Query plan analyze (EXPLAIN) — slow query optimize।
📌 চ্যাপ্টার সারমর্ম
- SQL DB table-row-column structure।
- Schema-driven; ACID guarantee।
- JOIN দিয়ে multiple table থেকে data।
- PostgreSQL, MySQL, Oracle — top RDBMS।
- Strong consistency কিন্তু horizontal scale কঠিন।