📋 বিষয়সূচী (Table of Contents)

01

টেবিল কেন দরকার?

⏱ ১৫ মিনিট
🧑‍🏫 কল্পনা করো

একটা স্কুলে ৫,০০০ শিক্ষার্থী পড়ে। স্কুলকে রাখতে হয় প্রতিটা শিক্ষার্থীর আইডি, নাম, ক্লাস, সেকশন, ফোন নম্বর, ঠিকানা ও ফলাফল।

❓ আমরা কি সব তথ্য একটা খাতায় এলোমেলোভাবে লিখতে পারি?

পারি, কিন্তু পরে খুঁজে পাওয়া প্রায় অসম্ভব হয়ে যাবে।

❓ একজন নির্দিষ্ট শিক্ষার্থীর তথ্য কীভাবে দ্রুত খুঁজে বের করবো?

তথ্য যদি সুসংগঠিতভাবে সাজানো থাকে তবেই দ্রুত পাওয়া সম্ভব।

❓ হাজার হাজার নতুন শিক্ষার্থী ভর্তি হলে কী হবে?

এলোমেলো খাতায় এটা সামলানো অসম্ভব হয়ে পড়বে।

💡 উপমা: স্কুলের হাজিরা খাতা

স্কুলে হাজিরা নেওয়ার সময় শিক্ষক একটা খাতায় সারি করে প্রতিটা শিক্ষার্থীর নাম লেখেন, আর কলাম করে প্রতিদিনের হাজিরা চিহ্ন দেন। এটা এলোমেলো লেখার চেয়ে অনেক দ্রুত পড়া ও বোঝা যায় — কারণ এটা একটা "সারি-কলাম" কাঠামোতে সাজানো।

একইভাবে, একটা এক্সেল স্প্রেডশিট, একটা ক্লাস রেজাল্ট শিট, বা একটা হাসপাতালের রোগী রেজিস্টার — এই সবগুলোই সারি ও কলামে তথ্য সাজানোর উদাহরণ। ডেটাবেজেও ঠিক এই একই ধরনের কাঠামো ব্যবহার হয়, যাকে বলে Table

Unorganized Data
এলোমেলো তথ্য
Organized Records
সারি-কলামে সাজানো
Database Table
ডেটাবেজে সংরক্ষিত কাঠামো
02

Table কী?

⏱ ১৫ মিনিট

সংজ্ঞা: Table হলো ডেটাবেজের সেই কাঠামো, যেখানে একই ধরনের তথ্য সারি (Row) ও কলামের (Column) মধ্যে সুসংগঠিতভাবে রাখা হয়।

একটা Students টেবিলের গঠন

student_idnameclass
1রিমা
2সাকিব
Column = একটা বৈশিষ্ট্য (যেমন "class") Row = একজনের সম্পূর্ণ তথ্য Cell = একটা নির্দিষ্ট মান (হাইলাইট করা "৯")
Table
Columns
(Field/Attribute)
Rows
(Record)
Cells
(একক মান)
টার্মসহজ সংজ্ঞাউদাহরণ
Tableএকই ধরনের তথ্যের পুরো সংগ্রহStudents টেবিল
Row (Record)একজন/একটার সম্পূর্ণ তথ্য"১, রিমা, ৮" — একটা সম্পূর্ণ সারি
Column (Field/Attribute)একটা নির্দিষ্ট বৈশিষ্ট্যশুধু "name" কলাম
Cellএকটা নির্দিষ্ট সারি ও কলামের ছেদবিন্দুতে থাকা একক মানসাকিবের "class" ঘরে থাকা "৯"
03

SQL-এ টেবিল তৈরি করা

⏱ ২৫ মিনিট
SQL কোড
CREATE TABLE Students ( student_id INT, name VARCHAR(50), class INT, admission_date DATE, gpa FLOAT, is_active BOOLEAN );
আউটপুট
Query OK, 0 rows affected. (টেবিল সফলভাবে তৈরি হয়েছে)

লাইন-বাই-লাইন ব্যাখ্যা:

  • CREATE TABLE Students — "Students" নামে একটা নতুন টেবিলের কাঠামো তৈরি হচ্ছে
  • প্রতিটা লাইনে একটা করে কলামের নাম ও তার ডেটা টাইপ উল্লেখ করা হয়েছে

টেবিল ও কলামের নামকরণের নিয়ম

