এক্সেল ফাইল কেন যথেষ্ট না?
- 👤 ৫০,০০০ নতুন কাস্টমার রেজিস্ট্রেশন
- 👀 ১,০০,০০০ প্রোডাক্ট ভিউ
- 🛒 ২০,০০০ অর্ডার
- 💳 ১৫,০০০ পেমেন্ট
- 🚚 হাজার হাজার ডেলিভারি আপডেট
- এই বিশাল ডেটা কি একটা মাইক্রোসফট এক্সেল ফাইলে রাখা সম্ভব?
- দুইজন এমপ্লয়ি যদি একই সময়ে একই ফাইল এডিট করে, কী হবে?
- ফাইলটা যদি বড় হতে হতে ৫ GB হয়ে যায়, তাহলে খোলাই তো কষ্টকর হবে — তখন কী হবে?
- এক লাখ অর্ডারের মধ্যে থেকে একজন কাস্টমারের একটা অর্ডার কীভাবে সেকেন্ডের মধ্যে খুঁজে বের করবে?
বাস্তবতা হলো — এক্সেলে এই সমস্যাগুলো হবেই:
| সমস্যা | এক্সেলে যা হয় |
|---|---|
| একসাথে একাধিক মানুষ কাজ করা | ফাইল লক হয়ে যায়, একজনের এডিট আরেকজনের এডিট মুছে ফেলতে পারে |
| বড় পরিমাণ ডেটা | ফাইল স্লো হয়ে যায়, ক্র্যাশ করে, ওপেন হতেই সময় লাগে |
| দ্রুত খোঁজা (Search) | Ctrl+F দিয়ে ম্যানুয়ালি খুঁজতে হয় — লাখো রো-তে এটা অসম্ভব রকম ধীর |
| ডেটার নিরাপত্তা | যে কেউ পুরো ফাইল ডিলিট বা কপি করে নিয়ে যেতে পারে |
| একাধিক অ্যাপ থেকে অ্যাক্সেস | ওয়েবসাইট, মোবাইল অ্যাপ — সবাই একসাথে একটা এক্সেল ফাইল থেকে ডেটা নিতে পারে না |
এই কারণেই মানুষ ধীরে ধীরে একটা বিবর্তনের মধ্য দিয়ে গিয়েছে:
চিত্র ১.১ — ডেটা ম্যানেজমেন্টের বিবর্তন: খাতা থেকে ডেটাবেজ পর্যন্ত
ডেটা, ইনফরমেশন আর ডেটাবেজ — পার্থক্য কী?
Information = প্রসেস করা, অর্থবহ, সিদ্ধান্ত নেওয়ার উপযোগী ডেটা।
Database = সংগঠিতভাবে সংরক্ষিত ডেটার একটা সংগ্রহ, যেখান থেকে সহজে খোঁজা, যোগ করা, পরিবর্তন করা যায়।
DBMS (Database Management System) = যে সফটওয়্যার দিয়ে ডেটাবেজ তৈরি, নিয়ন্ত্রণ ও পরিচালনা করা হয় (যেমন: MySQL, PostgreSQL)।
একই ধারণা, ভিন্ন ভিন্ন জায়গায়
| প্রেক্ষাপট | Data (কাঁচা) | Information (অর্থবহ) |
|---|---|---|
| 🏫 স্টুডেন্ট রেকর্ড | 101, Karim, 78 | রোল ১০১-এর করিম গণিতে ৭৮ পেয়েছে |
| 🏥 হাসপাতাল রেকর্ড | P045, 102°F | রোগী P045-এর জ্বর ১০২° ফারেনহাইট — ডাক্তার দেখতে হবে |
| 📚 লাইব্রেরি বই | B220, 3 | বই B220-এর ৩ কপি বর্তমানে শেলফে আছে |
| 🏦 ব্যাংক অ্যাকাউন্ট | AC5521, 50000 | অ্যাকাউন্ট AC5521-এ ব্যালেন্স ৫০,০০০ টাকা |
| 🛒 অনলাইন শপিং | U882, ORD119 | ইউজার U882 অর্ডার ORD119 প্লেস করেছে |
Data → Information → Database সিঁড়ি
প্রেক্ষাপট বেছে নাও, তারপর ধাপে ধাপে দেখো কাঁচা ডেটা কীভাবে অর্থবহ তথ্য আর সংগঠিত ডেটাবেজে পরিণত হয়।
Table, Row, Column — বিল্ডিং ব্লকগুলো চেনা
ধরো আমরা একটা Student Management System বানাচ্ছি। নিচের টেবিলটা দেখো:
চিত্র ৩.১ — একটা টেবিলের ভেতরের প্রতিটা অংশ
| টার্ম | রিয়েল-লাইফ অ্যানালজি | টেকনিক্যাল অর্থ |
|---|---|---|
| Database | পুরো একটা আলমারি, যেখানে অনেকগুলো ফাইল/খাতা গোছানো আছে | একাধিক সম্পর্কিত টেবিলের সংগ্রহ |
| Table | আলমারির একটা নির্দিষ্ট খাতা (যেমন: শুধু স্টুডেন্টদের খাতা) | রো ও কলামে সাজানো ডেটা গ্রিড |
| Row (Record) | খাতার একটা লাইন — একজন নির্দিষ্ট স্টুডেন্টের সব তথ্য | টেবিলের একটা সম্পূর্ণ এন্ট্রি |
| Column (Field/Attribute) | খাতার একটা নির্দিষ্ট বৈশিষ্ট্য কলাম, যেমন শুধু "বয়স" এর কলাম | একটা নির্দিষ্ট ধরনের ডেটা ধারণকারী উলম্ব অংশ |
| Cell | একটা নির্দিষ্ট রো আর কলামের কাটাকাটি জায়গায় একটা মান | একটা একক ডেটা ভ্যালু |
| Schema | খাতা বানানোর আগেই বানানো নকশা — কোন কলাম কী টাইপের হবে | টেবিলের গঠন/ব্লুপ্রিন্ট (নাম, টাইপ, নিয়ম) |
| Entity | বাস্তব জগতের একটা জিনিস, যেমন — একজন "স্টুডেন্ট" | যা নিয়ে তথ্য সংরক্ষণ করা হচ্ছে (সাধারণত একটা টেবিল = একটা এনটিটি) |
| Attribute | এনটিটির একটা বৈশিষ্ট্য, যেমন — স্টুডেন্টের "নাম", "বয়স" | এনটিটির একটা প্রপার্টি (কলামের সাথে সমতুল্য) |
SQL (Relational) বনাম NoSQL ডেটাবেজ
Relational Database (SQL)
জনপ্রিয় Relational Database: MySQLPostgreSQLSQL ServerOracle
- Table-এ ডেটা থাকে, প্রতিটা টেবিলের একটা নির্দিষ্ট গঠন (Schema) থাকে
- Rows & Columns — কড়াকড়ি নিয়মে সাজানো
- Relationships — টেবিলগুলো একে অপরের সাথে যুক্ত থাকে Key দিয়ে
NoSQL Database
| NoSQL টাইপ | কীভাবে ডেটা রাখে | উদাহরণ |
|---|---|---|
| Document Database | প্রতিটা রেকর্ড একটা JSON-এর মতো ডকুমেন্ট | MongoDB |
| Key-Value Database | শুধু একটা "কী" আর তার "ভ্যালু" — যেমন ডিকশনারি | Redis |
| Column-Family Database | বিশাল পরিমাণ ডেটা কলাম আকারে, খুব দ্রুত রাইট/রিড | Cassandra |
| Graph Database | সম্পর্ক/নেটওয়ার্ক (যেমন — কে কার বন্ধু) | Neo4j |
SQL বনাম NoSQL — সম্পূর্ণ তুলনা
| বিষয় | SQL (Relational) | NoSQL |
|---|---|---|
| Structure | কড়াকড়ি রো-কলাম গঠন | নমনীয়, বিভিন্ন গঠন সমর্থন করে |
| Scalability | সাধারণত Vertical (বড় সার্ভার) | Horizontal (অনেক সার্ভার জুড়ে) |
| Consistency | খুব কড়া (ACID) | কিছুটা নমনীয় (Eventual Consistency) |
| Flexibility | Schema আগে থেকেই ঠিক করতে হয় | Schema পরিবর্তনযোগ্য |
| Speed (বড় ডেটায়) | জটিল রিলেশনে ভালো | বিশাল, দ্রুত-পরিবর্তনশীল ডেটায় ভালো |
| ব্যবহার | ব্যাংকিং, ই-কমার্স অর্ডার সিস্টেম | সোশ্যাল মিডিয়া ফিড, রিয়েল-টাইম চ্যাট, IoT |
| জনপ্রিয় টুল | MySQL, PostgreSQL | MongoDB, Redis, Cassandra |
SQL vs NoSQL — সিনারিও পিকার
বিজনেস সিনারিও বেছে নাও — কোন ধরনের ডেটাবেজ উপযুক্ত এবং কেন, তা দেখো।
টেবিলগুলো একে অপরের সাথে কীভাবে যুক্ত হয়?
Primary Key
Foreign Key
| Key টাইপ | সংজ্ঞা | উদাহরণ |
|---|---|---|
| Candidate Key | যেসব কলাম Primary Key হওয়ার যোগ্যতা রাখে | StudentID, Email — দুটোই ইউনিক হতে পারে |
| Composite Key | একাধিক কলাম মিলে তৈরি Primary Key | OrderID + ProductID মিলে একটা লাইন-আইটেম শনাক্ত করা |
| Unique Key | ডুপ্লিকেট হতে পারবে না, কিন্তু NULL হতে পারে (Primary Key-র চেয়ে কম কড়া) | Phone Number কলাম |
তিন ধরনের Relationship
চিত্র ৫.১ — এক ধাপে তিন ধরনের সম্পর্ক: 1:1, 1:N এবং M:N
| Relationship টাইপ | বিজনেস উদাহরণ | ব্যাখ্যা |
|---|---|---|
| One-to-One (1:1) | Employee ↔ Passport | একজন কর্মীর একটাই পাসপোর্ট, একটা পাসপোর্ট একজনেরই |
| One-to-Many (1:N) | Customer → Orders | একজন কাস্টমার অনেকগুলো অর্ডার করতে পারে |
| Many-to-Many (M:N) | Students ↔ Courses | একজন স্টুডেন্ট অনেক কোর্স নিতে পারে, একটা কোর্সেও অনেক স্টুডেন্ট থাকতে পারে |
Key Matcher — PK, FK, Unique, Composite
প্রতিটি কলাম/সম্পর্কের জন্য সঠিক Key টাইপ বেছে নাও।
একই ডেটা বারবার লেখা কেন খারাপ?
Before Normalization (ভুল পদ্ধতি)
| OrderID | CustomerName | CustomerAddress | Product |
|---|---|---|---|
| 1 | করিম | ঢাকা | ল্যাপটপ |
| 2 | করিম | ঢাকা | মাউস |
| 3 | করিম | ঢাকা | কীবোর্ড |
After Normalization (সঠিক পদ্ধতি)
| Customers | |
|---|---|
| CustomerID | Name |
| C1 | করিম (ঢাকা) |
| Orders | ||
|---|---|---|
| OrderID | CustomerID | Product |
| 1 | C1 | ল্যাপটপ |
| 2 | C1 | মাউস |
এখন করিমের ঠিকানা বদলাতে হলে শুধু একবার, Customers টেবিলে গিয়ে বদলালেই যথেষ্ট।
| নর্মাল ফর্ম | মূল নিয়ম (সহজ ভাষায়) |
|---|---|
| 1NF | প্রতিটা সেলে একটাই মান থাকবে (একসাথে একাধিক ভ্যালু না, যেমন এক ঘরে "মাউস, কীবোর্ড" লেখা যাবে না) |
| 2NF | প্রতিটা কলাম পুরো Primary Key-এর উপর নির্ভরশীল হতে হবে, আংশিক না |
| 3NF | একটা কলাম যেন অন্য একটা নন-কী কলামের উপর নির্ভর না করে (Transitive dependency বাদ) |
SQL কী, আর কেন গুরুত্বপূর্ণ?
SQL-কে ভাবতে পারো — একটা লাইব্রেরিয়ানকে কথায় বলার মতো: "আমাকে ১৯৯০ সালের পরের সব বাংলা উপন্যাসের বইয়ের লিস্ট দাও।" SQL দিয়ে ঠিক এভাবেই ডেটাবেজকে অনুরোধ করা হয়।
| কমান্ড | রিয়েল-লাইফ অ্যানালজি | কাজ |
|---|---|---|
| SELECT | লাইব্রেরিয়ানকে বলা — "আমাকে এই বইগুলো দেখাও" | ডেটা পড়া / দেখা |
| INSERT | লাইব্রেরিতে নতুন বই যোগ করা | নতুন রো যোগ করা |
| UPDATE | একটা বইয়ের তথ্য সংশোধন করা (যেমন কপি সংখ্যা) | বিদ্যমান রো পরিবর্তন করা |
| DELETE | একটা পুরনো/নষ্ট বই তালিকা থেকে সরিয়ে ফেলা | রো মুছে ফেলা |
SQL Command Quiz
কাজের ধরন বেছে নাও, তারপর সঠিক SQL keyword ট্যাপ করো।
Data Scientist-রা ডেটাবেজ কীভাবে ব্যবহার করে?
প্রায় প্রতিটা বড় প্রযুক্তি কোম্পানির পেছনে বিশাল ডেটাবেজ কাজ করে:
| কোম্পানি | ডেটাবেজ কীসের জন্য ব্যবহার হয় |
|---|---|
| 🏦 ব্যাংকিং সিস্টেম | প্রতিটা লেনদেন, ব্যালেন্স নির্ভুলভাবে ট্র্যাক করা |
| 🏥 হাসপাতাল ম্যানেজমেন্ট | রোগীর ইতিহাস, প্রেসক্রিপশন, রিপোর্ট |
| বিলিয়ন পোস্ট, ফ্রেন্ড কানেকশন সংরক্ষণ | |
| ▶️ YouTube / Netflix | ভিডিও মেটাডেটা, ইউজার ওয়াচ হিস্ট্রি (রিকমেন্ডেশনের জন্য) |
| 📦 Amazon | প্রোডাক্ট, ইনভেন্টরি, অর্ডার, ডেলিভারি |
| 🚗 Uber | রিয়েল-টাইম রাইড, ড্রাইভার লোকেশন |
| 🍔 ফুড ডেলিভারি অ্যাপ | রেস্টুরেন্ট মেনু, অর্ডার স্ট্যাটাস |
Data Scientist-রা মডেল ট্রেইন করার আগে ডেটাবেজ থেকেই SQL Query দিয়ে ডেটা বের করে আনে (Extract), তারপর প্রসেস করে। তাই SQL শেখা একজন Data Scientist-এর জন্য প্রায় বাধ্যতামূলক।
আরও কিছু কনসেপ্ট (উচ্চ পর্যায়ের ডেটা সিস্টেম)
| টার্ম | সহজ ধারণা |
|---|---|
| Data Warehouse | বিভিন্ন সোর্স থেকে আসা ঐতিহাসিক ডেটা এক জায়গায় গুছিয়ে রাখা — রিপোর্ট/অ্যানালিসিসের জন্য |
| Data Lake | যেকোনো ধরনের কাঁচা ডেটা (স্ট্রাকচার্ড/আনস্ট্রাকচার্ড) একসাথে জমা রাখার জায়গা |
| BigQuery (Google) | ক্লাউডে বিশাল ডেটার উপর সেকেন্ডে সেকেন্ডে অ্যানালাইসিস করার সার্ভিস |
| Snowflake | ক্লাউড-বেজড Data Warehouse, বিভিন্ন কোম্পানি ডেটা অ্যানালিটিক্সের জন্য ব্যবহার করে |
হাতে-কলমে: Python দিয়ে SQLite ডেটাবেজ
আমরা এখন Google Colab-এ একটা ছোট ডেটাবেজ বানিয়ে ফেলব। কোনো আগের প্রোগ্রামিং জ্ঞান দরকার নেই — প্রতিটা লাইন ব্যাখ্যা করা হবে।
ধাপ ১ — ডেটাবেজ তৈরি করা
Colab Cell 1 · Pythonimport sqlite3
# ডেটাবেজের সাথে কানেকশন তৈরি (না থাকলে নতুন তৈরি হবে)
conn = sqlite3.connect("school.db")
cursor = conn.cursor()
print("ডেটাবেজ তৈরি হয়ে গেছে ✅")
১)
import sqlite3 — পাইথনের বিল্ট-ইন লাইব্রেরি যা দিয়ে SQLite ডেটাবেজ চালানো যায়।২)
sqlite3.connect("school.db") — "school.db" নামের একটা ফাইল তৈরি/কানেক্ট করা, এটাই আমাদের ডেটাবেজ।৩)
cursor — এটা দিয়েই আমরা SQL কমান্ড চালাব।
conn.close() না করে কানেকশন খোলা রেখে দেয় — এতে ফাইল লক হয়ে যেতে পারে। কাজ শেষে সবসময় কানেকশন বন্ধ করা উচিত।ধাপ ২ — টেবিল তৈরি করা
Colab Cell 2 · Pythoncursor.execute("""
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER,
class TEXT
)
""")
conn.commit()
print("টেবিল তৈরি হয়ে গেছে ✅")
CREATE TABLE দিয়ে নতুন টেবিল বানানো হয়। id INTEGER PRIMARY KEY মানে id কলামটাই ইউনিক আইডেন্টিফায়ার। conn.commit() ছাড়া পরিবর্তন ডেটাবেজে স্থায়ীভাবে সেভ হয় না।ধাপ ৩ — ডেটা যোগ করা (Insert)
Colab Cell 3 · Pythoncursor.execute("INSERT INTO students (name, age, class) VALUES (?, ?, ?)",
("করিম", 17, "১২"))
cursor.execute("INSERT INTO students (name, age, class) VALUES (?, ?, ?)",
("সুমাইয়া", 16, "১১"))
conn.commit()
print("২ জন স্টুডেন্ট যোগ হয়েছে ✅")
? ব্যবহার করা Best Practice।ধাপ ৪ — ডেটা পড়া (Read / SELECT)
Colab Cell 4 · Pythoncursor.execute("SELECT * FROM students")
rows = cursor.fetchall()
for row in rows:
print(row)
(2, 'সুমাইয়া', 16, '১১')
fetchone() বা batch করে আনা উচিত — নাহলে মেমোরি ভরে যাবে।ধাপ ৫ — ডেটা পরিবর্তন করা (Update)
Colab Cell 5 · Pythoncursor.execute("UPDATE students SET age = ? WHERE name = ?", (18, "করিম"))
conn.commit()
print("করিমের বয়স আপডেট হয়েছে ✅")
WHERE ছাড়া UPDATE চালালে টেবিলের সবার বয়স বদলে যাবে! সবসময় WHERE কন্ডিশন ভালোভাবে চেক করো।ধাপ ৬ — ডেটা মুছে ফেলা (Delete)
Colab Cell 6 · Pythoncursor.execute("DELETE FROM students WHERE name = ?", ("সুমাইয়া",))
conn.commit()
print("সুমাইয়ার রেকর্ড মুছে ফেলা হয়েছে ✅")
ধাপ ৭ — শর্তসাপেক্ষে ডেটা ফিল্টার করা
Colab Cell 7 · Pythoncursor.execute("SELECT * FROM students WHERE age > 15")
for row in cursor.fetchall():
print(row)
conn.close()
conn.close() দিয়ে কানেকশন বন্ধ করা হয়েছে — এটা Best Practice।বিগিনাররা যেসব ভুল করে
| ভুল ধারণা | কেন এটা ভুল | সমাধান |
|---|---|---|
| Database আর Table গুলিয়ে ফেলা | Database হলো পুরো আলমারি, Table হলো একটা খাতা মাত্র | মনে রাখো — একটা Database-এ অনেক Table থাকতে পারে |
| Row আর Column গুলিয়ে ফেলা | Row = আনুভূমিক (একজনের সব তথ্য), Column = উলম্ব (একটা বৈশিষ্ট্য) | উদাহরণ দিয়ে বারবার প্র্যাকটিস করো |
| Primary Key ভুলে যাওয়া | কোন রো ইউনিক তা বোঝা যায় না, ডুপ্লিকেট হয়ে যেতে পারে | প্রতিটা টেবিলে অবশ্যই একটা Primary Key রাখো |
| সব ডেটা একটা টেবিলে রাখা | ডেটা রিপিট হয়, আপডেট করা কঠিন হয়ে যায় | Normalization করে আলাদা আলাদা টেবিলে ভাগ করো |
| Relationship উপেক্ষা করা | টেবিলগুলো বিচ্ছিন্ন হয়ে যায়, ডেটা জোড়া লাগানো যায় না | Foreign Key দিয়ে টেবিল কানেক্ট করো |
| এক্সেলকে ডেটাবেজ মনে করা | এক্সেলে multi-user, বড় স্কেল, রিলেশনশিপ ম্যানেজমেন্ট নেই | ছোট, একক ব্যবহারের জন্যই শুধু এক্সেল ঠিক আছে |
| SQL আর MySQL একই জিনিস ভাবা | SQL হলো ভাষা, MySQL হলো সেই ভাষা ব্যবহার করে এমন একটা DBMS সফটওয়্যার | SQL = ভাষা, MySQL/PostgreSQL = সফটওয়্যার যা এই ভাষা বোঝে |
বড় কোম্পানিগুলো কীভাবে বিশাল ডেটাবেজ সামলায়?
| প্র্যাকটিস | সহজ ব্যাখ্যা |
|---|---|
| Data Backup | নিয়মিত কপি রাখা, যাতে ডেটা হারিয়ে গেলেও ফিরে পাওয়া যায় |
| Security | পাসওয়ার্ড, এনক্রিপশন, অ্যাক্সেস কন্ট্রোল দিয়ে ডেটা সুরক্ষিত রাখা |
| Indexing | বইয়ের সূচিপত্রের মতো — দ্রুত খোঁজার জন্য বিশেষ কাঠামো |
| Scalability | ইউজার বাড়লে সিস্টেম যেন ভেঙে না পড়ে, বরং বাড়তে পারে |
| Replication | একই ডেটার একাধিক কপি বিভিন্ন সার্ভারে রাখা, যাতে একটা সার্ভার নষ্ট হলেও সিস্টেম চলতে থাকে |
| Cloud Databases | নিজের সার্ভার না কিনে Google/AWS/Azure-এর সার্ভারে ডেটাবেজ চালানো |
সম্পূর্ণ উদাহরণ: একটা অনলাইন শপিং সিস্টেম
"শপনগর"-এর জন্য চারটা মূল টেবিল দরকার:
চিত্র ১২.১ — Customers → Orders → Products এবং Orders → Payments সম্পর্ক
| টেবিল | মূল কলাম | সম্পর্ক |
|---|---|---|
| Customers | CustomerID (PK), Name, Address, Phone | একজন কাস্টমার → অনেক Order (1:N) |
| Orders | OrderID (PK), CustomerID (FK), OrderDate | Customers ও Products-এর মধ্যে সংযোগকারী |
| Products | ProductID (PK), Name, Price, Stock | Orders-এর সাথে M:N (এক অর্ডারে অনেক প্রোডাক্ট, এক প্রোডাক্ট অনেক অর্ডারে) |
| Payments | PaymentID (PK), OrderID (FK), Amount, Method | প্রতিটা Order-এর একটা Payment (1:1 বা 1:N রিফান্ড থাকলে) |
কেন এই ডিজাইন গুরুত্বপূর্ণ: যদি Customers টেবিল না থাকতো, প্রতিটা অর্ডারে কাস্টমারের নাম-ঠিকানা বারবার লিখতে হতো (Part 6-এ যেমন দেখেছি)। Foreign Key দিয়ে সংযোগ থাকায় ডেটা একবারই লেখা লাগে, কিন্তু প্রয়োজনে সব জোড়া লাগিয়ে (JOIN করে) দেখা যায়।
অতিরিক্ত ডিজাইন অনুশীলন (ক্লাস অ্যাসাইনমেন্ট)
- Student Management System: Students, Courses, Enrollments, Teachers — কোনগুলো M:N?
- Hospital Management System: Patients, Doctors, Appointments, Prescriptions — Foreign Key কোথায় বসবে?
- E-commerce System: উপরের শপনগর ডিজাইনে Reviews আর Categories টেবিল যোগ করে দেখাও।
রিভিশন, MCQ, ভাইভা ও ইন্টারভিউ প্রশ্ন
দ্রুত রিভিশন নোট
- Excel বড় স্কেল, মাল্টি-ইউজার, নিরাপত্তায় দুর্বল — তাই Database দরকার
- Data (কাঁচা) → Information (অর্থবহ) → Database-এ সংগঠিত হয়ে সংরক্ষিত
- Table = Row (রেকর্ড) + Column (ফিল্ড); Schema = টেবিলের নকশা
- SQL = কড়াকড়ি Structure, ACID; NoSQL = নমনীয়, স্কেলেবল
- Primary Key = ইউনিক আইডেন্টিফায়ার; Foreign Key = অন্য টেবিলের সাথে সংযোগ
- 1:1, 1:N, M:N — তিন ধরনের সম্পর্ক
- Normalization (1NF, 2NF, 3NF) → ডেটা রিপিটেশন কমায়
- SELECT, INSERT, UPDATE, DELETE — SQL-এর চারটি মূল কমান্ড
ভাইভা প্রশ্ন (মৌখিক)
১. Database আর DBMS-এর মধ্যে পার্থক্য কী?
Database হলো সংগঠিত ডেটার সংগ্রহ, আর DBMS হলো সেই ডেটাবেজ পরিচালনা করার সফটওয়্যার (যেমন MySQL)।
২. Primary Key NULL হতে পারে কি?
না, Primary Key কখনো NULL হতে পারে না — কারণ এটাই প্রতিটা রো-কে ইউনিকভাবে চিহ্নিত করে।
৩. এক্সেল আর ডেটাবেজের মূল পার্থক্য কী?
এক্সেল একজন/কয়েকজনের জন্য ছোট স্কেলে ভালো; ডেটাবেজ বড় স্কেলে, মাল্টি-ইউজার, নিরাপদ ও দ্রুত।
ইন্টারভিউ প্রশ্ন (৩০টি — বিগিনার লেভেল)
১. ডেটাবেজ কী?
সংগঠিতভাবে সংরক্ষিত ডেটার একটা সংগ্রহ যেখান থেকে সহজে ডেটা খোঁজা, যোগ করা যায়।
২. DBMS কী?
ডেটাবেজ তৈরি ও পরিচালনার সফটওয়্যার সিস্টেম।
৩. RDBMS আর DBMS-এর পার্থক্য কী?
RDBMS-এ ডেটা টেবিল আকারে, রিলেশনশিপসহ থাকে; সাধারণ DBMS-এ এই কড়াকড়ি নাও থাকতে পারে।
৪. Primary Key কী?
প্রতিটা রো-কে ইউনিকভাবে চিহ্নিত করার কলাম।
৫. Foreign Key কী?
একটা টেবিলের কলাম যা অন্য টেবিলের Primary Key-কে রেফার করে।
৬. Candidate Key কী?
যেসব কলাম Primary Key হওয়ার যোগ্যতা রাখে।
৭. Composite Key কী?
একাধিক কলাম মিলে তৈরি Primary Key।
৮. Normalization কেন করা হয়?
ডেটা রিপিটেশন কমাতে এবং আপডেট সহজ করতে।
৯. 1NF, 2NF, 3NF সংক্ষেপে কী?
1NF: একটা সেলে একটাই মান। 2NF: পুরো Key-এর উপর নির্ভরশীলতা। 3NF: নন-কী কলামের উপর নির্ভরশীলতা বাদ।
১০. SQL কী?
রিলেশনাল ডেটাবেজের সাথে যোগাযোগের জন্য ব্যবহৃত ভাষা।
১১. SQL আর MySQL-এর পার্থক্য কী?
SQL ভাষা, MySQL সেই ভাষা ব্যবহারকারী একটা DBMS সফটওয়্যার।
১২. SELECT কী করে?
ডেটাবেজ থেকে ডেটা পড়ে/দেখায়।
১৩. NoSQL কেন তৈরি হয়েছিল?
বিশাল, দ্রুত-পরিবর্তনশীল, নমনীয় গঠনের ডেটা সামলানোর জন্য।
১৪. Document Database কী?
প্রতিটা রেকর্ড JSON-এর মতো ডকুমেন্ট আকারে থাকে (যেমন MongoDB)।
১৫. Key-Value ডেটাবেজ কী?
একটা key আর তার সাথে যুক্ত একটা value রাখা হয় (যেমন Redis)।
১৬. One-to-Many সম্পর্কের উদাহরণ দাও।
একজন কাস্টমার অনেক অর্ডার করতে পারে।
১৭. Many-to-Many সম্পর্কের উদাহরণ দাও।
স্টুডেন্ট ও কোর্স — একজন স্টুডেন্ট অনেক কোর্স নিতে পারে, একটা কোর্সে অনেক স্টুডেন্ট থাকতে পারে।
১৮. Schema কী?
টেবিলের গঠন — কলামের নাম, টাইপ, নিয়ম।
১৯. Entity ও Attribute কী?
Entity = বাস্তব জগতের বস্তু (যেমন Student); Attribute = তার বৈশিষ্ট্য (যেমন নাম, বয়স)।
২০. ACID কী বোঝায়?
Atomicity, Consistency, Isolation, Durability — SQL ডেটাবেজের লেনদেন নিরাপদ রাখার নিয়মাবলি।
২১. Data Warehouse কী?
বিভিন্ন সোর্স থেকে ঐতিহাসিক ডেটা এক জায়গায় গুছিয়ে রাখার সিস্টেম, রিপোর্টের জন্য।
২২. Data Lake কী?
যেকোনো ধরনের কাঁচা ডেটা একসাথে জমা রাখার জায়গা।
২৩. Indexing কী?
বইয়ের সূচিপত্রের মতো — দ্রুত সার্চের জন্য বিশেষ কাঠামো।
২৪. Replication কেন দরকার?
একটা সার্ভার নষ্ট হলেও সিস্টেম চালু রাখতে ডেটার একাধিক কপি রাখা হয়।
২৫. Excel-কে ডেটাবেজ বলা যায় না কেন?
মাল্টি-ইউজার সাপোর্ট, বড় স্কেল, রিলেশনশিপ ম্যানেজমেন্ট, নিরাপত্তা — এসবের অভাব আছে।
২৬. Cloud Database কী?
নিজের সার্ভার না কিনে AWS/GCP/Azure-এর সার্ভারে ডেটাবেজ চালানো।
২৭. WHERE ক্লজ ছাড়া UPDATE চালালে কী হয়?
টেবিলের সব রো-এর ভ্যালু পরিবর্তন হয়ে যায় — এটা বিপজ্জনক ভুল।
২৮. Unique Key আর Primary Key-এর পার্থক্য কী?
Unique Key NULL হতে পারে, কিন্তু Primary Key কখনো NULL হতে পারে না।
২৯. একজন Data Scientist কেন SQL শিখবে?
মডেল ট্রেইনিংয়ের আগে ডেটাবেজ থেকে ডেটা বের করে আনতে (Extract) SQL লাগে।
৩০. BigQuery/Snowflake কী?
ক্লাউডে বিশাল ডেটার উপর দ্রুত অ্যানালিসিস করার Data Warehouse সার্ভিস।
MCQ (উত্তরসহ)
১. নিচের কোনটি Primary Key-এর বৈশিষ্ট্য? (a) NULL হতে পারে (b) ডুপ্লিকেট হতে পারে (c) ইউনিক ও NOT NULL (d) কোনোটিই না
উত্তর: (c) ইউনিক ও NOT NULL
২. MongoDB কোন ধরনের ডেটাবেজ? (a) Relational (b) Document NoSQL (c) Graph (d) Key-Value
উত্তর: (b) Document NoSQL
৩. দুই টেবিলের সংযোগ তৈরি করে কোনটা? (a) Primary Key (b) Foreign Key (c) Schema (d) Index
উত্তর: (b) Foreign Key
৪. SELECT কমান্ডের কাজ কী? (a) ডেটা মোছা (b) ডেটা যোগ করা (c) ডেটা পড়া (d) টেবিল বানানো
উত্তর: (c) ডেটা পড়া
৫. 1NF-এর মূল শর্ত কী? (a) একটা সেলে একাধিক ভ্যালু (b) একটা সেলে একটাই ভ্যালু (c) Foreign Key থাকা লাগবে (d) কোনোটিই না
উত্তর: (b) একটা সেলে একটাই ভ্যালু
ক্লাসরুম অ্যাক্টিভিটি সারসংক্ষেপ
- জোড়ায় ভাগ হয়ে এক্সেলের সীমাবদ্ধতা খুঁজে বের করা
- নিজের ক্লাসের একটা Students টেবিল হাতে আঁকা
- Role-play: একজন "লাইব্রেরিয়ান" হয়ে SQL কমান্ডের ভূমিকা অভিনয় করা
- গ্রুপ ডিসকাশন: Hospital Management System-এর জন্য কোন কোন টেবিল দরকার?
হোমওয়ার্ক অ্যাসাইনমেন্ট
- নিজের পছন্দের যেকোনো একটা বিজনেস (যেমন — একটা রেস্টুরেন্ট) এর জন্য ৩টা টেবিল ডিজাইন করো, প্রতিটাতে Primary Key ও Foreign Key দেখাও।
- Google Colab-এ আজকের শেখানো ৭টা ধাপ নিজে নিজে আবার রান করো, এবার নিজের পছন্দের ডেটা দিয়ে।
- SQL vs NoSQL তুলনা টেবিলটা মুখস্থ না করে, নিজের ভাষায় ৫টা বাক্যে লেখো।