Exam-ready answer with definition, difference table, examples, advantages, and conclusion.
SQL এ ভিউ এবং টেবিলের মধ্যে পার্থক্য কি? উদাহরণ সহযোগে বর্ণনা কর। ভিউ এর উপকারিতা কি?
SQL বা Relational Database Management System-এ Table এবং View দুটিই data দেখানো ও ব্যবহার করার জন্য গুরুত্বপূর্ণ database object। তবে Table এবং View এক জিনিস নয়। এদের কাজ, storage, data access এবং ব্যবহারিক উদ্দেশ্য আলাদা।
Table হলো database-এর physical object যেখানে actual data rows এবং columns আকারে সংরক্ষিত থাকে। অন্যদিকে View হলো একটি virtual table, যা এক বা একাধিক table-এর উপর লেখা SELECT query-এর result দেখায়।
সহজ ভাষায়: Table actual data store করে, কিন্তু View নিজে data store করে না; View হলো saved query-এর মাধ্যমে তৈরি virtual table।
Table হলো database-এর একটি physical structure যেখানে data rows এবং columns আকারে সংরক্ষিত থাকে। প্রতিটি row একটি record নির্দেশ করে এবং প্রতিটি column record-এর একটি attribute বা property নির্দেশ করে।
Table-এ data directly insert, update, delete এবং retrieve করা যায়। Table সাধারণত database-এর মূল data storage হিসেবে কাজ করে।
Definition: A table is a physical database object that stores data in rows and columns.
View হলো SQL-এর একটি virtual table, যা একটি SELECT query-এর result-এর উপর ভিত্তি করে তৈরি হয়। View নিজে actual data store করে না। এটি base table বা tables থেকে data এনে user-এর সামনে table-এর মতো দেখায়।
View ব্যবহার করে complex query সহজ করা যায়, sensitive data hide করা যায় এবং user-কে প্রয়োজনীয় data-এর একটি controlled view দেখানো যায়।
Definition: A view is a virtual table based on the result of a SQL query. It does not store data itself but displays data from one or more base tables.
ধরা যাক, আমরা একটি Student table তৈরি করতে চাই যেখানে student-এর roll number, name, department এবং marks থাকবে।
CREATE TABLE Student (
Roll_No INT PRIMARY KEY,
Name VARCHAR(50),
Department VARCHAR(50),
Marks INT
);
এখন table-এ data insert করা হলো:
INSERT INTO Student (Roll_No, Name, Department, Marks)
VALUES
(101, 'Rahul', 'Computer Science', 85),
(102, 'Riya', 'Commerce', 72),
(103, 'Karim', 'Computer Science', 90),
(104, 'Anita', 'Arts', 68);
Student table-এর data:
| Roll_No | Name | Department | Marks |
|---|---|---|---|
| 101 | Rahul | Computer Science | 85 |
| 102 | Riya | Commerce | 72 |
| 103 | Karim | Computer Science | 90 |
| 104 | Anita | Arts | 68 |
এখানে Student table actual data store করছে। তাই এটি physical table।
এখন যদি আমরা শুধু Computer Science department-এর students দেখাতে চাই, তাহলে বারবার query না লিখে একটি View তৈরি করতে পারি।
CREATE VIEW CS_Students AS
SELECT Roll_No, Name, Marks
FROM Student
WHERE Department = 'Computer Science';
View ব্যবহার করে data দেখার query:
SELECT * FROM CS_Students;
Output:
| Roll_No | Name | Marks |
|---|---|---|
| 101 | Rahul | 85 |
| 103 | Karim | 90 |
এখানে CS_Students View নিজে data store করছে না। এটি Student table থেকে Computer Science department-এর selected data দেখাচ্ছে।
| বিষয় | Table | View |
|---|---|---|
| Definition | Table হলো physical database object যেখানে actual data store হয়। | View হলো virtual table যা query-এর result দেখায়। |
| Data Storage | Table actual data store করে। | View সাধারণত actual data store করে না। |
| Physical Space | Table database storage space ব্যবহার করে। | View সাধারণত query definition store করে, actual data নয়। |
| Data Source | Table নিজেই data source। | View base table বা multiple tables-এর উপর নির্ভর করে। |
| Data Modification | Table-এ INSERT, UPDATE, DELETE করা যায়। | View সব ক্ষেত্রে directly update করা যায় না; simple view update হতে পারে, complex view নাও হতে পারে। |
| Security | Table access দিলে user অনেক data দেখতে পারে। | View ব্যবহার করে selected rows বা columns দেখানো যায়। |
| Complex Query | Complex result পেতে বারবার query লিখতে হয়। | Complex query একবার view হিসেবে save করে বারবার ব্যবহার করা যায়। |
| Dependency | Table independent object হিসেবে কাজ করে। | View underlying table-এর উপর dependent। |
| Example | Student table actual student data store করে। | CS_Students view Student table থেকে selected data দেখায়। |
View database ব্যবহারের ক্ষেত্রে অনেক সুবিধা দেয়। বিশেষ করে যখন complex query বারবার ব্যবহার করতে হয়, অথবা user-কে table-এর পুরো data না দেখিয়ে selected data দেখাতে হয়, তখন View খুব useful।
View একটি abstraction layer হিসেবে কাজ করে। User table-এর actual structure না জেনেও View-এর মাধ্যমে প্রয়োজনীয় data access করতে পারে।
অনেক সময় multiple table join করে বা condition দিয়ে complex query লিখতে হয়। View ব্যবহার করলে সেই complex query একবার create করে পরে simple SELECT statement দিয়ে result দেখা যায়।
SELECT * FROM CS_Students;
এখানে user-কে পুরো complex SELECT query লিখতে হচ্ছে না।
View ব্যবহার করে user-কে table-এর সব columns না দেখিয়ে নির্দিষ্ট columns দেখানো যায়। যেমন salary, password, phone number-এর মতো sensitive column hide করা যায়।
CREATE VIEW Student_Public_Info AS
SELECT Roll_No, Name, Department
FROM Student;
এই View-তে Marks column hide করা হয়েছে।
View user-কে database-এর internal structure থেকে দূরে রাখে। User শুধু View দেখে data access করে, base table-এর জটিল structure জানার দরকার হয় না।
একই query বারবার লিখতে না হয়ে View তৈরি করে বারবার ব্যবহার করা যায়। এতে query writing সহজ হয় এবং time save হয়।
একই calculation বা same filtering condition বারবার manually না লিখে View ব্যবহার করলে result consistent থাকে।
Different users-এর জন্য different View তৈরি করা যায়। যেমন student user শুধু নিজের marks দেখতে পাবে, teacher user department-wise marks দেখতে পাবে।
View ব্যবহার করে multiple tables join করে একটি virtual table আকারে data দেখানো যায়।
ধরা যাক, দুটি table আছে: Student এবং Department।
CREATE TABLE Department (
Dept_ID INT PRIMARY KEY,
Dept_Name VARCHAR(50)
);
CREATE TABLE Student (
Roll_No INT PRIMARY KEY,
Name VARCHAR(50),
Dept_ID INT,
Marks INT
);
এখন Student এবং Department table join করে একটি View তৈরি করা যায়:
CREATE VIEW Student_Department_View AS
SELECT
S.Roll_No,
S.Name,
D.Dept_Name,
S.Marks
FROM Student AS S
JOIN Department AS D
ON S.Dept_ID = D.Dept_ID;
View ব্যবহার:
SELECT * FROM Student_Department_View;
এই View ব্যবহার করলে user সহজেই student-এর নাম, department name এবং marks একসঙ্গে দেখতে পাবে।
| Command | কাজ |
|---|---|
| CREATE VIEW | নতুন View তৈরি করে। |
| SELECT FROM VIEW | View থেকে data দেখায়। |
| CREATE OR REPLACE VIEW | Existing View replace বা update করে। |
| DROP VIEW | View delete করে। |
CREATE VIEW View_Name AS
SELECT column1, column2
FROM Table_Name
WHERE condition;
SELECT * FROM View_Name;
DROP VIEW View_Name;
একটি college database-এ Student table-এ অনেক information থাকতে পারে: Roll_No, Name, Department, Marks, Phone, Address, Fee_Status ইত্যাদি।
যদি admin user সব information দেখতে পারে কিন্তু সাধারণ student user শুধু Roll_No, Name এবং Marks দেখতে পারে, তাহলে View ব্যবহার করা যেতে পারে।
CREATE VIEW Student_Result_View AS
SELECT Roll_No, Name, Marks
FROM Student;
এই View ব্যবহার করে student user sensitive data যেমন Phone, Address বা Fee_Status দেখতে পাবে না।
Table: Actual data storage.
View: Virtual representation of data based on a query.
Table = Stores actual data
View = Shows selected or processed data from table
সুতরাং, SQL-এ Table এবং View দুটিই গুরুত্বপূর্ণ database object হলেও এদের মধ্যে মৌলিক পার্থক্য রয়েছে। Table actual data rows এবং columns আকারে store করে, কিন্তু View হলো virtual table যা base table-এর data query-এর মাধ্যমে দেখায়।
View ব্যবহার করলে complex query সহজ হয়, security বাড়ে, sensitive data hide করা যায় এবং user-specific data presentation করা যায়। তাই database management এবং reporting-এর ক্ষেত্রে View অত্যন্ত গুরুত্বপূর্ণ।