ভালো নামখারাপ নামকেন
Students1_studentsনাম সংখ্যা দিয়ে শুরু করা যায় না
student_namestudent nameনামে ফাঁকা জায়গা রাখা উচিত না, আন্ডারস্কোর ব্যবহার করা ভালো
admission_datedate"date" এর মতো সংরক্ষিত শব্দ এড়ানো উচিত

সাধারণ ডেটা টাইপসমূহ

Data Typeকী রাখেউদাহরণ
INTপূর্ণসংখ্যাবয়স, ক্লাস, আইডি
VARCHAR(n)লেখা (সর্বোচ্চ n অক্ষর)নাম, ঠিকানা
DATEতারিখ (YYYY-MM-DD)জন্মতারিখ, ভর্তির তারিখ
FLOATদশমিক সংখ্যাGPA, ওজন
BOOLEANহ্যাঁ/না (TRUE/FALSE)সক্রিয় কিনা, পাস/ফেল
⚠️ সাধারণ শুরুর ভুল:
  • ফোন নম্বরের জন্য INT ব্যবহার করা — শুরুতে ০ থাকলে তা হারিয়ে যায়, তাই VARCHAR ব্যবহার করা উচিত
  • টেবিল নাম সংখ্যা দিয়ে শুরু করা, যা অনেক ডেটাবেজে অনুমোদিত না
  • দুইটা কলামের একই নাম রাখা, যা এরর সৃষ্টি করে
✅ Best Practice

সবসময় ছোট হাতের অক্ষর ও আন্ডারস্কোর (_) দিয়ে নাম লেখা, এবং ডেটার প্রকৃতি বুঝে সঠিক ডেটা টাইপ বেছে নেওয়া।

04

টেবিলের গঠন বোঝা

⏱ ২০ মিনিট

🔑 Primary Key

উপমা: প্রতিটা শিক্ষার্থীর জাতীয় পরিচয়পত্র নম্বরের মতো — কারো সাথে কারো মিলবে না।

সংজ্ঞা: এমন একটা কলাম, যার মান প্রতিটা রেকর্ডে অনন্য (unique) এবং কখনো ফাঁকা থাকতে পারে না।

SQL উদাহরণ
student_id INT PRIMARY KEY
বিজনেস ব্যবহার

প্রতিটা শিক্ষার্থীকে অনন্যভাবে শনাক্ত করতে, যাতে দুইজন শিক্ষার্থীর তথ্য গুলিয়ে না যায়।

🔗 Foreign Key (প্রাথমিক পরিচিতি)

উপমা: একটা রেফারেন্স চিঠি — "এই শিক্ষার্থী কোন ক্লাসের, তা জানতে Classes টেবিলে দেখো।"

সংজ্ঞা: একটা কলাম, যা অন্য একটা টেবিলের Primary Key-কে নির্দেশ করে দুইটা টেবিলকে সংযুক্ত করে।

SQL উদাহরণ
FOREIGN KEY (class_id) REFERENCES Classes(class_id)

❓ NULL

উপমা: একটা ফর্মে কোনো ঘর ইচ্ছাকৃতভাবে খালি রাখা হলো — সেটা "শূন্য (0)" না, বরং "এখনো কিছু লেখা হয়নি"।

সংজ্ঞা: NULL মানে একটা কলামে কোনো মান নেই, এটা ০ বা খালি লেখা ("") থেকে ভিন্ন।

⚠️ সাধারণ ভুল: NULL-কে খালি টেক্সট (" ") বা সংখ্যা ০ এর সমান ভাবা — বাস্তবে NULL মানে "অজানা" বা "প্রযোজ্য নয়", সম্পূর্ণ আলাদা একটা ধারণা।

🚫 NOT NULL

উপমা: একটা ভর্তি ফর্মে "নাম" ঘরটা বাধ্যতামূলক — খালি রাখা যাবে না।

সংজ্ঞা: এই constraint নিশ্চিত করে যে কলামটা কখনো NULL (ফাঁকা) থাকতে পারবে না।

SQL উদাহরণ
name VARCHAR(50) NOT NULL

🎯 DEFAULT

উপমা: একটা নতুন ব্যাংক অ্যাকাউন্ট খোলার সময় স্বয়ংক্রিয়ভাবে ব্যালেন্স "০" বসিয়ে দেওয়া, যদি কেউ না বলে।

সংজ্ঞা: কোনো মান না দিলে স্বয়ংক্রিয়ভাবে যে ডিফল্ট মান বসবে।

