اگر تا به حال با SQL کار کرده باشید، احتمالاً از انواع پرسوجوهای پیچیده استفاده کردهاید. وقتی صحبت از خوانایی و مدیریت آسانتر دادهها میشود، "نماها" (Views) در SQL میتواند یک ابزار بسیار مفید باشد. به زبان ساده، نماها مثل یک لایه مجازی هستند که به ما اجازه میدهند تا نتایج پرسوجوها را همچون یک جدول مجزا مشاهده کنیم، بدون این که نیاز به ذخیرهسازی دائمی این نتایج داشته باشیم.
تصور کنید دارید دادههای مختلفی را از چندین جدول ترکیب میکنید تا به یک گزارش خاص برسید. شاید این پرسوجو بسیار پیچیده باشد و هر بار نوشتن آن از ابتدا، وقتگیر و پیچیده. اینجاست که نماها وارد عمل میشوند. نماها به شما امکان میدهند تا این پیچیدگیها را تنها یک بار تعریف کنید و هر زمان که نیاز دارید، با یک دستور ساده به همان دادهها دسترسی داشته باشید.
نماها همچنین به پنهانسازی پیچیدگیهای پشت صحنه کمک میکنند. یعنی میتوانید دسترسی کاربران را به دادهها محدود کنید، بدون این که نیازی به افشا کردن ساختار کامل جداول و روابط بین آنها باشد. به این ترتیب امنیت و کنترل بهتری بر دادهها خواهید داشت.
در طول زمان، ممکن است ساختار جداول اصلی تغییر کند ولی نماها میتوانند همچنان به عنوان یک واسط پایدار به کار خود ادامه دهند. این ویژگی به خصوص در پروژههای بزرگ که نیاز به سازوکارهای هماهنگی دارند، بسیار مؤثر است. نماها باعث میشود که تغییرات ساختار جداول حداقل تأثیر را روی کدهای موجود بگذارد.
بسیاری از کارشناسان پایگاه داده باور دارند که بازدهی و عملکرد نماها به دلیل عدم ذخیرهسازی برخلاف جداول عادی، در مواردی بهبود یافته است. البته این به ساختار کلی پایگاه داده و تنظیمات منظوم بستگی دارد. بنابراین، بهتر است همیشه عملکرد برنامههای خود را پس از استفاده از نماها اندازهگیری و ارزیابی کنید.
در کل، استفاده درست و مفید از نماها میتواند تا حد زیادی کدنویسی شما را تمیزتر و مفیدتر کند و به خوانایی و نگهداری بهتر پروژههای شما کمک میکند.
نمونه کد SQL برای ایجاد و استفاده از Views
CREATE VIEW employee_view AS
SELECT employee_id, first_name, last_name, department
FROM employees
WHERE active = 1;
SELECT * FROM employee_view;
توضیح خطبهخط کد
CREATE VIEW employee_view AS
: ایجاد یک View با نام employee_view
که به عنوان یک نما عمل میکند.
SELECT employee_id, first_name, last_name, department
: انتخاب ستونهایی که میخواهید در View خود قرار دهید.
FROM employees
: استفاده از جدول employees
به عنوان منبع داده.
WHERE active = 1;
: شرطی که فقط کارکنان فعال را انتخاب میکند.
SELECT * FROM employee_view;
: دریافت تمام دادههای نما که قبلاً تعریف شده است.