إنشاء طرق عرض

مكتمل

تبسط العروض كيفية الوصول إلى البيانات وعرضها في SQL Server. بصفتك مطور SQL، تقوم بإنشاء عروض لتغليف الاستعلامات المعقدة، وتوفير حدود الأمان، وتقديم البيانات بصيغة تتناسب مع احتياجات تطبيقك.

فهم العروض في SQL Server

العرض هو جدول افتراضي يعتمد على جملةSELECT. على عكس الجداول الفيزيائية، لا تخزن العروض البيانات بنفسها. بدلا من ذلك، يسترجعون البيانات من الجداول الأساسية في كل مرة تستعلام فيها.

مخطط يوضح كيف يسترجع العرض البيانات من الجداول الأساسية.

مع العروض، يمكنك إخفاء تعقيد JOIN الجمل والحسابات والفلاتر عن كود التطبيق. على سبيل المثال، إذا كان تطبيقك يحتاج كثيرا إلى طلبات العملاء مع تفاصيل المنتج، يمكنك إنشاء عرض يستخدم JOIN عبر جداول العملاء، الطلبات، والمنتجات. ثم يسترسل تطبيقك استعلاما عن عرض واحد بدلا من كتابة نفس المجمع JOIN مرارا وتكرارا.

توفر العروض أيضا طبقة أمان. يمكنك منح المستخدمين الوصول إلى أعمدة محددة عبر عرض مع تقييد الوصول إلى الجداول الأساسية. يتيح لك هذا النهج عرض البيانات فقط التي يحتاجها المستخدمون دون منحهم وصولا كاملا للجداول.

أنشئ رؤية أساسية

تنشئ عرضا باستخدام العبارة CREATE VIEW متبوعة باستعلام SELECT . تعريف العرض يحدد البيانات التي تظهر عند الاستعلام عن العرض.

إليك عرض بسيط يجمع بين معلومات العملاء والطلبات:

CREATE VIEW Sales.CustomerOrders
AS
SELECT 
    c.CustomerID,
    c.CustomerName,
    c.Email,
    o.OrderID,
    o.OrderDate,
    o.TotalAmount
FROM Sales.Customers c
INNER JOIN Sales.Orders o ON c.CustomerID = o.CustomerID;

بعد إنشاء هذا العرض، يمكنك الاستعلام عنه مثل أي جدول:

SELECT * FROM Sales.CustomerOrders
WHERE CustomerName = 'Contoso Ltd';

ينفذ العرض عبارة SELECT الأساسية ويعيد النتائج كما لو كانت من جدول واحد. هذا التبسيط يجعل كود التطبيق أنظف وأسهل في الصيانة.

يمكنك أيضا إنشاء عروض بأعمدة محسوبة. العرض التالي يضيف عمودا يصنف الأوامر حسب الحجم:

CREATE VIEW Sales.OrderSummary
AS
SELECT 
    OrderID,
    CustomerID,
    OrderDate,
    TotalAmount,
    CASE 
        WHEN TotalAmount < 100 THEN 'Small'
        WHEN TotalAmount < 1000 THEN 'Medium'
        ELSE 'Large'
    END AS OrderSize
FROM Sales.Orders;

هذا العرض يتعامل مع منطق التصنيف في مكان واحد. كل استعلام ضد OrderSummary يحصل على نفس الحساب دون تكرار التعبير CASE .

تطبيق اعتبارات التصميم

عند تصميم المشاهد، فكر في كيفية استخدامها وصيانتها. المناظر المصممة جيدا توازن بين البساطة والأداء والأمان.

حدد أسماء الأعمدة بشكل صريح بدلا من استخدام SELECT *. تجعل الأعمدة الصريحة العروض أكثر قابلية للصيانة وتمنع النتائج غير المتوقعة عند تغير الجداول الأساسية. إذا أضاف شخص ما عمودا إلى جدول الأساس، يبقى تعريف العرض الخاص بك ثابتا:

CREATE VIEW Sales.ActiveCustomers
AS
SELECT 
    CustomerID,
    CustomerName,
    Email,
    Phone
FROM Sales.Customers
WHERE IsActive = 1;

استخدم الجملة WITH CHECK OPTION عندما تتعامل العروض مع تعديلات البيانات. يضمن هذا الخيار أن INSERT والعبارات UPDATE عبر العرض تؤثر فقط على الصفوف المرئية في العرض:

CREATE VIEW Sales.HighValueOrders
AS
SELECT 
    OrderID,
    CustomerID,
    OrderDate,
    TotalAmount
FROM Sales.Orders
WHERE TotalAmount > 1000
WITH CHECK OPTION;

مع هذا الخيار، لا يمكنك إدخال طلب بمبلغ إجمالي 500 من خلال عرض HighValueOrder. ترفض قاعدة البيانات العملية لأن الصف الجديد لن يفي بشرط العرض WHERE .

حافظ على تركيز تعريفات الرؤية على غرض محدد. غالبا ما يصبح من الصعب تحسين وفهم وجهة نظر تحاول خدمة أغراض متعددة. أنشئ عروضا منفصلة لحالات استخدام مختلفة بدلا من بناء عرض معقد واحد.

تحديد متى تستخدم العروض

تتفوق العروض في سيناريوهات محددة حيث توفر خصائصها فوائد واضحة. فهم هذه السيناريوهات يساعدك في اختيار الأداة المناسبة لكل حالة.

استخدم العروض لتبسيط الاستعلامات المعقدة التي يحتاج عدة تطبيقات أو مستخدمين لتنفيذها. بدلا من مطالبة الجميع بفهم تعقيد دمج خمسة جداول بشروط محددة، أنشئ عرضا مرة واحدة. هذا المركزية يعني أيضا أنه يمكنك تحسين أو تعديل المنطق في مكان واحد.

ضع في اعتبارك العروض عندما تحتاج إلى تقييد الوصول إلى البيانات على مستوى العمود أو الصف. يمكن للعرض أن يكشف فقط الأعمدة المناسبة للدور مع إخفاء معلومات حساسة. مع الأذونات المناسبة، تتيح لك العروض الوصول إلى بيانات محددة دون كشف جداول كاملة.

تعمل العروض بشكل جيد لعرض البيانات بصيغ مختلفة لأغراض مختلفة. قد يكون لديك جدول منتجات يحتوي على تفاصيل تقنية، لكن فريق التقارير يحتاج إلى نسخة مبسطة مع حقول محسوبة. أنشئ عرضا يحول ويجمع البيانات بشكل مناسب.

وفي الوقت نفسه، تعرف على متى تخدم الأشياء الأخرى بشكل أفضل. بالنسبة للاستعلامات الحرجة للأداء التي تعطي دائما نفس النتائج، تخزن العروض المفهرسة (العروض المادية) مجموعة النتائج بشكل ماديا. بالنسبة للحسابات المعقدة التي تقبل المعلمات، توفر الدوال المعرفة من قبل المستخدم مرونة أكبر. بالنسبة لمنطق تعديل البيانات، توفر الإجراءات المخزنة تحكما أفضل.

عندما تحتاج إلى تغليف منطق الاستعلام القابل لإعادة الاستخدام بدون معلمات، وتريد عرض البيانات بطريقة مبسطة، فإن العروض هي الحل لك. إنها تجسر الفجوة بين هيكل قاعدة البيانات الفيزيائي والرؤية المنطقية للبيانات التي تحتاجها تطبيقاتك.