SQL উদাহরণ
is_active BOOLEAN DEFAULT TRUE

🔢 AUTO_INCREMENT

উপমা: একটা টোকেন কাউন্টার, যেখানে প্রতিটা নতুন কাস্টমারের জন্য স্বয়ংক্রিয়ভাবে ১টা করে বাড়তি নম্বর দেওয়া হয়।

সংজ্ঞা: প্রতিটা নতুন রেকর্ডে স্বয়ংক্রিয়ভাবে ক্রমবর্ধমান একটা সংখ্যা বসিয়ে দেয়, ম্যানুয়ালি লিখতে হয় না।

SQL উদাহরণ
student_id INT AUTO_INCREMENT PRIMARY KEY
বিজনেস ব্যবহার

নতুন শিক্ষার্থী ভর্তির সময় প্রতিবার নিজে থেকে আইডি তৈরি হয়, ভুল করে ডুপ্লিকেট আইডি দেওয়ার ঝুঁকি থাকে না।

05

টেবিল দেখা ও পরিচালনা

⏱ ১৫ মিনিট

সব টেবিলের তালিকা দেখা

SQL কোড
SHOW TABLES;
আউটপুট
Tables_in_SchoolDB
Students
Courses
Results

ব্যাখ্যা: এই ডেটাবেজে বর্তমানে কী কী টেবিল আছে তা দেখায়।

একটা টেবিলের কাঠামো দেখা

SQL কোড
DESCRIBE Students;
আউটপুট
FieldTypeNullKey
student_idintNOPRI
namevarchar(50)NO
classintYES

ব্যাখ্যা: প্রতিটা কলামের নাম, ডেটা টাইপ, NULL অনুমোদিত কিনা, এবং Key তথ্য দেখায়।

টেবিল তৈরির সম্পূর্ণ কমান্ড দেখা

SQL কোড
SHOW CREATE TABLE Students;
আউটপুট
CREATE TABLE `Students` ( `student_id` int NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `class` int DEFAULT NULL, PRIMARY KEY (`student_id`) )

ব্যাখ্যা: এটা দেখায় ঠিক কোন SQL কোড দিয়ে টেবিলটা তৈরি হয়েছিল — যেন কেউ ভুলে গেলে আবার দেখে নিতে পারে।

টেবিলের নাম পরিবর্তন

SQL কোড
RENAME TABLE Students TO Learners;
আউটপুট
Query OK, 0 rows affected.

টেবিল মুছে ফেলা (ধারণাগত)

কমান্ডপ্রভাব
DROP TABLE table_name;টেবিল ও তার কাঠামো দুটোই স্থায়ীভাবে মুছে যায়
TRUNCATE TABLE table_name;শুধু ডেটা খালি হয়, কাঠামো থেকে যায়
06

বাস্তব বিজনেস কেস স্টাডি: School Management System

⏱ ২০ মিনিট
টেবিলকেন দরকারমূল কলাম
Studentsশিক্ষার্থীর তথ্য রাখতেstudent_id (PK), name, class, department_id (FK)
Teachersশিক্ষকের তথ্য রাখতেteacher_id (PK), name, subject
Coursesকোর্সের তথ্য রাখতেcourse_id (PK), course_name, teacher_id (FK)
Departmentsবিভাগের তথ্য রাখতেdepartment_id (PK), department_name
Resultsফলাফল রাখতেresult_id (PK), student_id (FK), course_id (FK), marks

টেবিলগুলোর সম্পর্ক

Departments
department_idPK
১ → বহু
Students
student_idPK
department_idFK
বহু ↔ বহু
Results
student_idFK
course_idFK
← ১
Courses
course_idPK
teacher_idFK

লক্ষ্য করো, Results টেবিলটা Students ও Courses-এর মাঝে সংযোগকারী হিসেবে কাজ করছে — কারণ একজন শিক্ষার্থীর একাধিক কোর্সের ফলাফল থাকতে পারে।

07

MySQL Workbench প্র্যাকটিক্যাল সেশন

⏱ প্র্যাকটিক্যাল

ধাপ ১: Database তৈরি

CREATE DATABASE SchoolDB; USE SchoolDB;
আউটপুট
Database created and selected.

ধাপ ২: Students টেবিল তৈরি

CREATE TABLE Students ( student_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, class INT );

ধাপ ৩: Courses টেবিল তৈরি

