اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله تعالى وبركاته ..♥

اواجه مشكلة في فهم ال views في sql  . المشكل ليس في الاستعلام نفسه وانما في المنطق ولماذا يتوجب علي استخدامها ؟ وهل تفيدني في الحماية وكيف ؟ وماهي باقي استخداماتها ؟ 

وشكرا لكل من افادني جزاكم الله خيرا والصلاة والسلام على حبيبنا ونبينا وقائدنا محمد صلوات ربي عليه

Recommended Posts

  • 1
نشر

الـ views أو العروض في SQL هي نوع من الجداول الافتراضية . تحتوي على صفوف وأعمدة مثلها مثل الجداول الحقيقية في SQL . بحيث يمكننا إنشاء العروض عن طريق تحديد حقول معينة من جدول واحد أو أكثر موجود في قاعدة البيانات الخاصة بنا . 

و لفهمها أكثر لنقم بفهم المثال التالي : 

ليكن لدينا جدول تفاصيل الطلاب students_details التالي : 

Screenshot-57-300x125.png.b914d6e3b533d9962d32497b43fd0632.png

و ليكن لدينا جدول علامات الطلاب students_marks كالتالي : 

Screenshot-58-300x126.png.f7058c6fb46e9180b9a3931d2b05c6c7.png

 

و لنقل أننا نريد إنشاء طريقة نقوم من خلالها بقراءة علامات الطلبة Mark و عناوينهم Address . 

واحدة من السبل لذلك هي في إنشاء العروض أو الـ Views .بحيث توفر تلخيصا لذلك في جدول افتراضي و لنقل أنه جدول بإسم students_extra_details . 

يمكننا إنشاء عرض ما باستخدام التعليمة CREATE VIEW مباشرة .بحيث يمكن إنشاء طريقة عرض إما من جدول واحد أو من عدة جداول بسياق عام كالتالي : 

CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table1_name,table2_name , table3_name....
WHERE condition;


أي : 

CREATE VIEW students_extra_details AS
SELECT student_details.NAME, student_details.ADDRESS, student_marks.MARKS
FROM student_details, student_marks
WHERE student_details.NAME = student_marks.NAME;

في ذاكرة الـ SQL قد تم إنشاء هاته الـ view كجدول افتراضي , يمكن معاملته كأي جدول SQL اخر . بشكل يبدوا كالتالي : 

Screenshot-591-300x105.png.6b1995db739054998e9748fac40f2149.png

 الان لن نحتاج إلا لمعاملتها كجدول عادي تماما , فإستعلام القراءة SELECT مثلا يكون كالتالي : 

SELECT * FROM students_extra_details;

و هكذا .. 

وراء ما يخفيه هذا الإستعمال المميزات و الفوائد التالية : 

  • الأمان و التغليف : بحيث يمكن إتاحة العروض للمستخدمين بينما لا يمكن الوصول إلى الجداول الأساسية بشكل مباشر . مما يعطي المستخدمين البيانات التي يحتاجون إليها فقط ، مع حماية البيانات الأخرى في نفس الجدول , لإستعمالها كشروط أو أغراض أخرى . كما أنها تعتبر طبقة تجريدية أو abstraction layer ، وهي تفعل ما تفعله أي طبقة تجريد جيدة ، بما في ذلك تغليف مخطط قاعدة البيانات وحمايتك من أية عواقب تنتج عن كون هيكلية قواعد البيانات مكشوفة .
  • البساطة و الدلالية: يمكن استخدام العروض لإخفاء الاستعلامات المعقدة مثل إستعلامات الـ JOIN , فما الذي يبدوا أبسط برأيك , إنشاء طريقة عرض شاملة لكامل إستعمالاتك في التطبيق أم كتابة إستعلام JOIN كل مرة تحتاج القراءة من جدولين وفق شرط ما ؟ .. كما يمكن استخدامها لتوفير أسماء مستعارة بسيطة لأسماء الأعمدة لجعلها أكثر قابلية للتذكر أو دلالية ذات مغزى .
  • مساحة تخزين بسيطة : بحيث تأخذ مساحة صغيرة جدًا للتخزين , فقاعدة البيانات تحتوي على تعريف العرض فقط ، وليس نسخة من جميع البيانات التي تقدمها و هذا شيء يقوم بإختصار الكثير . 

يمكنك القراءة أكثر عن العروض في سلسلة sql للمحترفين - مواضيع متفرقة في SQL .

  • 1
نشر

بالإضافة إلى إجابة أستاذ عدنان فإن الview من الممكن أن تقوم بتحسين الأداء, حيث أن الview يوجد منها نوع يُدعى materialized view , هذا النوع على عكس عرض البيانات(view) التقليدي ﻻ يتم تخزين التعريف فقط وإنما يتم تخزين البيانات نفسها وذلك يقوم بتحسين الأداء بناءاً على أكثر من نقطة 

  1. الفهرسة: بما أن البيانات يتم تخزينها , إذا يمكن أن يتم فهرستها مما يقوم بتقليل الوقت الﻻزم للبحث ويُحسن من الأداء بشكلٍ مباشر
  2. تخزين الإستعﻻمات المعقدة : عندما تقوم بتخزين materialized view مبنية على التداخل (join) أو التجميع(aggregation)  فإنك ﻻ تحتاج في كل مرة تنفذ فيها الإستعﻻمة أن تقوم قاعدة البيانات بعملية التداخل بين البيانات , إنك فقط تقوم بجلب البيانات من العرض(view) 
  3. مُحسن الإستعلامات (query optimizer) سيقوم تلقائي بجلب البيانات من العرض إن كان جلبها من هناك أسرع حتى ولو لم تحدد ذلك في الإستعﻻم

 

  • 0
