مفهوم View در پایگاه داده
در پایگاهدادهها، View
(نمایش) یک شی مجازی است که بر اساس نتیجهی یک پرسوجوی SQL تعریف میشود. View شامل ردیفها و ستونهایی است که از یک یا چند جدول پایگاهداده استخراج میشوند. View به خودی خود حاوی داده نیست، بلکه یک پرسوجوی از پیش تعریفشده است که هر بار که به آن مراجعه میشود، اجرا میشود و دادهها را از جدولهای پایه بازیابی میکند.
مزایای استفاده از View:
- سادهسازی دسترسی به دادهها: View میتواند دادههای پیچیده را سادهسازی کند و فقط بخشی از دادهها را به کاربران نشان دهد.
- امنیت: با استفاده از View میتوان دسترسی کاربران به دادههای حساس را محدود کرد و فقط اجازه دسترسی به بخشی از دادهها را داد.
- یکپارچگی منطقی: View میتواند دادهها را از چندین جدول ترکیب کند و یک نمای یکپارچه ارائه دهد.
- کاهش پیچیدگی: با استفاده از View میتوان پرسوجوهای پیچیده را سادهسازی کرد و آنها را در قالب یک View ذخیره کرد.
ایجاد View:
برای ایجاد یک View در SQL، از دستور CREATE VIEW
استفاده میشود. به مثال زیر توجه کنید:
CREATE VIEW EmployeeView AS
SELECT EmployeeID, FirstName, LastName, Department
FROM Employees
WHERE Department = 'Sales';
در این مثال، یک View به نام EmployeeView
ایجاد شده است که فقط اطلاعات کارمندانی را نشان میدهد که در بخش فروش (Sales) کار میکنند.
استفاده از View:
پس از ایجاد View، میتوانید از آن مانند یک جدول معمولی در پرسوجوهای خود استفاده کنید:
SELECT * FROM EmployeeView;
این پرسوجو تمام ردیفها و ستونهای تعریفشده در View را برمیگرداند.
بهروزرسانی View:
اگر نیاز به تغییر در تعریف View داشته باشید، میتوانید از دستور CREATE OR REPLACE VIEW
استفاده کنید:
CREATE OR REPLACE VIEW EmployeeView AS
SELECT EmployeeID, FirstName, LastName, Department, HireDate
FROM Employees
WHERE Department = 'Sales';
حذف View:
برای حذف یک View از دستور DROP VIEW
استفاده میشود:
DROP VIEW EmployeeView;
محدودیتهای View:
- برخی از Viewها قابل بهروزرسانی نیستند (Non-Updatable Views)، به خصوص اگر از عملیات پیچیدهای مانند JOIN یا GROUP BY استفاده کرده باشند.
- Viewها ممکن است بر عملکرد پرسوجوها تأثیر بگذارند، زیرا هر بار که به View مراجعه میشود، پرسوجوی پایه اجرا میشود.
با استفاده از Viewها، میتوانید ساختار پایگاهداده خود را منعطفتر و امنتر کنید.
جدول مجازی در پایگاه داده
جدول مجازی (Virtual Table) در پایگاهدادهها به یک شیء پایگاهداده اشاره میکند که مانند یک جدول فیزیکی عمل میکند، اما خودش دادهها را ذخیره نمیکند. در عوض، دادهها را از جدولهای پایه (Base Tables) یا سایر منابع بازیابی میکند. دو مفهوم رایج که به عنوان جدول مجازی شناخته میشوند، View و Materialized View هستند. در اینجا به تفصیل به هر یک میپردازیم:
۱. View (نمایش)
View یک جدول مجازی است که بر اساس نتیجهی یک پرسوجوی SQL تعریف میشود. هر بار که به View مراجعه میشود، پرسوجوی تعریفشده اجرا میشود و دادهها از جدولهای پایه بازیابی میشوند.
ویژگیهای View:
- مجازی بودن: View دادهها را ذخیره نمیکند، بلکه فقط یک پرسوجوی از پیش تعریفشده است.
- پویایی: هر بار که به View مراجعه میشود، دادهها از جدولهای پایه بازیابی میشوند، بنابراین همیشه دادههای بهروز را نشان میدهد.
- سادهسازی: View میتواند پرسوجوهای پیچیده را سادهسازی کند.
- امنیت: با استفاده از View میتوان دسترسی کاربران به دادههای حساس را محدود کرد.
مثال ایجاد View:
CREATE VIEW EmployeeView AS
SELECT EmployeeID, FirstName, LastName, Department
FROM Employees
WHERE Department = 'Sales';
استفاده از View:
SELECT * FROM EmployeeView;
۲. Materialized View (نمایش مادیشده)
Materialized View یک جدول مجازی است که نتیجهی یک پرسوجوی SQL را ذخیره میکند. برخلاف View، Materialized View دادهها را به صورت فیزیکی ذخیره میکند و برای بازیابی دادهها نیازی به اجرای پرسوجوی پایه نیست. این نوع View معمولاً برای بهبود عملکرد در مواردی که پرسوجوها پیچیده و زمانبر هستند استفاده میشود.
ویژگیهای Materialized View:
- ذخیرهسازی دادهها: دادهها به صورت فیزیکی ذخیره میشوند.
- بهروزرسانی دستی یا خودکار: دادههای Materialized View باید بهروزرسانی شوند. این بهروزرسانی میتواند به صورت دستی (Manual) یا خودکار (Automatic) انجام شود.
- بهبود عملکرد: چون دادهها از قبل محاسبه و ذخیره شدهاند، پرسوجوها سریعتر اجرا میشوند.
مثال ایجاد Materialized View:
CREATE MATERIALIZED VIEW SalesSummary AS
SELECT Department, SUM(Sales) AS TotalSales
FROM Sales
GROUP BY Department;
بهروزرسانی Materialized View:
REFRESH MATERIALIZED VIEW SalesSummary;
تفاوتهای اصلی بین View و Materialized View:
ویژگی | View | Materialized View |
---|---|---|
ذخیرهسازی دادهها | دادهها ذخیره نمیشوند. | دادهها ذخیره میشوند. |
پویایی | همیشه دادههای بهروز را نشان میدهد. | دادهها ممکن است قدیمی باشند. |
عملکرد | کندتر (چون پرسوجو هر بار اجرا میشود). | سریعتر (چون دادهها از قبل ذخیره شدهاند). |
بهروزرسانی | نیازی به بهروزرسانی ندارد. | نیاز به بهروزرسانی دارد. |
کاربردهای جدولهای مجازی:
- سادهسازی پرسوجوها: با استفاده از View یا Materialized View میتوان پرسوجوهای پیچیده را سادهسازی کرد.
- بهبود عملکرد: Materialized View میتواند عملکرد پرسوجوها را بهبود بخشد.
- امنیت دادهها: با محدود کردن دسترسی کاربران به Viewها، میتوان از دادههای حساس محافظت کرد.
- یکپارچگی دادهها: Viewها میتوانند دادهها را از چندین جدول ترکیب کنند و یک نمای یکپارچه ارائه دهند.
محدودیتهای جدولهای مجازی:
- View: ممکن است بر عملکرد تأثیر بگذارد، زیرا هر بار پرسوجوی پایه اجرا میشود.
- Materialized View: نیاز به بهروزرسانی دارد و ممکن است دادهها همیشه بهروز نباشند.
با استفاده از جدولهای مجازی، میتوانید ساختار پایگاهداده خود را منعطفتر و کارآمدتر کنید.
عملیات بر روی View
عملیاتهای مختلفی را میتوان بر روی View در پایگاهداده انجام داد. این عملیات شامل ایجاد، بهروزرسانی، حذف و استفاده از View در پرسوجوها میشود. در ادامه به بررسی این عملیاتها میپردازیم:
۱. ایجاد View
برای ایجاد یک View، از دستور CREATE VIEW
استفاده میشود. View بر اساس یک پرسوجوی SQL تعریف میشود.
مثال:
CREATE VIEW EmployeeView AS
SELECT EmployeeID, FirstName, LastName, Department
FROM Employees
WHERE Department = 'Sales';
در این مثال، یک View به نام EmployeeView
ایجاد شده است که فقط اطلاعات کارمندانی را نشان میدهد که در بخش فروش (Sales) کار میکنند.
۲. استفاده از View
پس از ایجاد View، میتوانید از آن مانند یک جدول معمولی در پرسوجوهای خود استفاده کنید.
مثال:
SELECT * FROM EmployeeView;
این پرسوجو تمام ردیفها و ستونهای تعریفشده در View را برمیگرداند.
۳. بهروزرسانی View
اگر نیاز به تغییر در تعریف View داشته باشید، میتوانید از دستور CREATE OR REPLACE VIEW
استفاده کنید. این دستور View موجود را با تعریف جدید جایگزین میکند.
مثال:
CREATE OR REPLACE VIEW EmployeeView AS
SELECT EmployeeID, FirstName, LastName, Department, HireDate
FROM Employees
WHERE Department = 'Sales';
در این مثال، ستون HireDate
به View اضافه شده است.
۴. حذف View
برای حذف یک View از دستور DROP VIEW
استفاده میشود.
مثال:
DROP VIEW EmployeeView;
این دستور View به نام EmployeeView
را حذف میکند.
۵. بهروزرسانی دادهها از طریق View
برخی از Viewها قابل بهروزرسانی هستند (Updatable Views). این بدان معناست که میتوانید دادههای جدول پایه را از طریق View تغییر دهید. با این حال، این امکان فقط در شرایط خاصی وجود دارد، مثلاً اگر View از یک جدول پایه ساده ایجاد شده باشد و شامل عملیات پیچیدهای مانند JOIN
، GROUP BY
یا DISTINCT
نباشد.
مثال:
UPDATE EmployeeView
SET Department = 'Marketing'
WHERE EmployeeID = 101;
این دستور بخش کارمند با EmployeeID = 101
را از “Sales” به “Marketing” تغییر میدهد.
۶. درج دادهها از طریق View
در برخی موارد، میتوانید دادههای جدید را از طریق View به جدول پایه اضافه کنید. این کار نیز فقط در صورتی امکانپذیر است که View قابل بهروزرسانی باشد.
مثال:
INSERT INTO EmployeeView (EmployeeID, FirstName, LastName, Department)
VALUES (102, 'Ali', 'Rezaei', 'Sales');
این دستور یک رکورد جدید به جدول Employees
از طریق View اضافه میکند.
۷. حذف دادهها از طریق View
شما میتوانید رکوردها را از طریق View حذف کنید، البته فقط در صورتی که View قابل بهروزرسانی باشد.
مثال:
DELETE FROM EmployeeView
WHERE EmployeeID = 102;
این دستور کارمند با EmployeeID = 102
را از جدول Employees
حذف میکند.
۸. مشاهده تعریف View
برای مشاهده تعریف یک View، میتوانید از دستور SHOW CREATE VIEW
(در MySQL) یا پرسوجو از جداول سیستمی (در سایر پایگاهدادهها) استفاده کنید.
مثال در MySQL:
SHOW CREATE VIEW EmployeeView;
مثال در SQL Server:
SELECT definition
FROM sys.sql_modules
WHERE object_id = OBJECT_ID('EmployeeView');
۹. محدودیتهای View
- غیرقابل بهروزرسانی: برخی از Viewها غیرقابل بهروزرسانی هستند، به خصوص اگر از عملیات پیچیدهای مانند
JOIN
،GROUP BY
یاDISTINCT
استفاده کرده باشند. - عملکرد: چون Viewها دادهها را ذخیره نمیکنند، هر بار که به View مراجعه میشود، پرسوجوی پایه اجرا میشود که ممکن است بر عملکرد تأثیر بگذارد.
- وابستگی: Viewها به جدولهای پایه وابسته هستند. اگر جدول پایه حذف یا تغییر کند، View ممکن است از کار بیفتد.
۱۰. استفاده از View در پرسوجوهای پیچیده
Viewها میتوانند در پرسوجوهای پیچیده استفاده شوند تا کد را سادهتر و خواناتر کنند.
مثال:
SELECT EV.FirstName, EV.LastName, S.SalesAmount
FROM EmployeeView EV
JOIN Sales S ON EV.EmployeeID = S.EmployeeID
WHERE S.SalesAmount > 1000;
در این مثال، View EmployeeView
با جدول Sales
Join شده است.
با استفاده از این عملیاتها، میتوانید Viewها را به طور موثر در پایگاهداده خود مدیریت و استفاده کنید.
دیدگاه شما