CREATE TABLE Courses ( course_id INT AUTO_INCREMENT PRIMARY KEY, course_name VARCHAR(50) NOT NULL );

ধাপ ৪: Results টেবিল তৈরি (দুইটা Foreign Key সহ)

CREATE TABLE Results ( result_id INT AUTO_INCREMENT PRIMARY KEY, student_id INT, course_id INT, marks FLOAT, FOREIGN KEY (student_id) REFERENCES Students(student_id), FOREIGN KEY (course_id) REFERENCES Courses(course_id) );
আউটপুট
Query OK, 0 rows affected. (৩টা টেবিল তৈরি ও সংযুক্ত হলো)

ধাপ ৫: সব টেবিল দেখা

SHOW TABLES;
Tables_in_SchoolDB
Students
Courses
Results

ধাপ ৬: প্রতিটা টেবিলের কাঠামো দেখা

DESCRIBE Results;
FieldTypeKey
result_idintPRI
student_idintMUL
course_idintMUL
marksfloat

ধাপ ৭: টেবিলের নাম পরিবর্তন

RENAME TABLE Courses TO Subjects;

ধাপ ৮: একটা প্র্যাকটিস টেবিল মুছে ফেলা

CREATE TABLE TestTable (id INT); DROP TABLE TestTable;
আউটপুট
Query OK, 0 rows affected. (TestTable মুছে ফেলা হয়েছে)
⚠️ সাধারণ শুরুর ভুল:
  • Foreign Key যোগ করার আগে "parent" টেবিল (যেমন Students) তৈরি না করে ফেলা
  • ভুল টেবিল DROP করে ফেলা — তাই কমান্ড চালানোর আগে নাম দুইবার যাচাই করা উচিত
08

সাধারণ শুরুর ভুল

⏱ আলোচনা
❌ Primary Key ভুলে যাওয়া

✅ সমাধান: প্রতিটা টেবিলে একটা Primary Key রাখা অভ্যাস করো।

❌ ভুল ডেটা টাইপ ব্যবহার করা

✅ সমাধান: ফোন নম্বরের জন্য VARCHAR, টাকার জন্য DECIMAL/FLOAT ব্যবহার করো।

❌ দুর্বল টেবিল নামকরণ

✅ সমাধান: স্পষ্ট, অর্থবহ ও সামঞ্জস্যপূর্ণ নাম ব্যবহার করো।

❌ ডুপ্লিকেট কলাম রাখা

✅ সমাধান: একই তথ্যের জন্য একাধিক কলাম না বানিয়ে একটাই কলাম রাখো।

❌ অসম্পর্কিত তথ্য একই টেবিলে মেশানো

✅ সমাধান: শিক্ষার্থী ও শিক্ষকের তথ্য আলাদা টেবিলে রাখো, একসাথে না।

❌ ভুলবশত টেবিল DROP করে ফেলা

✅ সমাধান: DROP চালানোর আগে টেবিলের নাম দুইবার যাচাই করো এবং ব্যাকআপ রাখো।

❌ NULL-কে খালি টেক্সটের সাথে গুলিয়ে ফেলা

✅ সমাধান: মনে রাখো, NULL মানে "কোনো মান নেই", খালি টেক্সট (" ") একটা ভিন্ন মান।

09

ইন্ডাস্ট্রি বেস্ট প্র্যাকটিস

⏱ আলোচনা

🏷️ নামকরণের নিয়ম

ছোট হাতের অক্ষর, আন্ডারস্কোর, বহুবচন টেবিল নাম ব্যবহার করা

🔤 সামঞ্জস্যপূর্ণ ডেটা টাইপ

সব টেবিলে একই ধরনের তথ্যের জন্য একই ডেটা টাইপ ব্যবহার করা

🔁 Normalization (মৌলিক ধারণা)

একই তথ্য বার বার না রেখে যৌক্তিক টেবিলে ভাগ করা কৌশল

📝 ডকুমেন্টেশন

প্রতিটা টেবিল ও কলাম কী উদ্দেশ্যে তৈরি তা লিখে রাখা

📈 স্কেলেবিলিটি

ভবিষ্যতে নতুন তথ্য/কলাম সহজে যোগ করার মতো নমনীয় ডিজাইন রাখা

🛠️ রক্ষণাবেক্ষণযোগ্যতা

টেবিল কাঠামো এমনভাবে রাখা যাতে পরিবর্তন সহজে করা যায়