نشر
بتاريخ 21 ساعات قال Adnane Kadri:

الـ views أو العروض في SQL هي نوع من الجداول الافتراضية . تحتوي على صفوف وأعمدة مثلها مثل الجداول الحقيقية في SQL . بحيث يمكننا إنشاء العروض عن طريق تحديد حقول معينة من جدول واحد أو أكثر موجود في قاعدة البيانات الخاصة بنا . 

و لفهمها أكثر لنقم بفهم المثال التالي : 

ليكن لدينا جدول تفاصيل الطلاب students_details التالي : 

Screenshot-57-300x125.png.b914d6e3b533d9962d32497b43fd0632.png

و ليكن لدينا جدول علامات الطلاب students_marks كالتالي : 

Screenshot-58-300x126.png.f7058c6fb46e9180b9a3931d2b05c6c7.png

 

و لنقل أننا نريد إنشاء طريقة نقوم من خلالها بقراءة علامات الطلبة Mark و عناوينهم Address . 

واحدة من السبل لذلك هي في إنشاء العروض أو الـ Views .بحيث توفر تلخيصا لذلك في جدول افتراضي و لنقل أنه جدول بإسم students_extra_details . 

يمكننا إنشاء عرض ما باستخدام التعليمة CREATE VIEW مباشرة .بحيث يمكن إنشاء طريقة عرض إما من جدول واحد أو من عدة جداول بسياق عام كالتالي : 


CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table1_name,table2_name , table3_name....
WHERE condition;


أي : 


CREATE VIEW students_extra_details AS
SELECT student_details.NAME, student_details.ADDRESS, student_marks.MARKS
FROM student_details, student_marks
WHERE student_details.NAME = student_marks.NAME;

في ذاكرة الـ SQL قد تم إنشاء هاته الـ view كجدول افتراضي , يمكن معاملته كأي جدول SQL اخر . بشكل يبدوا كالتالي : 

Screenshot-591-300x105.png.6b1995db739054998e9748fac40f2149.png

 الان لن نحتاج إلا لمعاملتها كجدول عادي تماما , فإستعلام القراءة SELECT مثلا يكون كالتالي : 


SELECT * FROM students_extra_details;

و هكذا .. 

وراء ما يخفيه هذا الإستعمال المميزات و الفوائد التالية : 

  • الأمان و التغليف : بحيث يمكن إتاحة العروض للمستخدمين بينما لا يمكن الوصول إلى الجداول الأساسية بشكل مباشر . مما يعطي المستخدمين البيانات التي يحتاجون إليها فقط ، مع حماية البيانات الأخرى في نفس الجدول , لإستعمالها كشروط أو أغراض أخرى . كما أنها تعتبر طبقة تجريدية أو abstraction layer ، وهي تفعل ما تفعله أي طبقة تجريد جيدة ، بما في ذلك تغليف مخطط قاعدة البيانات وحمايتك من أية عواقب تنتج عن كون هيكلية قواعد البيانات مكشوفة .
  • البساطة و الدلالية: يمكن استخدام العروض لإخفاء الاستعلامات المعقدة مثل إستعلامات الـ JOIN , فما الذي يبدوا أبسط برأيك , إنشاء طريقة عرض شاملة لكامل إستعمالاتك في التطبيق أم كتابة إستعلام JOIN كل مرة تحتاج القراءة من جدولين وفق شرط ما ؟ .. كما يمكن استخدامها لتوفير أسماء مستعارة بسيطة لأسماء الأعمدة لجعلها أكثر قابلية للتذكر أو دلالية ذات مغزى .
  • مساحة تخزين بسيطة : بحيث تأخذ مساحة صغيرة جدًا للتخزين , فقاعدة البيانات تحتوي على تعريف العرض فقط ، وليس نسخة من جميع البيانات التي تقدمها و هذا شيء يقوم بإختصار الكثير . 

يمكنك القراءة أكثر عن العروض في سلسلة sql للمحترفين - مواضيع متفرقة في SQL .

 

بتاريخ 20 ساعات قال شرف الدين2:

بالإضافة إلى إجابة أستاذ عدنان فإن الview من الممكن أن تقوم بتحسين الأداء, حيث أن الview يوجد منها نوع يُدعى materialized view , هذا النوع على عكس عرض البيانات(view) التقليدي ﻻ يتم تخزين التعريف فقط وإنما يتم تخزين البيانات نفسها وذلك يقوم بتحسين الأداء بناءاً على أكثر من نقطة 

  1. الفهرسة: بما أن البيانات يتم تخزينها , إذا يمكن أن يتم فهرستها مما يقوم بتقليل الوقت الﻻزم للبحث ويُحسن من الأداء بشكلٍ مباشر
  2. تخزين الإستعﻻمات المعقدة : عندما تقوم بتخزين materialized view مبنية على التداخل (join) أو التجميع(aggregation)  فإنك ﻻ تحتاج في كل مرة تنفذ فيها الإستعﻻمة أن تقوم قاعدة البيانات بعملية التداخل بين البيانات , إنك فقط تقوم بجلب البيانات من العرض(view) 
  3. مُحسن الإستعلامات (query optimizer) سيقوم تلقائي بجلب البيانات من العرض إن كان جلبها من هناك أسرع حتى ولو لم تحدد ذلك في الإستعﻻم

 

والله يعجز اللسان عن تقدير مجهودكم نتمنى من المولى عز وجل ان يرفعكما مقاما وشانا ويورثكم الجنة ان شاء الله وشكرا لكما احبتي ..♥

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...