مفهوم View در پایگاه داده

در پایگاه‌داده‌ها، View (نمایش) یک شی مجازی است که بر اساس نتیجه‌ی یک پرس‌وجوی SQL تعریف می‌شود. View شامل ردیف‌ها و ستون‌هایی است که از یک یا چند جدول پایگاه‌داده استخراج می‌شوند. View به خودی خود حاوی داده نیست، بلکه یک پرس‌وجوی از پیش تعریف‌شده است که هر بار که به آن مراجعه می‌شود، اجرا می‌شود و داده‌ها را از جدول‌های پایه بازیابی می‌کند.

مزایای استفاده از View:

  1. ساده‌سازی دسترسی به داده‌ها: View می‌تواند داده‌های پیچیده را ساده‌سازی کند و فقط بخشی از داده‌ها را به کاربران نشان دهد.
  2. امنیت: با استفاده از View می‌توان دسترسی کاربران به داده‌های حساس را محدود کرد و فقط اجازه دسترسی به بخشی از داده‌ها را داد.
  3. یکپارچگی منطقی: View می‌تواند داده‌ها را از چندین جدول ترکیب کند و یک نمای یکپارچه ارائه دهد.
  4. کاهش پیچیدگی: با استفاده از 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:

ویژگیViewMaterialized View
ذخیره‌سازی داده‌هاداده‌ها ذخیره نمی‌شوند.داده‌ها ذخیره می‌شوند.
پویاییهمیشه داده‌های به‌روز را نشان می‌دهد.داده‌ها ممکن است قدیمی باشند.
عملکردکندتر (چون پرس‌وجو هر بار اجرا می‌شود).سریع‌تر (چون داده‌ها از قبل ذخیره شده‌اند).
به‌روزرسانینیازی به به‌روزرسانی ندارد.نیاز به به‌روزرسانی دارد.

کاربردهای جدول‌های مجازی:

  1. ساده‌سازی پرس‌وجوها: با استفاده از View یا Materialized View می‌توان پرس‌وجوهای پیچیده را ساده‌سازی کرد.
  2. بهبود عملکرد: Materialized View می‌تواند عملکرد پرس‌وجوها را بهبود بخشد.
  3. امنیت داده‌ها: با محدود کردن دسترسی کاربران به Viewها، می‌توان از داده‌های حساس محافظت کرد.
  4. یکپارچگی داده‌ها: 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ها را به طور موثر در پایگاه‌داده خود مدیریت و استفاده کنید.

دیدگاه شما

نشانی ایمیل شما منتشر نخواهد شد.