10

ক্লাসরুম অ্যাক্টিভিটি

⏱ ইন্টারেক্টিভ
অ্যাক্টিভিটি ১ (সারি-কলাম চেনা): একটা ছোট টেবিল দেখিয়ে শিক্ষার্থীদের বলতে হবে কোনটা Row আর কোনটা Column।
অ্যাক্টিভিটি ২ (টেবিল ডিজাইন): ছোট দলে ভাগ হয়ে একটা "Library"-এর জন্য একটা টেবিল ডিজাইন করতে হবে — কী কী কলাম দরকার তা ঠিক করে।
অ্যাক্টিভিটি ৩ (সঠিক ডেটা টাইপ বাছাই): কিছু কলাম নাম (যেমন "জন্মতারিখ", "GPA", "ফোন নম্বর") দিয়ে সঠিক ডেটা টাইপ বাছাই করতে বলা।
অ্যাক্টিভিটি ৪ (ভুল খুঁজে বের করা): একটা খারাপভাবে ডিজাইন করা টেবিল (যেমন Primary Key ছাড়া, ভুল ডেটা টাইপ সহ) দেখিয়ে ভুল চিহ্নিত করতে বলা।
অ্যাক্টিভিটি ৫ (বিজনেস সিনারিও থেকে টেবিল আঁকা): একটা বিজনেস সিনারিও দিয়ে ("একটা জিম মেম্বারশিপ সিস্টেম") শিক্ষার্থীদের নিজে একটা টেবিল কাগজে এঁকে দেখাতে বলা।
11

রিভিশন ও প্রশ্নোত্তর

⏱ শেষ পর্যালোচনা

📌 দ্রুত রিভিশন নোট

  • Table = সারি-কলামে সাজানো তথ্যের কাঠামো
  • Row = একটা রেকর্ড, Column = একটা বৈশিষ্ট্য, Cell = একটা একক মান
  • Primary Key = অনন্য শনাক্তকারী, Foreign Key = অন্য টেবিলের সাথে সংযোগ
  • NULL ≠ খালি টেক্সট বা ০, NULL মানে "কোনো মান নেই"
  • SHOW TABLES, DESCRIBE, SHOW CREATE TABLE — টেবিল দেখা ও যাচাইয়ের কমান্ড

🏛️ সম্পূর্ণ ডেটাবেজ স্ট্রাকচার ডায়াগ্রাম

Database
Tables
Rows
Columns
Cells

🕰️ Database Table-এর সংক্ষিপ্ত ইতিহাস

একসময় স্কুল, হাসপাতাল, ব্যাংক সবকিছুর তথ্য কাগজের রেজিস্টারে হাতে লেখা হতো। কম্পিউটার আসার পর, ১৯৭০-এর দশকে Relational Database Model প্রবর্তিত হয়, যেখানে তথ্য টেবিল আকারে (সারি-কলামে) সংরক্ষণের ধারণা আসে — এটাই আজকের SQL টেবিলের ভিত্তি। এখন আধুনিক ক্লাউড ডেটাবেজ ব্যবহার করে কোটি কোটি রেকর্ড নিয়ে টেবিল একসাথে, নিরাপদে ও দ্রুতগতিতে পরিচালনা করা সম্ভব।

🏥 মিনি প্রজেক্ট: হাসপাতাল ম্যানেজমেন্ট টেবিল ডিজাইন

টেবিলমূল কলাম
Patientspatient_id (PK, AUTO_INCREMENT), name, age, phone
Doctorsdoctor_id (PK), name, specialty
Appointmentsappointment_id (PK), patient_id (FK), doctor_id (FK), appointment_date
নমুনা SQL
CREATE TABLE Patients ( patient_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT, phone VARCHAR(15) ); CREATE TABLE Doctors ( doctor_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, specialty VARCHAR(50) ); CREATE TABLE Appointments ( appointment_id INT AUTO_INCREMENT PRIMARY KEY, patient_id INT, doctor_id INT, appointment_date DATE, FOREIGN KEY (patient_id) REFERENCES Patients(patient_id), FOREIGN KEY (doctor_id) REFERENCES Doctors(doctor_id) );

👥 প্রফেশনাল ওয়ার্কফ্লো

Database Administrator
টেবিলের নিরাপত্তা ও পারফরম্যান্স নিশ্চিত করেন
Data Engineer
টেবিল ডিজাইন ও তৈরি করেন
Data Analyst
টেবিল থেকে ডেটা বের করে বিশ্লেষণ করেন

❓ ভাইভা প্রশ্ন

১. Table কী?
সারি-কলামে সাজানো তথ্যের একটা কাঠামো।
২. Row ও Column-এর পার্থক্য কী?
Row একটা সম্পূর্ণ রেকর্ড, Column একটা নির্দিষ্ট বৈশিষ্ট্য।
৩. Primary Key কী?
এমন একটা কলাম যার মান প্রতিটা রেকর্ডে অনন্য।
৪. AUTO_INCREMENT কী কাজ করে?
প্রতিটা নতুন রেকর্ডে স্বয়ংক্রিয়ভাবে ক্রমবর্ধমান একটা সংখ্যা বসায়।
৫. NULL মানে কী?
কোনো মান নেই, এটা ০ বা খালি টেক্সট থেকে ভিন্ন।

💼 ইন্টারভিউ প্রস্তুতি — টপ ৩০টি বিগিনার লেভেল প্রশ্ন

১. SQL Table কী?
একই ধরনের তথ্য সারি-কলাম আকারে রাখার কাঠামো।
২. Row ও Record কি একই জিনিস?
হ্যাঁ, উভয়ই একটা সম্পূর্ণ এন্ট্রি বোঝায়।
৩. Column-কে আর কী কী নামে ডাকা হয়?
Field বা Attribute।
৪. CREATE TABLE কমান্ডের কাজ কী?
একটা নতুন টেবিলের কাঠামো তৈরি করা।
৫. VARCHAR ও CHAR-এর মূল পার্থক্য কী (ধারণাগত)?
VARCHAR প্রয়োজন অনুযায়ী জায়গা নেয়, CHAR নির্দিষ্ট আকারের জায়গা সবসময় সংরক্ষণ করে।
৬. Primary Key কি NULL হতে পারে?
না, Primary Key কখনো NULL হতে পারে না।
৭. Foreign Key কী কাজ করে?
একটা টেবিলকে অন্য টেবিলের সাথে সংযুক্ত করে।
৮. NOT NULL constraint কী নিশ্চিত করে?
একটা কলাম কখনো ফাঁকা রাখা যাবে না।
৯. DEFAULT কীওয়ার্ড কী কাজ করে?
মান না দিলে স্বয়ংক্রিয়ভাবে একটা নির্দিষ্ট মান বসায়।
১০. SHOW TABLES কমান্ড কী দেখায়?
ডেটাবেজে থাকা সব টেবিলের তালিকা।
১১. DESCRIBE কমান্ড কী দেখায়?
একটা টেবিলের কলাম, ডেটা টাইপ ও Key তথ্য।
১২. SHOW CREATE TABLE কী দেখায়?
টেবিলটা তৈরি করার সম্পূর্ণ মূল SQL কমান্ড।
১৩. RENAME TABLE কী কাজ করে?
টেবিলের নাম পরিবর্তন করে, ডেটা অপরিবর্তিত থাকে।
১৪. DROP TABLE ও TRUNCATE TABLE-এর পার্থক্য কী?
DROP টেবিল ও কাঠামো দুটোই মুছে দেয়, TRUNCATE শুধু ডেটা খালি করে কাঠামো রাখে।
১৫. একটা টেবিলে একাধিক Foreign Key থাকতে পারে কি?
হ্যাঁ, একটা টেবিল একাধিক ভিন্ন টেবিলকে রেফার করতে পারে।
১৬. Cell কী?
একটা নির্দিষ্ট সারি ও কলামের ছেদবিন্দুতে থাকা একক মান।
১৭. AUTO_INCREMENT ব্যবহারের সুবিধা কী?
ম্যানুয়ালি আইডি লিখতে হয় না, ডুপ্লিকেট আইডির ঝুঁকি কমে।
১৮. ফোন নম্বরের জন্য INT ব্যবহার না করার কারণ কী?
শুরুতে ০ থাকলে তা হারিয়ে যেতে পারে, তাই VARCHAR ব্যবহার করা ভালো।
১৯. একটা ভালো টেবিল ডিজাইনের বৈশিষ্ট্য কী?
সঠিক Primary Key, সঠিক ডেটা টাইপ, অর্থবহ নামকরণ, ও প্রাসঙ্গিক তথ্যই একসাথে রাখা।
২০. Normalization কী (মৌলিক ধারণা)?
ডুপ্লিকেট ডেটা কমাতে তথ্যকে যৌক্তিক টেবিলে ভাগ করার কৌশল।
২১. একটা টেবিলে দুইটা কলামের একই নাম রাখা যায় কি?
না, প্রতিটা কলামের নাম অবশ্যই আলাদা হতে হবে।
২২. FLOAT ডেটা টাইপ কী রাখে?
দশমিক সংখ্যা, যেমন GPA বা ওজন।
২৩. BOOLEAN ডেটা টাইপ কী রাখে?
TRUE/FALSE ধরনের মান।
২৪. টেবিল ডিজাইনে স্কেলেবিলিটি কেন গুরুত্বপূর্ণ?
ভবিষ্যতে ডেটা বাড়লে সহজে নতুন কলাম বা টেবিল যোগ করা যায়।
২৫. Data Engineer টেবিল ডিজাইনে কী ভূমিকা রাখেন?
টেবিলের কাঠামো ও সম্পর্ক পরিকল্পনা ও তৈরি করেন।
২৬. Database Administrator-এর ভূমিকা কী?
টেবিলের নিরাপত্তা, পারফরম্যান্স ও রক্ষণাবেক্ষণ নিশ্চিত করা।
২৭. Data Analyst টেবিল নিয়ে কী কাজ করেন?
টেবিল থেকে ডেটা বের করে (SELECT) বিশ্লেষণ ও রিপোর্ট তৈরি করেন।
২৮. পুরনো কাগজের রেজিস্টার থেকে SQL টেবিল কীভাবে বিবর্তিত হলো?
১৯৭০-এর দশকে Relational Database Model আসার পর কাগজের রেজিস্টার-ভিত্তিক ধারণা ডিজিটাল টেবিল-ভিত্তিক কাঠামোতে রূপান্তরিত হয়।
২৯. একটা টেবিলে অসম্পর্কিত তথ্য মেশানো কেন খারাপ অভ্যাস?
এতে ডেটা বিশৃঙ্খল হয়ে যায়, ডুপ্লিকেশন বাড়ে ও রক্ষণাবেক্ষণ কঠিন হয়।
৩০. একটা টেবিল তৈরির আগে কী কী চিন্তা করা উচিত?
কী কী কলাম দরকার, কোনটা Primary Key হবে, ডেটা টাইপ কী হবে, এবং অন্য টেবিলের সাথে সম্পর্ক কেমন হবে।

✅ MCQ প্র্যাকটিস

১. একটা টেবিলের একটা সম্পূর্ণ রেকর্ডকে কী বলে?
(ক) Column (খ) Row (গ) Cell (ঘ) Key
উত্তর: (খ) Row
২. প্রতিটা রেকর্ডে অনন্য মান রাখে কোনটা?
(ক) Foreign Key (খ) Column (গ) Primary Key (ঘ) NULL
উত্তর: (গ) Primary Key
৩. টেবিলের কাঠামো দেখতে কোন কমান্ড ব্যবহার হয়?
(ক) SELECT (খ) DESCRIBE (গ) DELETE (ঘ) INSERT
উত্তর: (খ) DESCRIBE
৪. স্বয়ংক্রিয়ভাবে ক্রমবর্ধমান আইডি তৈরি করে কোনটা?
(ক) DEFAULT (খ) NOT NULL (গ) AUTO_INCREMENT (ঘ) FOREIGN KEY
উত্তর: (গ) AUTO_INCREMENT
৫. NULL মানে কী?
(ক) সংখ্যা শূন্য (খ) খালি টেক্সট (গ) কোনো মান নেই (ঘ) নেগেটিভ মান
উত্তর: (গ) কোনো মান নেই

📝 হোমওয়ার্ক অ্যাসাইনমেন্ট

  1. একটা "Library Management System"-এর জন্য কমপক্ষে ২টা টেবিল ডিজাইন করো — Books ও Members, প্রতিটার মূল কলাম, Primary Key ও ডেটা টাইপ উল্লেখ করে।
  2. Database → Tables → Rows → Columns → Cells ডায়াগ্রাম নিজ হাতে এঁকে আনো, এবং প্রতিটার একটা করে নিজের উদাহরণ লেখো।
  3. Primary Key, Foreign Key, NULL, NOT NULL, DEFAULT ও AUTO_INCREMENT-এর প্রতিটার একটা করে সহজ বাক্যে ব্যাখ্যা লেখো।