You are on page 1of 144

SQL Server

Project 402

Name : Mohammed Ahmed Reyad Mahran


NickNameNew : Opreyad36333
NickNameOld : OpMrayed20953
Email : IT_M.Reyad@yahoo.com
4112/3/1
1
‫مقدمة‬

‫هذا الكتاب تم عمله النه من احدى المشروعات المطلوبة منى من خالل‬

‫أكاديمية المجموعة العربية للكمبيوتر‪.‬‬

‫حيث اننى اعتمد فى هذا الكتاب على الشرح بالصور اكثر من الكتابة اى‬

‫لجعلها العملى اكثر من النظرى‪.‬‬

‫واشكر هذة ااكدميية اجملموعة للمكبيوتر عىل مس توى اذلى وصلت اليه‬

‫‪2‬‬
‫حمتوايت‬
‫رمق الصفحة‬ ‫حمتوايته‬ ‫العنوان‬ ‫الفصل‬
‫‪5‬‬ ‫مقدمة مايكروسوفت ‪SQL Server‬‬ ‫‪o‬‬

‫‪6‬‬ ‫التارخي اصدراهتا ونسخها اخملتلفة‬ ‫‪o‬‬

‫‪8‬‬ ‫متطلبات الاهجزة والربامج لتشغيل الربانمج‬ ‫‪o‬‬ ‫مقدمة‬ ‫‪1‬‬


‫‪9‬‬ ‫مكوانت الاساس ية ‪SQL Server‬‬ ‫‪o‬‬

‫‪22‬‬ ‫جدول يوحض انواع النسخ الربانمج والاماكنيات‬ ‫‪o‬‬

‫واخلدمات الىت بلك نسخة‬


‫‪22‬‬ ‫كيفية حتميل الربانمج‬ ‫‪o‬‬ ‫التخطيط لتركيب‬
‫معلومات هامة قبل تثبيت ‪SQL Server 2008 R2‬‬ ‫‪o‬‬ ‫والتثبيت البرنامج‬ ‫‪2‬‬
‫‪22‬‬ ‫‪Express‬‬ ‫‪SQL Server‬‬
‫كيفية تثبيت وتسطيب وتشغيل الربانمج ‪SQL‬‬ ‫‪o‬‬ ‫‪2008‬‬
‫‪22‬‬ ‫‪Server 2008 R2 Express‬‬

‫‪29‬‬ ‫طريقة ادلخول لالداة‬ ‫‪o‬‬

‫‪23‬‬ ‫قواعد البياانت اخلاصة ابخلادم‬ ‫‪o‬‬


‫االداة ‪SQL‬‬
‫‪21‬‬ ‫‪Logins & Users‬‬ ‫‪o‬‬
‫‪Server‬‬ ‫‪2‬‬
‫خطوات انشاء مس تخدمني جدد‬ ‫‪o‬‬
‫‪22‬‬ ‫‪Management‬‬
‫صالحيات املس تخدم لدلخول عىل القاعدة البياانت‬ ‫‪o‬‬
‫‪23‬‬ ‫‪Studio‬‬
‫‪33‬‬ ‫ختطيط وتصممي قواعد البياانت‬ ‫‪o‬‬

‫‪32‬‬ ‫انشاء وحذف قاعدة بياانت‬ ‫‪o‬‬

‫‪34‬‬ ‫نسخ واعادة اسرتجاع لقاعدة‬ ‫‪o‬‬

‫‪39‬‬ ‫‪Snapshot‬‬ ‫‪o‬‬

‫‪53‬‬ ‫‪Detach & Attach Database‬‬ ‫‪o‬‬

‫‪52‬‬ ‫‪Import & Export Database‬‬ ‫‪o‬‬


‫تصميم قواعد‬ ‫‪3‬‬
‫‪Shrink Database‬‬ ‫‪o‬‬
‫‪61‬‬ ‫البيانات‬
‫‪62‬‬ ‫‪Generate Database Script‬‬ ‫‪o‬‬

‫‪65‬‬ ‫‪File Groups‬‬ ‫‪o‬‬

‫‪64‬‬ ‫‪Schema‬‬ ‫‪o‬‬

‫‪43‬‬ ‫‪Security Project‬‬ ‫‪o‬‬

‫‪3‬‬
‫‪43‬‬ ‫خطوات معل النشاء وحذف وتعديل بنية ونسخ اجلدوال‬ ‫‪o‬‬

‫ابلقاعدة بياانت‬ ‫تصميم الجداول‬ ‫‪5‬‬


‫‪44‬‬ ‫انواع البياانت احلقول ابجلدوال لقاعدة بياانت‬ ‫‪o‬‬

‫‪49‬‬ ‫مقدمة عن العالقات اجلدوال ‪:‬‬ ‫‪o‬‬

‫‪83‬‬ ‫‪:DatabaseDiagram‬‬ ‫‪o‬‬ ‫تصميم العالقات‬


‫‪: DataBase Normalization‬‬ ‫‪o‬‬ ‫(‪)Relationship‬‬ ‫‪6‬‬
‫‪85‬‬ ‫بقاعدة البيانات‬
‫‪93‬‬ ‫معامل الربط بني اجلداول ‪:‬‬ ‫‪o‬‬

‫‪96‬‬ ‫انشاء اس تعالم جديد ‪:‬‬ ‫‪o‬‬

‫‪96‬‬ ‫املتغريات ‪: Variable‬‬ ‫‪o‬‬

‫‪94‬‬ ‫الامر ‪ goto‬و ‪ Break‬و ‪ Continue‬و‪: Return‬‬ ‫‪o‬‬

‫‪94‬‬ ‫الامر الرشط ‪:IF‬‬ ‫‪o‬‬

‫‪98‬‬ ‫ادلوال ‪: Functions‬‬ ‫‪o‬‬


‫االستعالمات‬ ‫‪4‬‬
‫‪131‬‬ ‫التعامل مع ‪: with Encryption‬‬ ‫‪o‬‬
‫)‪(Views‬‬
‫‪132‬‬ ‫التعامل مع ‪:GUID‬‬ ‫‪o‬‬

‫‪136‬‬ ‫التعامل مع ‪: Error‬‬ ‫‪o‬‬

‫‪134‬‬ ‫‪: While Loop‬‬ ‫‪o‬‬

‫‪138‬‬ ‫‪: Virtual Column‬‬ ‫‪o‬‬

‫‪139‬‬ ‫انشاء جدول الاس تعالم‪:‬‬ ‫‪o‬‬

‫‪112‬‬ ‫انشاء جدول الاس تعالم أخرى ‪:‬‬ ‫‪o‬‬

‫‪113‬‬ ‫دمج البياانت من اس تعالمني ‪:‬‬ ‫‪o‬‬


‫‪8‬‬
‫جداول االستعالم‬
‫‪118‬‬ ‫رشح مجل ‪:SQL‬‬ ‫‪o‬‬

‫‪122‬‬ ‫الاس تعالمات الفرعية ‪: SubQueries‬‬ ‫‪o‬‬

‫‪123‬‬ ‫الاجراء ‪: Stored Procedure‬‬ ‫‪o‬‬

‫‪129‬‬ ‫املطلقات ‪: Triggers‬‬ ‫‪o‬‬

‫‪122‬‬ ‫‪Transaction‬‬ ‫‪o‬‬


‫موضوعات متنوعة‬ ‫‪9‬‬
‫‪125‬‬ ‫‪Replication‬‬ ‫‪o‬‬
‫متقدمة‬
‫‪133‬‬ ‫املراجع‬ ‫‪o‬‬

‫‪133‬‬ ‫اخلامتة‬ ‫‪o‬‬

‫‪4‬‬
‫الفصل االول ‪ :‬مقدمة‬
‫أوالً‪ :‬مقدمة مايكروسوفت ‪:SQL Server‬‬
‫هو عبارة عن نظام قوى يستخدم إلنشاء وإدارة قواعد البيانات العالئقية ‪Relational‬‬
‫‪ System Database Management‬أو ‪ ، RDBMS‬ويحتوى هذا النظام على مجموعة‬
‫كبيرة من المميزات والتي تجعله من أقوى األنظمة المستخدمة إلنشاء وإدارة قواعد البيانات ‪.‬‬
‫‪ Microsoft SQL‬هىىىىىىىى نىىىىىىىو مىىىىىىىن نظىىىىىىىام إدارة قواعىىىىىىىد البيانىىىىىىىات‬ ‫‪Server‬‬
‫‪++‬وسىىىىىي وسىىىىىي‬ ‫العالئقيىىىىىة وتمىىىىىت برمجتهىىىىىا بواسىىىىىطة مايكروسىىىىىوفت وكتبتهىىىىىا سىىىىىي‬
‫‪ Microsoft‬و‬ ‫شىىىىىىىىارب وهىىىىىىىىى تعمىىىىىىىىل تحىىىىىىىىت بيئىىىىىىىىة نظىىىىىىىىام التشىىىىىىىى يل ‪Windows‬‬
‫‪NET‬‬ ‫‪ Windows‬ومنصىىىىىىىىىىىة ‪ ، IA-32‬إلىىىىىىىىىىىى ‪ x64‬أو ‪IA-64‬‬ ‫‪Server‬‬
‫‪ Framework‬و الل ىىىىىىىىات المتاحىىىىىىىىة بهىىىىىىىىا هىىىىىىىىى اإلنجليزيىىىىىىىىة‪ ،‬الصىىىىىىىىينية‪ ،‬اليابانيىىىىىىىىة‬ ‫‪3.5‬‬
‫الفرنسىىىىىىىىىية واأللمانيىىىىىىىىىة واإليطاليىىىىىىىىىة‪ ،‬والكوريىىىىىىىىىة‪ ،‬والبرت اليىىىىىىىىىة البرازيىىىىىىىىىل ‪ ،‬والروسىىىىىىىىىية واإلسىىىىىىىىىبانية‬
‫وهىىىىىىى برمجيىىىىىىات االحتكاريىىىىىىة ‪ ،‬وكالهمىىىىىىا التجاريىىىىىىة و مجانيىىىىىىة هىىىىىىي اصىىىىىىدارات متاحىىىىىىة علىىىىىىى موقعهىىىىىىا‬
‫‪www.microsoft.com/sqlserver‬‬
‫كقاعدة بيانات‪ ،‬بل هو منتج البرنامج الذي يهدف إلى تخزين واسترجا البيانات على النحو‬
‫المطلوب من قبل ت طبيقات البرمجيات األخرى‪ ،‬سواء كان ذلك تلك الموجودة على نفس الكمبيوتر أو‬
‫تلك التي تعمل على كمبيوتر آخر عبر الشبكة بما في ذلك اإلنترنت وظيفتها األساسية‪.‬‬
‫من ضمن مميزات البرنامج أنه بيسمح هذا البرنامج بإستيراد وتصدير من الملفات ذات‬
‫التنسيقات المختلفة ‪ -‬وعمل ارتباط بقواعد البيانات االخرى سواء من ‪ SQL Server‬او قواعد‬
‫البيانات الخاصة بشركات أخرى – امكانية معالجة البيانات من خالل برنامج برنامج اكسيل واكسيس‬
‫– انشاء تقارير ديناميكية بناء على بيانات ‪ – SQL Server‬انشاء مهام ‪Automated Tasks‬‬
‫يتم تنفيذها تلقائيا ً بمجرد توافق البيانات مع شرط معين‪.‬‬
‫تخزين البيانات هو قاعدة البيانات والتي هي عبارة عن مجموعة من الجداول مع كتابة األعمدة‪.‬‬
‫يدعم خادم ‪ SQL‬أنوا البيانات المختلفة‪ ،‬ويمكن أن تحتوي قاعدة بيانات أيضا الكائنات األخرى بما‬
‫في ذلك ‪ views, stored procedures, indexes, constraints,‬يتم تخزين البيانات‬
‫في قاعدة البيانات في ملفات البيانات األولية مع امتداد الملف ‪ . mdf.‬ملفات البيانات الثانوية‪ ،‬مع‬
‫تحديد امتداد الملف ‪ ، ndf.‬وتستخدم لتخزين اختياري البيانات الوصفية ‪ .‬ويتم تحديد ملفات السجل‬
‫مع امتداد الملف ‪.ldf.‬‬

‫‪5‬‬
:‫ التاريخ اصدراتها ونسخها المختلفة‬:‫ثانيا‬
Microsoft SQL Server ‫هناك ما ال يقل عن اثني عشر من االصدارات مختلفة من‬
‫تستهدف جماهير مختلفة وأعباء العمل التي تتراوح بين التطبيقات أحادية آلة ص يرة لتطبيقات واجهة‬
:‫إنترنت واسعة مع العديد من المستخدمين المتزامنة‬

‫االسم الرمزى‬ Release Name ‫عام‬ ‫اإلصدار‬

SQL Server 1.0 0.1


- 0191
(16 bit) ) 2 / OS (

SQL Server 1.1 0.0


- 0110
(16 bit) ) 2 / OS (

1.20
SQLNT SQL Server 4.21 0111
) WinNT ‫( ل‬

SQL95 SQL Server 6.0 0111 0.1

Hydra SQL Server 6.5 0110 0.1

Sphinx SQL Server 7.0 0119 0.1

SQL Server 7.0 0111 -


Palato mania
OLAP Tools
Shiloh SQL Server 2000 2111 9.1

SQL Server 2000 2111 9.1


Liberty
64-bit Edition
Yukon SQL Server 2005 2111 1.1

Katmai SQL Server 2008 2119 01.1

CloudDatabase SQL Azure DB 2101 01.21

Kilimanjaro (aka KJ) SQL Server 2008 R2 2101 01.1

Denali SQL Server 2012 2102 00.1

Hekaton SQL Server 2014 2101 02.1

6
‫النسخ‬
‫‪ Microsoft SQL Server‬يجعل المتوفرة في إصدارات متعددة‪ ،‬مع مختلف مجموعات‬
‫ميزة واستهداف مختلف المستخدمين‪ .‬هذه الطبعات هي‪:‬‬

‫‪ -‬النسخ الرئيسية ‪- Web – Standard - Enterprise – Datacenter‬‬


‫‪Express - Workgroup - Business Intelligence‬‬
‫‪Developer-Compact (SQL CE) -Azure‬‬ ‫‪ -‬النسخ المتخصصة‬
‫‪- Embedded (SSEE) Embedded (SSEE) - Developer‬‬
‫‪Fast Track - LocalDB - Parallel - Evaluation Evaluation‬‬
‫‪Data Warehouse (PDW) - Datawarehouse Appliance‬‬
‫‪. Edition‬‬
‫‪ : Developer Edition‬تم تصميم هذا االصدار لمطورى التطبيقات ويحتوى هذا‬
‫االصدار على جميع االمكانيات المتاحة باالصدار ‪ Enterprise Edition‬ولكن يصرح‬
‫باستخدام هذا االصدار لعمليات التطوير فقط‪.‬‬

‫حيث ان البرنامج عبارة عن منتج معقد يحتوى على العديد من الخدمات لذلك يجب تحديد‬
‫الخدمات التى نحتاج اليها قبل شراء المنتج وذلك الن سعر الخادم يتم تحديده على حسب الخدمات‬
‫المتاحة باالصدار البرنامج‪.‬‬

‫هذا الجدول يوضح انواع االصدارات المختلفة وامكانيات الخدمات المتاحه بها واسعارها‪:‬‬

‫‪7‬‬
‫ثالثا‪ :‬متطلبات االجهزة والبرامج لتش يل البرنامج‪:‬‬

‫متطلبات‬ ‫النو‬

‫‪ ‬معالج ‪ Pentium III‬متوافق أو أعلى‬

‫‪ ‬الحد األدنى‪ 1 :‬جيجا هرتز‬ ‫المعالج‬

‫‪ ‬ينصح ب‪ 4 :‬جيجا هرتز أو أعلى‬

‫‪ ‬الحد األدنى‪ 214 :‬ميجابايت‬ ‫ذاكرة الوصول‬

‫‪ ‬ينصح ب‪4 :‬جيجا بايت أو أعلى‬ ‫العشوائي‬

‫‪ ‬تبدأ ‪ 011‬مي ابايت مساحة‬ ‫مساحة خالية‬

‫‪ ‬حتى ‪ 1‬جيجا بايت‬ ‫القرص الصلب‬

‫‪ 807×1142 ‬على االقل‬ ‫كارت الشاشة‬

‫االحدث او ‪ Microsoft.NETFramework3.5‬‬ ‫البرامج‬

‫االحدث او ‪ Microsoft Internet Explorer 6.0 SP1‬‬ ‫المطلوبة مسبقا ً‬

‫نظام التش يل‬

‫‪8‬‬
‫رابعا ً‪ :‬مكونات االساسية ‪:SQL Server‬‬
‫‪SQL -1‬‬
‫وفي معظم قواعد البيانات العالئقية مثل ‪ SQL Server‬يتم الوصول إلى البيانات باستخدام ل ة االستعالم‬
‫‪ SQL‬أو ‪ ، Structured Query Language‬وتسمح هذه الل ة للمستخدمين باالستعالم عن البيانات‬
‫باإلضافة إلى إمكانية إضافة وتعديل وحذف سجالت قواعد البيانات‪.‬‬

‫ل ة االستعالم الرئيسية فيه هي ‪ T-SQL‬و ‪ ANSI SQL‬و االستعالم بشكل إلزامي يحدد ما هو المراد‬
‫استردادها‪ .‬تتم معالجتها من قبل المعالج االستعالم‪ ،‬والتي من أرقام تسلسل الخطوات التي ستكون ضرورية السترداد‬
‫البيانات المطلوبة‪ .‬يسمى تسلسل اإلجراءات الالزمة لتنفيذ استعالم على خطة االستعالم ‪.‬‬

‫هذا الشكل يوضح ل ة كتابة اوامر االداة ‪:‬‬

‫‪9‬‬
‫تعمل هذة االداة على اجراء االتصال بالخادم باستخدام طريقة التوثيق الويندوز باستخدام بيانات‬
‫المستخدم الحالى لنظام التش يل ويقوم الخادم باستخدام قاعدة البيانات االفتراضية المرتبطة بالخادم‬
‫وتحديد اسم الملف الذى يحتوى على االوامر ‪ T-SQL‬التى نريد تنفيذها وتحديد اسم الملف الذى نريد‬
‫تخزين ناتج االستعالم به‪.‬‬

‫‪: SQL Batch Commands ‬‬


‫‪ ‬هو عبارة عن مجموعة من االوامر او االكواد تعمل على تحسين االداء بصورة كبيرة جدا حيث‬
‫انها ترسل الى سيكول دفعة واحدة ولكن يتم تنفيذها امر امر ويتم وضع سيميكولن بين االمر‬
‫والمر ما عدا االمر االخير اليوضع له‬
‫‪ ‬ويجب كتابة اسم الجدول المستخدم فى البداية حتى ال يحدث خطأ‪.‬‬
‫‪ ‬لدينا االمر بعرض بيانات جدولين فى قاعدة البيانات وكود اضافة سجل‬

‫‪11‬‬
‫‪ ‬ثم يتم حفظها على جهازك على شكل ملف بامتداد ‪ Sql‬كما يلى ‪:‬‬

‫‪1‬‬

‫‪4‬‬

‫‪3‬‬

‫‪ ‬اذا اردنا فتحه لرؤية الكود نض ط كليك يمين على ملف ونختار ‪edit‬‬
‫ويفتح على برنامج ‪ Notepad‬لتظهر االوامر‪.‬‬
‫‪ ‬هو ده الباتش به ملف وينفذ على سيرفل من اى برنامج خارجى‪.‬‬
‫‪ ‬سوف نستخدم برنامج خارجى هو ‪Command Prompt‬‬

‫‪2‬‬

‫‪11‬‬
‫االختصارات االوامر البد من معرفتها ‪:‬‬
‫اسم السيرفر‬ ‫‪-s‬‬
‫هيدخل على السيرفر بصالحية الويندوز‬ ‫‪-E‬‬
‫لو كان الدخول السيرفر بصالحية السيكول‬
‫اسم المستخدم‬ ‫‪-u‬‬
‫كلمة السر‬ ‫‪-p‬‬
‫طريقة ارسال االمر‬
‫االمر اللى بعدها باكتب االمر بين عالمتين " " واكتب مسار الملف‬ ‫‪-i‬‬
‫يتم ارسال االمر مباشرة فنكتب اسم القاعدة ثم نقطتين ونكتب اسم الجدول‬
‫بين قوسين‬ ‫‪-q‬‬

‫الناتج اللى تخرج من السيرفر واكتب المسار لتظهر ملف بامتداد ‪TXT‬‬ ‫‪-o‬‬
‫ثم نض ط على مفتاح االنتر لتنفيذ االوامر‬

‫‪5‬‬

‫‪12‬‬
‫ده نتيجة االمر‬

‫‪6‬‬

‫‪7‬‬

‫‪13‬‬
‫‪:SQL Server Configuration Manager -4‬‬

‫تستخدم هذه االداة الجراء االعدادات االساسية لنسخة الخادم‬

‫‪ ‬عمل تش يل أو ايقاف أو ايقاف مؤقت وتش يل من وضع االيقاف المؤقت واعادة التش يل‬
‫لخدمات الخادم وفى حالة عدم استخدام خدمة معينة بصورة متكررة فاننا نحتاج الى تش يل هذة‬
‫الخدمة وقت الحاجة اليها فقط‪.‬‬
‫‪ ‬ت يير الحساب المستخدم لتش يل الخدمة‬
‫‪ ‬ت يير اسلوب التش يل ‪ Strat Mode‬للخدمة‬
‫‪ ‬اجراء اعدادات استخدام بروتوكوالت الشبكة للوصول للخادم‬
‫‪ ‬ت يير العنوان ‪ IP Address‬والمنافذ ‪ TCP Ports‬المستخدمة بواسطة ‪SQL Server‬‬
‫‪ ‬اجراء االعدادات ‪SQL Server Native Client Connectivity‬‬

‫تعديل اعدادات الشبكة ‪SQL Server‬‬


‫‪Shared Memory‬‬ ‫‪Named Pipes‬‬ ‫‪TCP/IP‬‬
‫الشبكات يستخدم العداد شبكة باستخدام يسمح لنا باجراء االتصال بالخادم‬ ‫بروتوكوالت‬ ‫اكثر‬
‫المحلى بدون استخدام الشبكة‬ ‫االتصال المحلى‬ ‫استخداما مع الخادم‬
‫استخداما بروتوكول مناسب للعمل بالشبكات يتم استخدام هذا البروتوكول الجراء‬ ‫البروتوكوالت‬ ‫اسهل‬
‫االتصال بنسخة قاعدة البيانات‬ ‫واكثرها فاعلية على الشبكات المحلية عالية السرعة‬
‫‪DataBase‬‬ ‫‪Instance‬‬ ‫الواسعة‬
‫الموجودة على الخادم المحلى فقط‬
‫هذا البرتوكول ليس له أى خيارات‬ ‫يتم دعم هذا البروتوكول فى معظم‬
‫إعداد‬ ‫االنظمة والبيانات المتوفرة حاليا‬

‫‪14‬‬
‫شرح بالصور‬

‫‪15‬‬
16
‫‪: SSMS SQL Server Management Studio -3‬‬
‫‪ ‬االداة الرئيسية الدارة الخادم‬
‫‪ ‬تحتوى على جميع الوظائف الخاصة بادارة الخادم‬
‫‪ ‬تسمح لنا باعداد والتعامل مع قواعد البيانات من خالل نافذة ‪ Console‬واحدة‪.‬‬

‫‪17‬‬
18
19
‫‪ ‬دخول اكثر من مستخدم على السيرفر ‪ -‬نتبع الخطوات التالية ‪:‬‬
‫هنضغط على زر االتصال ‪:‬‬

‫ادخال اسم المستخدم االخر وكلمة المرور‪:‬‬

‫الحظ وجود شخصين متصلين بالسيرفر المستخدم ‪ SA‬و المستخدم ‪: Ahmed‬‬

‫‪21‬‬
‫‪SQL Server Books Online -2‬‬

‫‪ ‬تستخدم لتقديم المساعدة عن اى موضو متعلق بالتقنيات والصيغ الخاصة بالخادم‪.‬‬

‫‪ ‬تقوم شركة ميكروسوفت بتقديم وثائق مفصلة لجميع امكانات الخادم فى صورة كتب الكترونية‪.‬‬

‫‪ ‬تحتوى هذه الوثائق على أحدث المعلومات المتعلقة بوظائف الخادم‪.‬‬

‫‪ ‬تكون هذة االداة مفيدة جدا فى حالة حاجتنا للبحث عن صي ة امر معين او خاصية من خواص‬

‫ال ‪SQL Server‬المتقدمة‪.‬‬

‫‪Reporting Services -2‬‬

‫‪ ‬تسمح لنا بتصميم ونشر التقارير الديناميكية المبنية على قواعد بيانات ‪SQL Server‬‬

‫‪ -0‬خدمات اخرى‬

‫‪ Analysis Services‬‬

‫)‪ Online Analytical Processing (OLAP‬‬

‫‪ Data Warehouses‬‬

‫‪ Data Mining‬‬

‫‪21‬‬
‫الفصل الثانى ‪ :‬التخطيط لتركيب والتثبيت البرنامج‬
‫‪SQL Server 2008 R2‬‬
‫‪ -‬جدول يوضح انوا النسخ البرنامج واالمكانيات والخدمات التى بكل نسخة ‪:‬‬

‫‪ -‬كيفية تحميل البرنامج ‪:‬‬

‫سنستخدم النسخة ‪ SQL Server 2008 R2 Express‬النها نسخة مجانية من خالل‬


‫موقع الشركة ميكروسوفت من خالل الرابط التالى ‪:‬‬
‫للنسخ ‪ 34‬بت‬
‫‪http://download.microsoft.com/download/9/7/6/9761df25-cbd8-4d48-9415-‬‬
‫‪065f6bd4e63d/SQLEXPRADV_x86_ENU.exe‬‬
‫للنسخ ‪ 02‬بت‬
‫‪http://download.microsoft.com/download/9/7/6/9761df25-cbd8-4d48-9415-‬‬
‫‪065f6bd4e63d/SQLEXPRADV_x64_ENU.exe‬‬
‫‪22‬‬
‫‪ -‬معلومات هامة قبل تثبيت ‪:SQL Server 2008 R2 Express‬‬
‫يفضل تسطيب ‪ .Net Framework‬قبل ‪ SQL Server‬ويفضل تسطيب ‪Viusal‬‬
‫‪ studio‬بعد ‪SQL Server‬‬
‫البد من التأكد من أن الجهاز سوف يتم استخدامه كخادم ‪ SQL Server‬يتوافق مع الحد‬
‫االدنى من المتطلبات المادية والبرمجية‪.‬‬
‫البد من التأكد من أن نسخة من االصدار ‪ SQL Server‬الذى نريد تثبيته‪.‬‬
‫عمل ترقية من ‪ SQL Server 2005‬الى ‪ SQL Server 2008‬بشكل تدريجى نقوم‬
‫بتنزيل نسخة من الخادم ‪ SQL Server 2008‬جنبا الى جنب مع النسخة ‪SQL Server‬‬
‫‪ 2005‬على نفس الخادم – نقوم بنقل قواعد البيانات واحدة تلو االخرى من النسخة ‪SQL‬‬
‫‪ Server 2005‬الى النسخة ‪. SQL Server 2005‬‬

‫‪ -‬كيفية تثبيت وتسطيب وتش يل البرنامج ‪:SQL Server 2008 R2 Express‬‬


‫صور‬ ‫خطوات‬

‫‪1‬‬

‫‪2‬‬

‫‪3‬‬

‫‪4‬‬

‫‪23‬‬
5

24
‫يسمح لنا الخادم بإمكانية تثبيت أكثر من نسخة على نفس الخادم‪.‬‬
‫يمكننا اعتبار كل نسخة من النسخ التى يتم تثبيتها على الخادم نسخة منفصلة‬
‫من الخادم‪.‬‬
‫تثبيت عدة نسخ من الخادم ب رض التطوير واالختبار عزل التطبيقات الفعلية‬
‫عن الجزء الخاص بالتطوير واالختبار – حماية البيانات الخاصة بنا من‬
‫التلف او الفقدان ‪.‬‬
‫تثبيت اكثر من نسخة من الخادم على نفس الجهاز لتعيين صالحيات االدارة‬
‫الكاملة للمستخدمين على النسخ المختلفة هذه الحالة تكون مفيدة جدا فى‬
‫البيئة الخاصة باستضافة قواعد البيانات – يحتاج العديد من العمالء‬
‫المشتركين فى هذة البيئة الستاضة قواعد البيانات على نفس الخادم مما‬
‫يتطلب اعطاء كل عميل الصالحيات الكاملة الدارة قاعدة البيانات الخاصة‬
‫به‬
‫اسم النسخة فى هذة الحالة يكون نفس االسم المعين لنسخة الويندوز المثبتة‬
‫على الخادم يمكننا تثبيت نسخة واحدة فقط من النو ‪Default‬‬
‫‪ Instance‬على نفس الخادم‪.‬‬
‫يمكننا تعين االسم الذى نريده لهذه النسخة ويمكننا تثبيت اكثر من نسخة من‬
‫النو ‪ Named instance‬على نفس الخادم وكما يمكننا ايضا تثبيت‬
‫نسخة واحدة فقط من النو ‪ Default Instance‬وعدة نسخ من النو‬
‫‪ Named instance‬على نفس الخادم‪.‬‬
‫يوجد اختيارين النسخة االفتراضية نسخة مسماة ‪Default Instance :‬‬ ‫‪9‬‬
‫النسخة االفتراضية دا لو اول مرة انزل السيكول سيرفر على الجهاز اما‬
‫‪ Named instance‬النسخة المسماة لو عندى نسخة من قبل على‬
‫الجهاز واريد تنزيل نسخة اخرى فاغير اسم النسخة من االسم االفتراضى‪.‬‬

‫‪25‬‬
11

11

26
‫‪ Authentication‬عبارة عن عملية تسمح للمستخدمين بتقديم الهوية‬
‫اسم المستخدم – كلمة السر الخاصة بهم للخادم قبل السماح لهم بالوصول‬
‫الى المصادر الخاصة بالخادم‪.‬‬
‫‪ Windows Authentication Mode‬يقوم الخادم باستخدام‬
‫حسابات المستخدمين المسجلة بنظام التش يل لتوثيق المستخدمين بخادم‬
‫قاعدة الباينات لكى يتمكن المستخدم الى خادم قاعدة البيانات البد ان يكون‬
‫لهذا المستخدم حساب على نظام التش يل ‪.Windows‬‬
‫‪ Mixed Authentication Mode‬يتم السماح للمستخدمين‬
‫بالدخول الى الخادم عن طريق الدمج بين حسابات المستخدمين المسجلة‬
‫بنظام التش يل وحسابات المستخدمين المسجلة بالخادم وعند استخدام هذة‬
‫الطريقة يكون لدينا قائمة واحدة ممن الحسابات لكل من الخادم وقاعدة‬
‫البيانات ويتم استخدامه فى حاالت خاصة مثل التطبيقات التى التدعم طريقة‬
‫التوثيق ‪.Windows Authentication‬‬
‫اثناء تثبيت الخادم يتم السؤال عن الحسابات الخاصة بتش يل الخدمات‬
‫المختلفة للخادم يجب تحديد الحسابات المستخدمة لتش يل ‪SQL Server‬‬
‫والمكونات الخاصة به‪.‬‬
‫يقوم الخادم باستخدام الل ة االفتراضية وهى الل ة المثبت بها نظام التش يل‬
‫الويندوز الخاص بالخادم ويجب عدم ت يير الل ة االفتراضية للخادم اال فى‬
‫مواقف معينة قاعدة البيانات يتم استخدامها من قبل اشخاص اخرين‬
‫موجودين بدول اخرى – عمل تزامن بين خوادم قواعد بيانات تستخدم ل ات‬
‫‪12‬‬
‫مختلفة ‪.‬‬

‫‪27‬‬
13

14

15

28
‫الفصل الثالث ‪SQL Server Mangement Studio :‬‬
‫‪ -‬طريقة الدخول لالداة‬

‫‪1‬‬

‫‪2‬‬

‫‪3‬‬

‫‪4‬‬

‫‪5‬‬

‫‪ -‬قواعد البيانات الخاصة بالخادم ‪:‬‬


‫‪29‬‬
‫تستخدم لحفظ معلومات االعداد ‪ Configuration‬التى يتم تطبيقها على النسخة ‪Instance‬‬
‫بالكامل ‪:‬‬
‫البيانات الخاصة باعداد ‪SQL Server‬‬ ‫‪‬‬
‫المعلومات الخاصة بالخوادم التى يتم ربطها بالخادم الحالى ‪Linked Servers‬‬ ‫‪‬‬
‫المعلومات الخاصة بالمستخدمين ‪User Login‬‬ ‫‪‬‬
‫المعلومات المتعلقة بقواعد البيانات االخرى الموجودة فى نفس النسخة ‪Instance‬‬ ‫‪‬‬

‫يفضل عمل نسخة احتياطية من قاعدة البيانات ‪ Master‬بصفة دورية ينصح بعمل نسخة‬
‫احتياطية منها عند ‪:‬‬
‫انشاء او حذف قاعدة بيانات‪.‬‬ ‫‪‬‬
‫تعديل البيانات او الملفات ‪ Log Files‬المستخدمة بواسطة قاعدة البيانات‪.‬‬ ‫‪‬‬
‫اضافة او حذف او تعديل بيانات الدخول لقاعدة البيانات‬ ‫‪‬‬
‫اضافة او حذف او تعديل الخوادم المرتبطة‬ ‫‪‬‬
‫تعديل اعدادات الخادم‬ ‫‪‬‬
‫تستخدم لحفظ بيانات الجدولة والمعلومات الخاصة باالحداث الماضية ‪ History‬التى تتم على قاعدة‬ ‫‪‬‬
‫البيانات‪.‬‬
‫تحتوى على المعلومات الخاصة بأى عمليات جدولة‬ ‫‪‬‬
‫تحتوى على المعلومات الخاصة بتاريخ عمل نسخ احتياطية واسترداد لهذه النسخ‬ ‫‪‬‬

‫تستخدم كقالب ‪ Template‬لكل قواعد البيانات الجديدة التى يتم انشائها بالخادم ‪.‬‬
‫‪31‬‬
‫اذا كان لدينا االعدادات االبتدائية الخاصة بنا ونريد تطبيق هذه االعدادات على جميع قواعد‬
‫البيانات التى نريد انشائها فيما بعد نقوم بتطبي هذه االعدادات على قاعدة البيانات ‪. Model‬‬
‫اذا قمنا بانشاء اجراء ‪ Stored Procedure‬فى قاعدة بيانات ‪ Model‬فان اى قاعدة‬
‫بيانات جديدة سوف نقوم بانشائها سوف تحتوى على نسخة من هذا االجراء‪.‬‬
‫تستخدم كموضع تخزين مؤقت للبيانات التى نتعامل معها حاليا داخل قاعدة البيانات مثل نتائج‬
‫االستعالمات يمكن للمستخدم القيام بانشاء عناصر مؤقته مثل الجداول او اجراءات او عناصر‬
‫اخرى يقوم الخادم بحفظ هذه العناصر بصورة مؤقتة فى قاعدة البيانات ‪ Tempdb‬الى ان‬
‫تصبح غير ضرورية‪.‬‬
‫‪: Logins & Users -‬‬
‫‪ : Logins‬هى صالحية الدخول على السيكول السيرفر وبعدها يتم االتصال بقاعدة البيانات‬
‫معينة اذا كان له صالحية النه ليس من صالحية اى شخص الدخول على قاعدة‬
‫البيانات وانما لمن له صالحية لذلك فقط وفاالدمن لقاعدة البيانات هو من يعطى‬
‫الصالحيات للدخول‪.‬‬
‫‪ : Users‬هى المستخدمين للقاعدة معينة (المبرمجين – مدخلى ومستخدمى البيانات) ولكى‬
‫يصبح مستخدم للقاعدة البد ان يمر من المرحلة االوله وهى ‪ Logins‬وثم يصبح‬
‫‪ Users‬ويكون له صالحيات معينة على قواعد معينة‪.‬‬
‫مثال ‪ :‬االدمن هو ‪ SA‬وثالثة مبرمجين بلغات مختلفة كل منهم يريدون االتصال بالقاعدة‪.‬‬

‫يشرح بأن هنالك ثالث مبرمجين نريدهم ان يدخلو على قاعدة البيانات فسيتم انشاء لكل منهم‬
‫حساب فى قاعدة البيانات واعطاء لكل حساب صالحيات معينة‪.‬‬
‫فمثالً من الممكن ان اعطى صالحية للمستخدم عالء ان يدخل على قاعدة البيانات وايضا ان‬
‫ينشئ مستخدمين اخرين على قاعدة البيانات‪.‬‬
‫‪ ‬خطوات انشاء مستخدمين جدد ‪ -‬نتبع الخطوات التالية‪:‬‬
‫‪31‬‬
1

32
4

33
‫‪ ‬اعطاء صالحيات للمستخدمين على السيرفر ‪: Fixed Server Roles‬‬

‫‪1‬‬

‫‪ :Sysadmin‬يمكن ألعضاء القيام بأي نشاط في الخادم أى له جميع الصالحيات‪.‬‬


‫‪ : Serveradmin‬يمكن ألعضاء تغيير خيارات من تشغيل وإيقاف سيفر‪.‬‬
‫‪ : Securityadmin‬يمكن أعضاء له صالحية فى اعطاء للمستخدمين صالحية‬
‫الدخول للقاعدة البيانات‪.‬‬
‫‪ : Processadmin‬يمكن ألعضاء إنهاء العمليات التي تعمل في مثيل من ‪SQL‬‬
‫‪ Server‬بمعنى له الصالحية بالتحكم فى اى شخص يعطى امر‬
‫بالكود‪.‬‬
‫‪ : setupadmin‬يمكن ألعضاء إضافة وإزالة الخوادم المرتبطة باستخدام عبارات‬
‫‪.Transact-SQL‬‬
‫‪ : Bulkadmin‬ويمكن ألعضاء تشغيل العبارة ‪ INSERT‬كبيرة الحجم أو مجمعة‪.‬‬
‫‪ : Diskadmin‬يمكن ألعضاء يتم استخدام إلدارة الملفات على القرص‪.‬‬
‫‪ : dbcreator‬يمكن ألعضاء إنشاء أو تعديل أو إسقاط‪ ،‬واستعادة أية قاعدة بيانات‪.‬‬
‫‪2‬‬
‫‪ : Public‬كل تسجيل دخول ‪ SQL Server‬ينتمي إلى دور خادم ويرى الجدوال‬
‫بدون التعديل فى اى يشئ‪.‬‬

‫‪34‬‬
‫حيث ان قام مستخدم ‪ Ahmed‬ليس له صالحية انشاء مستخدم جديد فرفض وظهرت‬
‫هذة الرسالة‬

‫‪3‬‬

‫مثال على ما سبق ‪:‬‬


‫يشرح بترتيب الخطوات التالية كيفية انشاء مستخدم جديد واعطاء صالحيات فى دخول قاعدة‬
‫بيانات وله صالحيات معينة‪.‬‬
‫زر االيمن على الماوس على الملف ‪ Logins‬هتظهر هذة الشاشة ‪:‬‬

‫‪35‬‬
‫ثم نختار …‪ New Login‬فتهر هذه الشاشة ‪:‬‬
‫من الشاشة ‪: General‬‬
‫الدخال اسم المستخدم وكلمة المرور مرتين وطريقة التوثيق المستخدم واسم القاعدة البيانات ‪:‬‬

‫من الشاشة ‪: User Mapping‬‬


‫الختيار اسم القاعدة وعند اختيارها تظهر لك الصالحيات المستخدم على هذة القاعدة البيانات ‪:‬‬

‫‪36‬‬
‫فنضعط على ‪OK‬‬
‫النشاء المستخدم وتظهر الشاشة‬

‫‪37‬‬
‫‪ ‬انشاء مستخدم بالكود ‪:‬‬
‫نضغط على زر ‪: New Query‬‬

‫انشاء مستخدم جديد وبكلمة مرور ‪:‬‬

‫اعطاء صالحيا للمستخدم‬

‫‪38‬‬
‫‪ ‬تعديل مستخدم بالكود ‪:‬‬
‫نضغط على زر ‪ New Query‬وكتابة الكود لجعل المستخدم غير نشط للدخول للسيرفر ‪:‬‬

‫وعندما محاولة دخول المستخدم "‪ "ALI‬على السيرفر ‪:‬‬

‫تظهر له رسالة رفض لمنعه من الدخول ‪:‬‬

‫واذا دخلنا باالدمن مرة اخرى واردنا وكتابنا هذا الكود لجعل المستخدم "‪ "ALI‬نشط وبالتالى يستطيع‬
‫المستخدم الدخول ‪:‬‬

‫‪39‬‬
‫‪ ‬تخطيط وتصميم قواعد البيانات‪:‬‬
‫أوالً‪ :‬تخطيط قواعد البيانات‪:‬‬
‫طريقة منظمة لحفظ البيانات المتعلقة بموضو معين‪.‬‬ ‫‪-1‬‬
‫يتم تنظيم قواعد البيانات على حسب ال رض من استخدامها‪.‬‬ ‫‪-4‬‬
‫يمكن استخدام قاعدة البيانات كمحلل للبيانات مما يسهل عملية الحصول على البيانات‪.‬‬ ‫‪-3‬‬
‫مميزات التخطيط الجيد لقواعد البيانات ‪:‬‬ ‫‪‬‬
‫‪ -1‬التخطيط المسبق لقواعد البيانات يعمل على زيادة أداء قواعد البيانات‬
‫‪ -4‬يجب علينا قضاء وقت كافى لتخطيط قواعد البيانات على الزرق قبل الشرو فى إنشائها‪.‬‬
‫‪ -3‬التخطيط الجيد لقاعدة البيانات يسمح لنا بحفظ ومعالجة البيانات بشكل فعال‪.‬‬
‫‪ ‬يعمل على تقليل المساحة الالزمة لحفظ قواعد البيانات‪.‬‬
‫‪ ‬يعمل على تقليل الوقت الالزم لحفظ واسترجا هذة البيانات‪.‬‬
‫‪ -2‬اذا كنا نقوم بتنفيذ استعالمات معقدة على قواعد البيانات والتى تحتاج الى قدر كبير من الحسابات بصورة‬
‫مستديمة‪.‬‬
‫‪ -2‬يمكننا تقليل الوقت الالزم لتنفيذ هذه االستعالمات بشكل كبير عن طريق حفظ ناتج هذه االستعالمات فى‬
‫قاعدة البيانات‪.‬‬
‫‪ -0‬نحتاج الى مقدار اضافى من المساحة لتخزين ناتج هذه االستعالمات‪.‬‬
‫‪ -8‬يتم تحسين اداء هذه االستعالمات على حساب المساحة التخزينية‪.‬‬
‫‪ -7‬يجب علينا عمل موازنة للمساحة التخزينية والوقت الالزم لحفظ واسترجا البيانات للوصول الى افضل‬
‫اداء لقاعدة البيانات‪.‬‬
‫مالحظات عن التخطيط الجيد لقواعد البيانات ‪:‬‬ ‫‪‬‬
‫‪ .1‬تقديم قاعدة البيانات وسائل لتسهيل عملية اضافة وحذف وتعديل البيانات‪.‬‬
‫‪ .4‬تنظيم البيانات فى شكل يسمح للمستخدمين بالتفاعل مع البيانات بصورة مالئمة‪.‬‬
‫‪ .3‬المستخدم الذى يقوم باستخدام قاعدة البيانات الخاصة بالبيع بالتجزئة‪.‬‬
‫‪ ‬بيانات الموظفين فى جدول‪.‬‬
‫‪ ‬بيانات العمالء فى جدول اخر‪.‬‬
‫‪ ‬بيانات المنتجات فى جدول اخر‪.‬‬
‫‪ .2‬يمكننا تحسين فاعلية قواعد البيانات عن طريق عقد اجتماعات مع المستخدمين والمساهمين فى مرحلة‬
‫التصميم‪.‬‬

‫ثانيا ً ‪ :‬تصميم قواعد البيانات ‪:‬‬


‫‪ ‬تحديد الهدف من انشاء قاعدة البيانات‪:‬‬
‫‪ ‬يجب انشاء قائمة بالوظائف االساسية التى نريد تحقيقها عن طريق قاعدة البيانات‪.‬‬
‫‪ ‬يجب معرفة نو البيانات التى يريد كل مستخدم الحصول عليها من قاعدة البيانات‪.‬‬
‫‪ ‬يجب انشاء رسم تخطيطى لوصف العالقة بين العناصر المختلفة داخل قاعدة البيانات‪.‬‬
‫‪ ‬يجب تحديد البيانات المدخالت التى سوف يتم ادخالها الى قاعدة البيانات‪.‬‬
‫‪ ‬يجب تحديد البيانات المخرجات التى نريد استنتاجها من قاعدة البيانات‪.‬‬

‫‪41‬‬
‫‪ ‬تصميم الجداول الالزمة لقاعدة البيانات‪:‬‬
‫‪ ‬يجب مراعاة ان يحتوى الجدوال الواحد على بيانات خاصة بموضو واحد فقط‪.‬‬
‫‪ ‬يجب عدم تكرار البيانات داخل الجدول الواحد‪.‬‬
‫‪ ‬يجب عدم تكرار نفس البيانات داخل الجدوال المختلفة بدون داعى‪.‬‬
‫‪ ‬تحديد الحقول التى سيتم استخدامها داخل كل جدول مع مراعاة تقليل البيانات التى سيتم ادخالها داخل‬
‫كل حقل بقدر االمكان‪.‬‬
‫‪ ‬يجب الحرص على عدم انشاء حقول تعمل على تجميع البيانات من عدة حقول داخل الجدول‪.‬‬
‫‪ ‬يجب ان تكون الحقول التى سيتم استخدامها داخل الجدول متعلقة بموضو الجدول بقدر االمكان‪.‬‬
‫‪ ‬تحديد العالقات بين الجدوال ‪:‬‬
‫‪ ‬تسمح لنا بالحصول على استعالمات معقدة من خالل الجداول المختلفة الموجودة بقاعدة البيانات‪.‬‬
‫‪ ‬يجب تعريف مفتاح اساسى لكل جدول‪.‬‬
‫‪ ‬المفتاح االساسى عبارة عن حقل او عدة حقول تحتوى على بيانات مختلفة لكل سجل داخل قاعدة‬
‫البيانات‪.‬‬

‫‪41‬‬
‫ثالثا ً ‪ :‬قواعد البيانات العالئقية ‪: Relational DataBaeses‬‬
‫‪ ‬تنظيم البيانات فى مجموعة من الجدوال المرتبطة مع بعضها البعض‪:‬‬
‫‪ ‬تستخدم االعمدة الحقول لعرض الخصائص المختلفة للبيانات‪.‬‬
‫‪ ‬كل عمود يستخدم لتخزين نو واحد فقط من البيانات‪.‬‬
‫‪ ‬تقليل تكرار البيانات التى يتم تخزينها بقاعدة البيانات‪.‬‬
‫‪ ‬سرعة تعديل المعلومات التى قد تؤثر فى جزء كبير من قاعدة البيانات‪.‬‬
‫‪ ‬استرجا البيانات المرتبطة مع بعضها البعض من عدة مصادر‪.‬‬

‫رابعا ‪ :‬الل ة ‪: SQL‬‬


‫‪ ‬تنقسم الى قسمين هما‬

‫)‪Data Definition Language (DDL‬‬ ‫)‪Data Manipulation Language (DML‬‬


‫تعريف وتعديل وحذف عناصر قواعد البيانات‬ ‫الوصول للبيانات اضافة وتعديل وحذف البيانات‬
‫االوامر المستخدمة مع‬ ‫االوامر المستخدمة مع السجالت‬
‫‪Databases – Tables – Columns - Indexes‬‬ ‫‪Select‬‬
‫‪Create‬‬ ‫‪Insert‬‬
‫‪Alter‬‬ ‫‪Update‬‬
‫‪Drop‬‬ ‫‪Delete‬‬

‫‪42‬‬
‫الفصل الرابع ‪ :‬تصميم قواعد البيانات‬
‫‪ ‬خطوات عمل النشاء وحذف وتعديل قاعدة بيانات ‪:‬‬

‫‪1‬‬

‫محتويات قاعدة البيانات ويتكون من قسمين ‪:‬‬

‫السطر االول للقاعدة نفسها وحجمها االولى ‪ 3‬ميجا بايت بشكل تلقائى ويمكن ت ييره حسب‬
‫الحاجة والزيادة التلقائية محددة بمقدار ا ميجا بايت ويمكن زيادتها حسب الحاجة ايضا ً وكذلك‬
‫مسار خزن القاعدة البيانات وجميع محتوياتها‪.‬‬

‫السطر التانى وهو الــ ‪ Log‬وهو ملف يحتوى على كل االحداث واالجراءات التى تمت على‬
‫قاعدة البيانات وكذلك تستطيع تحديد حجمه االساس ومقدار الزيادة التلقائية ومسار خزنه‪.‬‬

‫هندخل اسم قاعدة البيانات ونختار مالكها‬


‫‪2‬‬

‫‪2‬‬

‫‪43‬‬
3

44
‫انشاء وحذف وت ير اسم قاعدة البيانات من خالل الكود ‪:‬‬

‫‪1‬‬

‫نض ط هنا اوالً‬ ‫‪2‬‬

‫ثانيا ً ‪ :‬كتابة الكود النشاء القاعدة‬

‫‪2‬‬

‫‪45‬‬
‫‪3‬‬
‫الكود حذف القاعدة‬

‫الكود لت ير اسم القاعدة‬


‫‪5‬‬

‫‪46‬‬
‫‪ ‬خطوات عمل نسخ واعادة استرجاع لقاعدة بيانات ‪:‬‬

‫‪1‬‬

‫اسم القاعدة المطلوب عمل لها نسخة احتياطية‬

‫نختار نو النسخ اما تكون القاعدة‬


‫بالكامل او اما جزء االخير الذى لم‬
‫ياخذ نسخة مسبقا‬
‫اسم و وصف النسخة االحتياطية‬
‫للقاعدة البيانات‬

‫‪2‬‬

‫عدد االيام وبعدها تاخذ‬


‫نسخة احتياطية من‬
‫القاعدة‬

‫تحديد مسار‬
‫القاعدة‬

‫‪47‬‬
‫‪2‬‬

‫‪3‬‬

‫اسم القاعدة التى تستقبل‬


‫البيانات المستعادة‬

‫اسم القاعدة‬
‫المطلوب استعادتها‬

‫‪5‬‬

‫اختيار النسخ االحتياطية المطلوب استعادتها‬

‫‪48‬‬
‫‪6‬‬

‫‪ ‬خطوات عمل ‪: Snapshot‬‬


‫هى عبارة عن نسخة طبق االصل من بيانات قاعدة البيانات وقت عمل هذة النسخة بمعنى (اى صورة ثابتة من‬
‫قاعدة البيانات االصلية فى وقت محدد ‪ )Snapshot‬ويمكن عمل أكثر من نسخة ‪ Snapshot‬وعلى العلم ان جميع‬
‫نسخ ‪ Snapshot‬للقراءة فقط‪.‬‬

‫وهذة االداة غير متوفرة مع النسخ المجانية من ‪ SQL Sever Express‬ويأخذ الملف امتداد (‪).ss‬‬

‫‪49‬‬
‫‪ ‬خطوات عمل ‪: Detach & Attach Database‬‬
‫تستخدم لرفع القاعدة اللى من نوع ‪ SQL Sever‬على السيرفر اوفصل القاعدة من السيرفر (والشرح كاالتى) ‪:‬‬

‫‪1‬‬

‫‪2‬‬

‫هنضغط على ‪Add‬‬

‫‪3‬‬

‫‪51‬‬
4

51
‫فصلها من على السيرفر‬

‫‪1‬‬

‫‪2‬‬

‫‪3‬‬

‫بالكود ‪ :‬انشاء قاعدة بيانات من خالل رفعها على السيرفر‬

‫‪1‬‬

‫‪52‬‬
‫‪ ‬خطوات عمل ‪: Import & Export Database‬‬
‫هى تستخدم لعمل استيراد وتصدير قواعد البيانات بأنواع مختلفة الى ومن السيرفر‪.‬‬

‫توجد لدينا قاعدة من نوع اكسيس على سطح المكتب نريد عمل لها استيراد‬

‫‪1‬‬

‫‪2‬‬

‫‪3‬‬

‫‪53‬‬
4

54
7

55
11

11

12

56
‫‪13‬‬

‫تصدير القاعدة البيانات‬

‫‪1‬‬

‫‪2‬‬

‫‪57‬‬
3

58
6

59
9

11

11

61
‫‪12‬‬

‫‪ ‬خطوات عمل ‪: Shrink Database‬‬


‫فى بعض االوقات نقوم بعمل اضافه وتعديل وحذف ويوجد فى قاعده البيانات مايشبه ال الملفات المؤقته وتحتاج‬
‫الى حذفها وبالتالى ستزيد قاعده البيانات وهو مايسمى بال ‪Shrink‬‬

‫‪ ‬ولعمل ذلك نقوم بعمل ريت كليك على قاعده البيانات ونختار ‪ Tasks‬ومنها نختار ‪ Shrink‬ومنها‬
‫نختار ‪Database‬‬
‫‪ ‬ونعيد الكره مره اخرى ونختار بدال من ‪ Database‬نختار ‪Files‬‬

‫‪1‬‬

‫‪61‬‬
Database ‫فى حالة‬

Files ‫فى حالة‬

62
‫‪ ‬خطوات عمل ‪: Generate Database Script‬‬
‫ببساطه ان لو ارغب فى معرفه اى كود قد قمت بالفعل بانشاءها من خالل ‪ Wizard‬على سبيل المثال معرفة‬
‫الكود النشاء قاعدة البيانات – تقليص القاعدة – استيراد وتصدير‬

‫من خالل الضغط على ‪: Scirpt‬‬

‫فيظهر هذا االسكريبت به الكود لتنفيذ االمر ‪:‬‬

‫‪63‬‬
‫ومن الممكن اظهار على شكل ملف من خالل‬

‫‪64‬‬
‫‪ ‬خطوات عمل ‪: File Groups‬‬
‫قاعده البيانات فى السيكوال عباره هن ملفان‬

‫االول ‪ LogFile /‬وهو الملف الذى يحوى بداخله االستركتشر الخاص بقاعده البيانات من جمل االنزرت‬
‫والديلت واالبديت ‪ ---‬الخ‬

‫الثانى ‪ DataFile /‬وهو الملف الذى يحوى بداخله ملفات الداتا والسيستم‬

‫وواحده من اهم االختالفات ان ملف ال ‪ Log‬هو ملف واحد‬

‫اما ملف ال ‪ Dtat‬ممكن تكراره عده مرات ونستفيذ من ذلك فى عمل العديد من ملفات الداتا وتخصيص كل‬
‫ملف على هارد ديسك منفرد او فولدر والغرض من كل هذا هو االداء ‪ Performance‬فى التعامل والسرعه‬
‫على الداتا بيز ونستطيع من خاللها عمل قاعدة البيانات على اكثر من مجموعة فى اكثر من ‪Partition‬‬

‫على سبيل المثال ‪:‬‬

‫حيث اننى دخلنا على خصائص اى قاعدة بيانات ودخلنا على ‪ FileGroups‬وقمنا وضع عدة مجموعات ‪:‬‬

‫‪65‬‬
‫تقسم القاعدة على مجموعات (موضح فى الصورة االولة) ومسارات مختلفة (موضح فى الصورة التانية)‬

‫واذا كان الجدول معمول مسبقا واردنا تغير المجموعة الخاصة به من خالل وضع التصميم الجدول فى خصائص‬
‫الجدول‪:‬‬

‫‪66‬‬
‫‪ ‬خطوات عمل ‪: Schema‬‬
‫‪ ‬معلومات عن ‪: Schema‬‬

‫هى شئ او حاوية تقوم بربط جميع االوبجيكت المرتبطة ببعضها فى شئ ما (وهذة العالقة من الناحية التنظيمية‬
‫ليست اكثر)‬

‫وهى تشبة فكرة الـــ ‪ Name Space‬فى الــ ‪.OOP‬‬

‫ومن مميزات االسكيما ‪:‬‬

‫انه يمكني انشاء اكثر من جدول او اكثر من اوبجيكت بنفس االسم داخل قاعدة البيانات الواحدة بشرط ان يكون‬
‫كال منهم تابع الى اسكيما مختلفة‪.‬‬

‫‪ ‬مثال ‪:‬‬

‫يمكن تجميع مجموعة من الجداول المرتبطة مع بعضها فى شئ ما فى اسمه اسكيما‬

‫وليس معنى االرتباط هنا انه يوجد عالقة بين الجداول وانما مرتبطين بشئ ما من الناحية التنظيمية‬

‫فعلى سبيل المثال ‪:‬‬

‫يمكن تجميع كل الجدوال المتعلقة بالطلبة فى قاعدة بيانات المدرسة داخل اسكيما وده من الناحية التنظيمية‬

‫‪ ‬النشاء ‪Schema‬‬

‫طبعا تحدثنا ان ال ‪ Schema‬تخص قاعده بيانات معينه ‪:‬‬

‫‪ ‬فنقوم بالدخول على قاعده بيانات لدينا ‪ Students‬ثم نختار ‪ Security‬ثم ‪Schema‬‬
‫‪ ‬ونقوم من هنا بعمل ريت كليك ونختار ‪ New Schema‬ونكتب اسم االسكيما وليكن‬
‫‪MySchema‬‬

‫وكود انشاء االسكيما ‪:‬‬

‫‪create schema MySchema1‬‬

‫‪ ‬ولتخصيص جدول السكيما معينه نجد ( اى جدول قبل اسمه ستجد اسم ‪ dbo‬فى الواقع تلك‬
‫اسكيما افتراضيه مع السيكوال ‪ 2118‬ولتغير االسكيما الى ما قمنا بانشائها نقوم بالنظر الى‬
‫شاشه الخاصائص بعد عرض ال ‪ Design‬الخاص بالجدول سنجد خاصيه االسكيما نقوم‬
‫باختيار االسكيما الجديده التى قمنا بانشاءه سنجد اسم الجدول اخذ االسكيما الجديده ولو قمت‬
‫بانشاء جدول بنفس اسم جدول موجود مسبقا ولكن مع اختالف االسكيما اليحدث اعتراض )‬
‫‪ ‬ولعمل استعالم عن جدول البد من تحديد االسكيما‬

‫‪select * from MySchema.stud‬‬

‫‪67‬‬
‫هذا الشكل يوضح االسكيما ‪:‬‬

‫فى وضع التصميم يتم ت يير االسكيما الجدول‬


‫من خالل شاشة خصائص الجدول‬

‫فى نفس القاعدة يوجد جدولين‬


‫بنفس االسم بدون مشاكل وذلك‬
‫الختالف االسكيما‬

‫تصميم االسكيما يدوى‬

‫‪1‬‬

‫‪68‬‬
2

69
‫‪ ‬اعطاء صالحيات للمستخدمين على القاعدة البيانات ‪: Security Project‬‬

‫عندما القاعدة نريد ان تقوم بأنشاء ثالثة مستخدمين عليها هم ‪:‬‬

‫‪ GM‬المدير العام له صالحية انشاء القاعدة البيانات والجدوال‬

‫‪ Dev‬المطور له صالحية ‪ Insert into‬و ‪ Update‬و ‪Selcet‬‬

‫‪ Rpt‬منشئ التقارير له صالحية ‪Select‬‬

‫‪ SA‬االدمن الذى يعطى الصالحيات لكل المستخدمين‬

‫فسبقنا شرح كيفية انشاء صالحيات ‪ GM‬لما كنا بنشرح ‪Sever Roles‬‬

‫اما االن هنشرح كيفية انشاء صالحيات ‪ Dev‬و ‪Rpt‬‬

‫كليك يمين وندخل على خصائص المستخدم‬

‫‪71‬‬
‫فتظهر هذة الشاشة فنختار‬

‫‪Securables‬‬

‫نض ط على بحث‬

‫اختيار العناصر‬
‫الخاصة فتظهر هذة‬
‫الشاشة‬

‫‪71‬‬
‫فنقوم بتحديد نو العناصر‬

‫اختيار الجدوال‬

‫نض ط هنا الختيار الجدول‬

‫‪72‬‬
‫نحدد الجدول الذى نشئ علية‬
‫الصالحيات‬

‫هنا نحدد للمستخدم صالحياته‬


‫على الجدول‬

‫‪73‬‬
‫الفصل الخامس ‪ :‬تصميم الجداول‬
‫‪ ‬خطوات عمل النشاء وحذف وتعديل بنية ونسخ الجدوال بالقاعدة بيانات ‪:‬‬

‫‪1‬‬

‫‪2‬‬

‫‪2‬‬

‫طريقة اخرى النشاء الجدول ‪:‬‬

‫‪3‬‬

‫‪74‬‬
‫قمنا بوضع اسماء الحقول‬
‫ونو البيانات‬

‫قمنا بحفظ الجدول‬

‫‪5‬‬

‫لملئ الجدول بالبيانات نتبع ما يلى كليك يمين على الجدول المراد ونختار‬
‫‪edit top 200 rows‬‬

‫نقوم بوضع مفتاح‬


‫اساسى للجدول‬

‫‪6‬‬

‫‪4‬‬

‫جدول موجود نريد تعديل‬

‫‪8‬‬

‫‪75‬‬
‫الضافة حقل جديد بالجدول‬

‫‪9‬‬

‫فتكون النتيجة‬

‫‪13‬‬

‫لحذف الحقل بالجدول‬

‫‪11‬‬

‫لنسخ الحقل بالجدول‬

‫‪12‬‬

‫لدينا جدول اسمه ‪ Names‬ونريد نسخ تصميم وبياناته‬

‫‪12‬‬

‫‪76‬‬
‫‪ ‬انواع البيانات الحقول بالجدوال لقاعدة بيانات ‪:‬‬
‫بعد كتابة اسماء الحقول الخاصة بالجدول نقوم بعمل تحليل للبيانات التى سوف تدخل فى الحقل‬
‫وبالتالى نستطيع تحديد نوع البيانات التى تتناسب مع الحقل‪.‬‬
‫وسوف نشرح نوع البيانات فى الجدوال التالية ‪:‬‬

‫‪77‬‬
78
‫الفصل السادس ‪ :‬تصميم العالقات (‪ )Relationship‬بقاعدة البيانات‬
‫‪ ‬مقدمة عن العالقات الجدوال ‪:‬‬
‫يمكنا ربط جدولين او اكثر طاما ان هناك عالقة ما (مباشرة او غير مباشرة) بين حقل فى الجدول‬
‫االول وحقل فى الجدول االخر وذلك للحصول على بيانات او تقارير دقيقة من تلك الجداول‪.‬‬
‫‪ ‬مفاهيم عامة قبل البدء ‪:‬‬
‫‪ ‬المفتاح الرئيسى (‪ : )Primary Key PK‬هو مفتاح يسند الى احد حقول الجدول ويشترط فيه انه فريد وال‬
‫يمكن تكراره وال يمكن ان يكون فارغ (‪.)Not Null‬‬
‫‪ ‬المفتاح االجنبى (‪ : )Foreign Key FK‬هو المفتاح الرئيسى لجدول اخر فعند استخدامه فى جدول غير‬
‫جدوله االصلى ضمن عالقة وله نفس الصفات المفتاح الرئيسى سابقة الذكر اال انه فى حالة العالقات ( ‪one‬‬
‫‪ )to one‬و (‪ )Many to many‬يمكن تكراره داخل العالقة‪.‬‬
‫‪ ‬انواع العالقات ‪ )one to one( :‬و (‪ )Many to many‬و (‪)one to many‬‬
‫‪ ‬مثال ‪:‬‬

‫لدينا جدولين جدول لبيانات الطلبة وجدول اخر لحركة الطلبة ‪ -‬فلكل طالب من الممكن ان يقوم باكثر من حركة ‪-‬‬
‫فاذن هناك عالقة راس باطراف بين الجدولين‬

‫وفائدة هذا انه لو تم دمج كال من الجدولين فى جدول واحد فانه سيتم استهالك مساحة كبيرة من البيانات المكررة‬

‫لذا فيجب علينا مراعاة ذلك عند تصميم قاعدة البيانات‪.‬‬

‫‪79‬‬
‫‪: DatabaseDiagram ‬‬
‫ونختار ‪New‬‬ ‫ولعمل ‪ Relationship‬هنا تسمى ‪ Diagram‬فنقوم بعمل ريت كليك‬
‫‪DatabaseDiagram‬‬

‫ثم نستدعى الجداول محل الربط‬

‫‪81‬‬
‫ونقوم بالسحب وااللقاء من الحقل فى الجدول االول الى الحقل فى الجدول الثانى وهى عالقه ‪One‬‬
‫‪ To many‬ويكون الشكل‬

‫‪81‬‬
‫الحقول بين االقواس هى التى بينهم الربط والظهار اسم العالقة او الربط نضغط كليك يمين ونختار‬

‫‪82‬‬
‫للتعديل العالقة نقف على الجدول ونضغط كليك يمين ونختار ‪: Relationship‬‬

‫ثم نقوم بحفظ تلك العالقة على شكل ملف اسكربت ‪:‬‬

‫ثم نقوم بحفظ تلك العالقة على ‪: Diagram‬‬

‫‪83‬‬
‫واذا تعديل العالقة ‪:‬‬

‫‪84‬‬
‫‪: DataBase Normalization ‬‬

‫هى عملية تستخدم لحذف جميع اشكال تكرار البيانات داخل قاعدة البيانات وفى حاله عمل‬
‫‪ Normalization‬كامل للبيانات اليوجد اى تكرار للبيانات فى جميع الجداول ماعدا حقول البيانات‬
‫المستخدمة كمفاتيح لعمل االرتباطات بين الجداول‪.‬‬

‫هى بعض االرشادات والطرق المتبعة لتحسين قاعدة البيانات يعنى نفرض ان لدينا قاعدة البيانات‬
‫ولم نطبق عليهم ‪ Normalization‬فتكون النتيجة بهذا الشكل ‪:‬‬

‫فنالحظ ان العيوب الموجود بهذة القاعدة فعند االضافة او التعديل او الحذف فتؤدى الى اهدار‬
‫المساحة بسبب تكرار البيانات او فقدان البيانات‪.‬‬

‫لذلك نقوم بتقسيم العالقات الكبيرة الى عالقات اخرى اصغر للتخلص من العيوب‪.‬‬

‫من مميزات ‪: Normalization‬‬

‫‪ ‬توفير المساحة التخزينية بشكل كبير وبالتالى توفير االموال المستخدمة الضافة وحدات‬
‫تخزينية اضافية لحفظ البيانات‪.‬‬
‫‪ ‬زيادة فاعلية تعديل البيانات والحفاظ عليها‪.‬‬

‫قواعد الــ ‪: Normalization‬‬

‫‪ ‬تحديد البيانات التى يتم وضعها فى كل جدول من جداول قاعدة البيانات‪.‬‬


‫‪ ‬كيفية ربط هذة البيانات بحقول المفاتيح االساسية‪.‬‬

‫‪85‬‬
‫انواع ‪: Normalization Form‬‬

‫سوف نقوم بالشرحهم بالتفصيل‬


‫‪: First Normal Form (1NF) ‬‬
‫‪ -‬الجدول ال يتضمن اى حقل على قيم متعددة او قيم مركبة او تخلو من تكرار لقيمة معينة او حقل‬
‫معين‪.‬‬
‫‪ -‬فى الوضع االفتراضى جميع الجدوال العالئقية تنطبق عليها القاعدة )‪ (1NF‬تلقائياً‪.‬‬
‫‪ -‬قيمة اى حقل فى اى من سجالت الجدول عبارة عن قيمة واحدة فقط‪.‬‬
‫مثال ‪:‬‬

‫سوف نالحظ ان الجدول الخاص بالعالقة االولى بين العميل واللغات التى يتحدثها تم تقسيمها الى عالقات‬
‫اصغر وذلك بناء قيمة كود العميل نستطيع ان نحصل على اسمه ولغته‪.‬‬

‫‪86‬‬
‫فنالحظ فى الشكل التالى فى عدم تطبيق اهدار للمساحة وفى حالة الحذف سوف يتسبب الى فقد البيانات‬

‫لكى نقوم بتحسين القاعدة نقوم بتقسيمها الجدول الى الجدولين ‪:‬‬

‫ونستطيع وضع هذه العالقة فى جدول واحد ‪:‬‬

‫‪87‬‬
‫‪: Second Normal Form (2NF) ‬‬
‫‪ -‬يجب ان تنطبق القاعدة )‪ (1NF‬على الجدول‪.‬‬
‫‪ -‬عدم وجود اى عمود من اعمدة الجدول خالف اعمدة المفاتيح االساسية يعتمد على احد االعمدة‬
‫المكونة للمفتاح االساسى للجدول فقط وليس جميع االعمدة المكونة لهذا المفتاح‪.‬‬
‫‪ -‬وان تخلو من العالقات الجزئية بمعنى وجود حقل غير اساسى يعتمد على جزء من المفتاح‬
‫االساسى وليس على كل المفتاح االساسى بمعنى ان عدد الساعات يعتمد على رقم الموظف ورقم‬
‫المشروع وهذا سليم وال يوجد به خطأ ولكن اسم المشروع يعتمد على رقم المشروع فقط وهذه‬
‫هى العالقة الجزئية‪.‬‬

‫ونستطيع وضع هذه العالقة فى جدول واحد ‪:‬‬

‫‪88‬‬
‫‪Boyce codd normal form (BCNF) ‬‬
‫‪ -‬ان تكون فى المستوى الثانى (‪)2NF‬‬
‫‪ -‬ان تعالج مشاكل المستوى الثانى والثالث‪.‬‬
‫‪ -‬اال يوجد حقل اساسى يعتمد على حقل غير اساسى‪.‬‬

‫‪: Second Normal Form (3NF) ‬‬


‫‪ -‬يجب ان تنطبق القاعدة )‪ (2NF‬على الجدول‪.‬‬
‫‪ -‬عدم اعتماد اى من اعمدة الجدول خالف اعمدة المفاتيح االساسية على بعض البعض‪.‬‬
‫‪ -‬يمكننا الحصول على تصميم جيد لقاعدة البيانات فى حالة وجود جميع جداول قاعدة البيانات فى‬
‫الصورة الثالثة‪.‬‬
‫مثال ‪:‬‬

‫‪89‬‬
‫‪ ‬معامل الربط بين الجداول ‪:‬‬
‫‪ ‬يسمح لنا باالستعالم عن بيانات اكثر من جدول فى نفس الوقت‪.‬‬
‫‪ ‬يسمح لنا بحفظ البيانات فى اكثر من جدول للمحافظة على عدم تكرار البيانات داخل الجداول‪.‬‬
‫‪ ‬يستخدم ‪ : Union‬لربط جملتين ‪ Select‬او اكثر مع بعضهم البعض – ويستخدم ايضا‬
‫للربط بين صفوف الجداول‪.‬‬
‫‪ ‬يستخدم ‪ :join‬لربط جدولين او اكثر مع بعضهم البعض باستخدام جملة ‪ Select‬واحدة ‪-‬‬
‫و يستخدم ايضا للربط بين اعمدة الجداول وتحديد االعمدة المشتركة فى عملية الربط داخل‬
‫العبارة ‪ - Where‬ويقوم النظام بتعيين نوع عملية الربط بين الجداول تلقائيا ً – ويفضل‬
‫استخدام التوصيف الكامل للحقول(يعنى اسم الجدول‪.‬اسم الحقل)‬
‫‪ ‬عملية الربط فى ‪ : join‬الحقول المستخدمة فى عملية الرط يجب ان تكون متماثلة – ويجب‬
‫ان يكون نوع البيانات لكل من هذة الحقول متوافق مع النوع االخر‪.‬‬
‫‪ ‬انواعها ‪ join‬وشرحها‪:‬‬

‫‪ -1‬يحدث النوع اول من االرتباط عند اختيار البيانات من جدولين او اكثر من جداول‬
‫قاعدة البيانات بدون تحديد عالقة مشتركة بين الجداول ‪ -‬يتم ربط كل صف من‬
‫صفوف الجدول االول بجميع صفوف الجدول التانى – ويحدث هذا النوع فى حالة‬
‫نسيان مطور البرامج ادارج الشرط الخاص بعملية الربط فى العبارة ‪Where‬‬
‫– عمل الربط غير المشروط بين الجداول لعرض جميع الحاالت الممكنة للربط‬
‫بين صفوف كال من الجدوليين‪.‬‬
‫‪ -2‬يحدث النوع التانى من االرتباط عند الربط بين الجداول الستخالص البيانات‬
‫المتطابقة فى كال من الجدوليين‪.‬‬

‫‪91‬‬
‫‪ -3‬يحدث النوع الثالث من االرتباط عند عرض بيانات جدول بالكامل بغض النظر‬
‫عن عدم وجود صفوف متطابقة معه فى الجدول االخر المرتبط به‪.‬‬
‫‪ -4‬ناتج هذا االرتباط عبارة عن مجموعة الصفوف المتطابقة فى كال الجدولين‬
‫باالضافة الى مجموعة الصفوف الغير متطابقة فى اى من الجدولين او فى‬
‫الجدولين معاً‪.‬‬
‫‪ ‬الربط البسيط ‪:‬‬

‫‪ -‬الفكره هنا هو ان كل سجل فى الجدول االول يتم تكراره مع سجالت الجدول الثانى كله مما يعنى‬
‫تكرار البيانات بشكل كبير‪.‬‬
‫‪ ‬الربط بالتساوى‬

‫‪ -‬والفكره هنا انه يتم عرض السجالت المتساويه فى حقل ما فى كال الجدولين‬
‫مثال ‪:‬‬

‫‪ -‬والفكره هنا اننا نقوم بالربط بدالله تساوى حقلين فى كال الجدولين مما يعنى ان القيم الغير‬
‫موجوده فى احد الجدولين ال يتم النظر اليه‬
‫‪91‬‬
‫الربط بين ثالث جداول‬

‫وصيغتين اخرين ‪:‬‬

‫‪92‬‬
‫‪ ‬الربط الخارجى‬

‫‪ -1‬النو االول ‪Left‬‬

‫مثال ‪:‬‬

‫‪93‬‬
‫‪ -4‬النو الثانى ‪Right‬‬

‫مثال ‪:‬‬

‫‪94‬‬
‫‪ -3‬النو الثالث ‪:FULL‬‬

‫مثال‬

‫‪95‬‬
‫الفصل السابع ‪ :‬االستعالمات )‪(Views‬‬
‫‪ ‬انشاء استعالم جديد ‪:‬‬
‫اما الضغط كليك على زر ‪New Query‬‬ ‫اما كليك يمين على كلمة ‪Views‬‬

‫‪ ‬المتغيرات ‪: Variable‬‬
‫‪ -‬فكره المتغيرات اننا نقوم باستخدام ذاكره الكمبيوتر ‪ RAM‬بتخزين بيانات بداخلها واستدعائها‬
‫وقت الحاجه طول مده عمل البرنامج‬
‫‪ -‬يستخدم االمر ‪ Print‬او ‪ Select‬للطباعة الناتج ‪:‬‬
‫‪ ‬لالعالن عن متغير‬
‫;‪declare @x as int‬‬

‫;‪declare @y int‬‬

‫اوال البد من استخدام الكلمه ‪ Declare‬يتبعها اسم المتغير ولكن يجب وضع عالمه @ فبل‬ ‫‪‬‬
‫اسم المتغير‬
‫اما كلمه ‪ as‬هى اختياريه يجوز وضعها ويجوز ال‬ ‫‪‬‬
‫ثم اخر شئ وهو نوع المتغير وكما هو واضح ان النوع ‪ Int‬يعنى ان المتغير رقمى‬ ‫‪‬‬
‫المتغيرات غير حساسه لحاله االحرف‬ ‫‪‬‬

‫;‪set @x=10‬‬

‫;‪print @x‬‬

‫;‪set @y =20‬‬

‫;‪Select @y‬‬

‫‪ ‬وتلك هى طريقه اعطاء القيم للمتغيرات فهى تبدا بوضع كلمه ‪ Set‬يتبعها اسم المتغير يتبعها‬
‫عالمه اليساوى والقيمه او استخدام صيغة خاصة من الجملة ‪ Select‬والناتج هو ‪ 11‬و ‪21‬‬
‫على التوالى‪.‬‬
‫‪96‬‬
‫االمر ‪ goto‬و ‪ Break‬و ‪ Continue‬و‪: Return‬‬ ‫‪‬‬
‫‪ : Break‬تعمل على ايقاف تنفيذ الجمل الموجود بالقالب واالنتقال لبدء تنفيذ الجمل التى تلى هذا القالب‬ ‫‪‬‬
‫مباشرة‪.‬‬
‫‪ : Continue‬تعمل على ايقاف التنفيذ الحالى للجمل الموجودة بالقالب وبدء تنفيذ القالب من البداية‪.‬‬ ‫‪‬‬
‫‪ : Return‬تعمل على انهاء تنفيذ الـ ‪ Batch‬واالنتقال الى تنفيذ اول جملة بعد نهاية الـ ‪Batch‬‬ ‫‪‬‬
‫‪ : Goto‬تستخدم للقفذ الى موضع معين داخل الكود يتم تحديده عن طريق انشاء عنوان فى الموضع الذى‬ ‫‪‬‬
‫نريد القفز له‪.‬‬
‫واالن نقوم بعرض دواره على زياده المتغير ‪ @x‬بقيمه واحد واعاده الى نقطه بدء الزياده الى ماال نهايه‬ ‫‪‬‬
‫فيكون الكود كما يلى الناتج هو بدء العد من واحد الى ماالنهايه‬
‫;‪declare @x as int=10‬‬

‫‪L:‬‬

‫;‪set @x=@x+1‬‬

‫;‪print @x‬‬

‫‪goto L‬‬

‫االمر الشرط ‪:IF‬‬ ‫‪‬‬


‫اوال فى قاعده ‪ If‬هنا انها التتبع ب ‪ Then‬ثانيا ليس هنا ‪End If‬‬ ‫‪‬‬
‫ثالثا ‪ -‬لو تحقق الشرط يطبع السطر الخاص به وما بعد ‪ Else‬هو طريق عدم تحقق الشرط فاليطبع ولكن‬ ‫‪‬‬
‫لسطر واحد فقط ومابعد السطر االول ياخذ على انه خارج البلوك ‪ If‬النه اليجوز وضع اكثر من سطر برمجى‬
‫واحد فى داخل ‪If‬‬
‫فى الواقع يحدث خطا واليمكن تنفيذ ذلك االمر البرمجى وللخروج من تلك‬ ‫مشكله ماذا لو تحقق الشرط‬ ‫‪‬‬

‫المشكله واستخدام اكثر من سطر برمجى حال تحقق الشرط او حتى عدم تحقق الشرط يكون كما يلى ‪:‬‬
‫‪ ‬البد لتعداد االوامر البرمجيه داخل جمله ‪ If‬البد من‬
‫‪ ‬استخدام البلوك ‪Begin - End‬‬

‫‪97‬‬
‫‪ ‬الدوال ‪: Functions‬‬
‫‪ ‬اول االمر اعلنا عن متغيرات ثم اعطاء قيم لتلك المتغيرات بشكل يساعدنا على التحويل النصى الى عددى‬
‫وعددى الى نصى ‪:‬‬
‫‪declare @MyVal decimal(5,2),‬‬

‫‪@S varchar(10),‬‬

‫‪@H decimal(5,2),‬‬

‫‪@J varchar(10),‬‬

‫; ‪@k int‬‬

‫‪-----------------------------‬‬

‫;‪set @H=193.47‬‬

‫;'‪set @S ='10.712‬‬

‫;'‪set @J='Ahmed‬‬

‫;‪set @k =-10‬‬

‫‪-----------------------------‬‬

‫;)‪print convert(varchar(10),@H‬‬

‫;)‪print convert(decimal(5,2),@S‬‬

‫‪-----------------------------‬‬

‫‪ ‬الداله ‪ abs‬اليجاد القمة المطلقة يعنى تقوم بالتحويل من سالب الى موجب ان وجد السالب ‪:‬‬
‫;)‪print abs (@K‬‬

‫‪-----------------------------‬‬

‫‪ ‬هنا استخدمنا دوال الطول الخاص بالمتغير وتحويل االحرف الى كابتل واسمول والداله ‪ STR‬تقوم بالتقريب‬
‫والتحويل للنص ‪:‬‬
‫;)‪print len(@J‬‬

‫;)‪print Upper(@J‬‬

‫;)‪print Lower(@J‬‬

‫;)‪print str(@H‬‬

‫‪-----------------------------‬‬

‫‪ ‬الدوال هنا للحصول على عدد احرف من اليمين ومره من اليسار ومره تبديل النص‬
‫;)‪print Left(@J,3‬‬

‫;)‪print Right(@J,3‬‬

‫;)‪print SubString(@J,2,3‬‬

‫;)'‪print Replace(@J,'A','AA‬‬

‫‪-----------------------------‬‬

‫‪98‬‬
‫‪ ‬هنا حصلنا على الحرف المقابل للرقم ‪ 65‬واالسكى المقابل للحرف ‪ a‬ولكن انتبه الحرف كابتل‬
‫له اسكى غير اسمول‬
‫;)‪print Char(65‬‬

‫;)'‪print Ascii('a‬‬

‫‪-----------------------------‬‬

‫‪ ‬تلك دوال التاريخ المختلف بعمل زياده بمقدار اليوم ‪ /‬السنه ‪ /‬االسابيع ‪ --‬الخ وان اردنا النقصان‬
‫نقوم بوضع عالمه السالب مع الرقم المراد‬

‫‪ ‬الدوال التوابع ‪:‬‬


‫داله ‪ Distinct‬تستخدم لتجنيب القيم المكررة فى لحقل قبل تطبيق دالة التجميع‪.‬‬ ‫‪-‬‬
‫داله ‪ Min/Max‬تستخدم هذه الدوال اليجاد اقل واعلى قيمة فى الحقل على التوالى‪.‬‬ ‫‪-‬‬
‫داله ‪ Sum‬تستخدم اليجاد مجموع القيم الموجودة بالحقل ويجب ان يكون هذا الحقل من نوع‬ ‫‪-‬‬
‫الرقمى‪.‬‬
‫داله ‪ AVG‬تستخدم اليجاد متوسط القيم الموجودة بالحقل ويجب ان يكون هذا الحقل من نوع‬ ‫‪-‬‬
‫الرقمى‪.‬‬
‫;‪select avg(salary) from employees‬‬

‫;‪select avg(distinct(salary)) from employees‬‬

‫;‪select sum(salary) from employees‬‬

‫;‪select max(salary) from employees‬‬

‫;‪select min(salary) from employees‬‬

‫;‪select count(salary) from employees‬‬

‫;‪select count(*) from employees‬‬

‫‪-----------------------------‬‬

‫‪99‬‬
‫‪ ‬الدوال التقريب لالصغر ولالكبر و حسب ما تريد والتحويل ‪:‬‬
‫;)‪print Floor(@H‬‬

‫;)‪print Ceiling(@H‬‬

‫;)‪print Round(@H,1‬‬

‫;)‪print Sin(@H‬‬

‫‪ ‬بعض الدوال داخل السيكوال وطريقه استخدامها ‪:‬‬

‫‪111‬‬
‫‪ ‬التعامل مع ‪: with Encryption‬‬
‫‪ ‬هنا كلمه ‪ Alter‬تم تعديل بعد ان كانت ‪ Create‬فعند انشاء الداله اول مره نستخدم كريت‬
‫وان ردنا التعديل نستخدم التر ‪ -‬كود التنفيذ كما واضح ولكن قبل الطباعه البد من تحديد نوع‬
‫االسكيما ‪ -‬وان اردنا عمل تشفير الداله بحيت اليرها احد نستخدم كلمه ‪with Encryption‬‬
‫ولكن انتبه كل االنتباه انك فى حاله تنفيذ الكود بالتشفير فالبد من نسخ كود الداله فى فيل‬
‫تكست مثال الننا اليمكن فتحه نهائيا‪.‬‬

‫كود التنفيذ‬

‫‪111‬‬
‫اذا اردنا تعديل الكود بعد عمل التشفير سوف يرفض تعديل باحدى الطريقتين ‪:‬‬

‫فتظهر هذة النتيجة ‪:‬‬

‫‪112‬‬
‫‪ ‬التعامل مع ‪:GUID‬‬
‫‪ ‬لدينا مايعرف بالترقيم الدولى وهو عباره عن رقم او حرف مكون من ‪ 32‬حرف ورقم وال يتم‬
‫تكرارهم نهائيا ولعمل ذلك من داخل السيكوال وتوليد رقم جديد‬

‫ولعمل جدول استعالم نقوم بتسجيل ارقام ‪ GUID‬بداخله‬

‫فتظهر هذة النتيجة ‪:‬‬

‫للتعديل الكود الخاص باالستعالم من خالل طريقتين ‪:‬‬

‫‪113‬‬
‫مع استخدام ‪:with Encryption‬‬

‫يتم غلق التعديل فى الكود وعدم رؤية التصميم‬

‫‪114‬‬
‫ولتخزين النتيجه فى متغير ‪:‬‬

‫واستغالل الدوال كداله ‪Replace‬‬

‫‪115‬‬
‫‪ ‬التعامل مع ‪: Error‬‬
‫مثال ‪:‬‬
‫‪print 100/0‬‬

‫‪print @@Error‬‬

‫اذا اردنا عمل ناتج قسمه ولكن بفرض اننا قمنا بالقسمه على صفر سيعطى لنا خطا ولكل خطا‬
‫مجموعه من البيانات مثل رقم الخطا ومن الممكن رصد تلك البيانات وتكون نتيجه الكود‬

‫ومن الممكن عمل كاتش لذلك الرقم ‪:‬‬

‫ومثال اخر ‪:‬‬

‫‪116‬‬
‫شرح ‪: Raiseerror‬‬
‫تستخدم لتوليد رسائل خطأ مخصصة ‪ User-defined error message‬وتعيين قيمة‬ ‫‪-‬‬
‫للمتغير ‪. System error flag‬‬
‫الرقم الخاص برسائل الخطأ المخصصة يجب ان يكون أكبر من ‪.5111‬‬ ‫‪-‬‬
‫االرقام اقل من او تساوى ‪ 5111‬تم تعريفها وحجزها بواسطة نظام قاعدة البيانات‬ ‫‪-‬‬
‫‪.Database Engine‬‬
‫يتم حفظ قيم الخطأ فى متغير عام له االسم ‪. @@ERROR‬‬ ‫‪-‬‬
‫وسوف نرى كيف نشئ ‪ Raiseerror‬من خالل هذا الكود وكيفية حذفه و استدعاءه‪:‬‬ ‫‪-‬‬

‫‪: While Loop ‬‬


‫هى تنفيذ مجموعة اوامر متكررة على سبيل مثال نجعل متغير يبدأ من الصفر حتى ‪5‬‬

‫‪117‬‬
‫‪: Virtual Column ‬‬
‫سنقوم بعمل استعالم من جدول ولكن يوجد عمود زياده تتم اضافته ليس اساسا موجود فى الجدول‬
‫المستعلم منه مثل ضرب عمود الكميه فى عمود السعر ووضعه فى عمود جديد اقصد عمود ليس له‬
‫اى اساس من الوجود وسوف يكون العمود باى اسم واعطى له قيمه ثابته او القيم متغيره‪.‬‬

‫‪118‬‬
‫الفصل الثامن ‪ :‬جداول االستعالم‬
‫‪ ‬انشاء جدول االستعالم‪:‬‬
‫‪ ‬انشاء جدول االستعالم عن طريق الوزرد‪:‬‬
‫نحدد الجداول التى سنجلب منها البيانات ثم‬ ‫من قاعدة البيانات نقف على ‪New View‬‬
‫نضعط على ‪Add‬‬

‫من الشكل التالى يمكن تحديد الحقول التى نريد اضافتها لكى تعرض من خالل وضع عالمة صح‬ ‫‪‬‬
‫فى المربع وذلك بالضغط على الحقل‪.‬‬
‫وبعد اضافة الحقل نستطيع تسمية الحقول من خالل ‪ Alias‬ورؤية الجدول اللى به اسم الحقل‬ ‫‪‬‬
‫ومن خالل ‪ Output‬نظهر الحقول ونختار نوع وطريقة ترتيبها ‪ Sort‬ونستطيع اظهار نوع‬
‫معين من البيانات من خالل وضع شرط فى ‪. Filter‬‬
‫وكل مايفعل من ما سبق هيظهر فى جملة ‪ SQL‬ويمكننا ان نقوم بالتعديل عليها‪.‬‬ ‫‪‬‬
‫فنقوم بحفظه فيظهر كما يلى ‪:‬‬ ‫‪‬‬

‫‪119‬‬
‫‪ ‬انشاء جدول االستعالم عن طريق الكود‪:‬‬
‫‪ ‬حدد جدول المستوى والقيمة واسم المستخدم من جدول بيانات الطالب والحركة لما المستخدم‬
‫يساوى ‪ dkahmed01‬وحقل ‪ St_ID‬يساوى ‪.Act_UID‬‬

‫‪ ‬لقد قمنا بإنشاء استعالم ولكن ليظهر ككائن البد من كتابة ‪Create view MyQuery as :‬‬
‫قبل االمر ‪ Select‬على سبيل المثال ‪:‬‬

‫‪ ‬وفى قمنا بتشغيل النشاء االستعالم مرة اخر هتظهر رسالة خطأ تفيد انه موجود ‪:‬‬

‫‪111‬‬
‫‪ ‬كيف اتحقق من وجود هذا الكائن قبل انشاء من خالل ‪ Object_ID‬الخاص بالجدول االستعالم‬
‫فلو له رقم هذا معناه انه موجود ولكن فى حالة عدم وجود هذا االوبجكت حتكون القيمة العائدة‬
‫من ‪ Object_ID‬قيمتها ‪.Null‬‬

‫‪ ‬احنا نقدر ننشئ جدول استعالم ولكن على شرط ثابت ولكن نريد انشاء جدول االستعالم على‬
‫شرط متغير فكنا فى المستويات السابقة نقوم فى كل بحذف جدول االستعالم وانشائه على الشرط‬
‫الجديد وهذا ما سنفعله‪:‬‬
‫‪ ‬كيف اتحقق من وجود هذا الكائن قبل انشاء من خالل ‪ Object_ID‬الخاص بالجدول االستعالم‬
‫فلو له رقم هذا معناه انه موجود ولكن فى حالة عدم وجود هذا االوبجكت حتكون القيمة العائدة‬
‫من ‪ Object_ID‬قيمتها ‪.Null‬‬
‫‪if object_ID( 'NewQuery') is not null‬‬

‫‪drop view NewQuery‬‬

‫‪go‬‬

‫‪create view NewQuery‬‬

‫‪as‬‬

‫‪select dbo.Sutd_Info.RealName ,dbo.Move.[ID STUD] ,dbo.Move .M1‬‬

‫‪from dbo.Sutd_Info ,dbo.Move‬‬

‫‪where dbo.Move.[ID STUD]=1 and dbo.Sutd_Info.[ID Stud] =dbo.Move.[ID‬‬


‫]‪STUD‬‬

‫‪111‬‬
‫‪ ‬انشاء جدول االستعالم أخرى ‪:‬‬
‫‪Temporary Table ‬‬
‫‪ ‬اما عن اهميه ذلك الموضوع فهو هام جدا فى حاله تعدد المستخدمين على الداتا بيز والجدول‬
‫المؤقت‬
‫‪ ‬ينتهى باغالق السيرفر او عمل ريستارت ويتم حذف هذا الجدول تلقائيا بمجرد عمل خروج‬
‫للمستخدم الحالى الذى قام بإنشاءه‪.‬‬
‫‪ ‬يتم حفظ هذا النوع من الجداول فى قاعد البيانات ‪. Tempdb‬‬
‫‪ ‬مرئى للمستخدم الحالى فقط واليتم رؤيته من قبل المستخدمين االخرين المتصلين بنفس الخادم‪.‬‬

‫‪ ‬ان اردنا انشاء جدول فيكون الكود كما يلى‬

‫))‪create table Temp (IDs int,Sname Nvarchar(50‬‬

‫‪ ‬ولكننا ان اردنا انشاء جدول مؤقت فى الذاكره الفرق فقط هو اننا نقوم نقوم بوضع عالمه ‪ #‬قبل‬
‫اسم الجدول‬

‫))‪create table #Temp (IDs int,Sname Nvarchar(50‬‬

‫‪112‬‬
‫‪Variable Table ‬‬
‫‪ ‬من المعروف انه اثناء االعالن عن المتغيرات البد من تحديد الداتا تيب الخاص بنوع المتغير‬
‫‪ ‬يوجد الداتا تيب متغير نوعه جدول وهو كما يلى‬

‫فتكون الناتج هو‬

‫‪113‬‬
‫‪ ‬دمج البيانات من استعالمين ‪:‬‬
‫‪ ‬اذا اردنا دمج استعالم مع اخر يلحقه فى نفس الجدول‬

‫‪ ‬فهذا الموضوع يتم باحدى الطرق من ثالث‬

‫‪ ‬اوال – ‪: Union‬‬
‫‪ ‬ياتى بكل الصفوف فى كال الجدوليين اهم نقطه هو ان يكون عدد االعمده واحده ونفس نوع الداتا‬
‫تيب على التوالى‬
‫‪ ‬واذا كان يوجد تكرار فى السجل يعرض واحد منه فقط‬

‫‪114‬‬
‫‪ ‬فهذا ناتج االستعالمين قبل ضمهم فى استعالم واحد ‪:‬‬

‫‪ ‬فهذا ناتج االستعالمين بعد ضمهم فى استعالم واحد ‪:‬‬

‫‪ ‬ثانيا – ‪Intersect‬‬
‫‪ ‬ياتى بكل الصفوف فى كال الجدوليين اهم نقطه هو ان يكون عدد االعمده واحده ونفس نوع الداتا‬
‫تيب على التوالى‬
‫‪ ‬بيعرض سجالت الخاصة الشرط االول فاذا وجد لها سجالت فى الشرط التانى يعرضها فى الشرط‬
‫التانى‪.‬‬

‫‪115‬‬
‫‪ ‬فهذا ناتج االستعالمين قبل ضمهم فى استعالم واحد ‪:‬‬

‫‪ ‬فهذا ناتج االستعالمين بعد ضمهم فى استعالم واحد ‪:‬‬

‫‪ ‬ثالثا – ‪: Except‬‬
‫‪ ‬ياتى بكل الصفوف فى كال الجدوليين اهم نقطه هو ان يكون عدد االعمده واحده ونفس نوع الداتا‬
‫تيب على التوالى‬
‫‪ ‬بيعرض سجالت الخاصة باستعالم االول لما يكون غير موجودة باالستعالم التانى ‪.‬‬

‫‪116‬‬
‫‪ ‬لدينا جدولين نريد هنا الحصول على الصفوف اللى نوع الفيلم يساوى اكشن وغير موجوده فى‬
‫الجدول الثانى بفرض ان الجدول الثانى خاص باالفالم التى تم ايجارها لمعرفه االفالم التى يجب‬
‫ايجارها من نوع اكشن‬
‫‪ ‬فهذا ناتج االستعالمين قبل ضمهم فى استعالم واحد ‪:‬‬

‫‪ ‬فهذا ناتج االستعالمين بعد ضمهم فى استعالم واحد ‪:‬‬

‫‪117‬‬
‫‪ ‬شرح جمل ‪:SQL‬‬
‫‪ ‬الجملة ‪: Select‬‬
‫‪ ‬هى عبارة عن عملية طلب للمعلومات من جداول قواعد البيانات (تسمح لنا باستعادة البيانات من‬
‫الجدول او عدة جداول – ناتج الجملة عبارة عن جدول اخر يطلق عليه االسم ‪– Result set‬‬
‫تتضمن العناصر او الحقول التى نريد استعراض بياناتها باالضافة للعبارة ‪)From‬‬

‫‪ ‬جملة اخرى‬

‫‪ ‬نفس الناتج كل من جملتين السابقين هو ‪:‬‬

‫‪ ‬استخدام ‪ AS‬لتغير اسم الحقل ‪:‬‬

‫‪118‬‬
‫‪ ‬جملة ‪ Select‬مع المتغيرات ‪:‬‬

‫استخدام ‪ Distinct‬لمنع تكرار داخل حقل معين‪:‬‬ ‫‪‬‬

‫‪ ‬استخدام ‪ Where‬لتحديد شرط او عدة شروط يتم على اساسها اختيار صفوف معينة من‬
‫الجداول‪.‬‬

‫‪ ‬المعامالت المنطقية و ‪( Where‬يمكن ان تتضمن اى عدد من المعامالت من النفس النوع‬


‫او من انواع مختلفة – يجب الوضع فى اسبقية تنفي هذة المعامالت حتى يمكننا الحصول‬
‫على النتائج بشكل صحيح – يأخذ المعامل ‪ NOT‬أعلى اسبقية تنفيذ يليه المعامل ‪ AND‬ثم‬
‫المعامل ‪ )OR‬وباستخدام االقواس يمكننا تعديل اسبقية التنفيذ‪.‬‬

‫‪119‬‬
‫‪ ‬استخدام ‪ Top N‬تمثل ‪ N‬عدد السجالت و‪ Top‬اول سجالت بالجدول‪:‬‬
‫‪ ‬المعامل ‪ : Order by‬تستخدم الجراء عملية الترتيب فى العمود المستخدم وعند ترتيب احد‬
‫االعمدة التى تحتوى على القيم ‪ Null‬فان هذه القيم تظهر فى اعلى الجدول عند ترتيب البيانات‬
‫تصاعديا ً وتظهر اسفل الجدول عند ترتيب البيانات تنازلياً‪.‬‬

‫‪ ‬معامل ‪ Between‬يعمل هذا المعامل على مقارنة قيمة بمجموعة القيم التى يتم تحديدها‬
‫كمعطى لهذا المعامل بحيث يقوم باسترجاع الصفوف التى تتطابق قيمها مع قيم هذه‬
‫المجموعة فقط‪.‬‬

‫‪ ‬القيم ‪ IS Null‬تعبر عن قيم خاصة وهى قيم غير معروفة ‪ -‬ويتم التعامل مع هذه القيم بطريقة‬
‫عن باقى القيم فى قاعدة البيانات – عند استخدام العبارة ‪ Where‬للبحث عن سجالت معينة‬
‫فانه يتم استرجاع السجل او الصف اذا كان ناتج الجملة الشرطية ‪ – True‬عند اجراء عمليات‬
‫المقارنة مع القيم ‪ Null‬فان ناتج الجملة الشرطية فى هذة الحالة يكون دائما ‪ – False‬والبد‬
‫من وجود طريقة تسمح لنا باسترجاع القيم ‪ Null‬من الجداول‪.‬‬
‫‪ ‬المعامل ‪( Like‬عالمة ‪ %‬التعبير عن اى عدد من االحرف) – (عالمة _ التعبير عن حرف‬
‫واحد فقط) – (عالمة ] ‪ [ -‬التعبير عن مجموعة حروف اللى بتقع بين حرفين) – (عالمة‬
‫] ^[ التعبير عن مجموعة حروف التى ال تقع بين حرفين)‪.‬‬

‫‪ ‬المعامل ‪ Group By‬تستخدم العبارة لتقسيم ناتج االستعالم الى عدة مجموعات بناءاً على‬
‫عمود او عدة اعمدة – بمجرد تقسيم الناتج الى مجموعات يمكننا استخدام دوال التجميع‬
‫الجراء العمليات الحسابية على هذه المجموعات – اى عمود يظهر فى الجملة ‪ Select‬يجب‬
‫ان يظهر فى العبارة ‪ – Group By‬تستخدم لعمل تجميع للبيانات التى تم نفصيتها باستخدام‬
‫العبارة ‪. Where‬‬

‫‪ ‬المعامل ‪ Having‬تعمل على تعريف شرط يتم تطبيقه على البيانات المجمعه ‪Group By‬‬
‫وتعمل نفس عمل العبارة ‪ Where‬ولكن مع البيانات المجمعه ‪ – Group By‬واليشترط‬
‫استخدام دوال التجميع فى الشرط الخاص بالعبارة ‪ – Having‬تستخدم لعمل تصفية للبيانات‬
‫المجمعة باستخدام العبارة ‪ – Group By‬يفضل عدم استخدام ‪ Having‬اال فى الحاالت‬
‫الفعلية التى تحتاج الى عمل تصفية للبيانات بعد اجراء عملية التجميع‪.‬‬

‫‪121‬‬
‫‪ ‬الجملة ‪:Insert Into‬‬
‫‪ ‬يجب ان يقوم االجراء باضافة بيانات الى الجدول حسب ترتيب االعمدة فى الجدول وفى هذة‬
‫الحالة هيجب علينا ادخال قيم لجميع حقول الجدول وفى حالة ادخال بعض الحقول الجدول فيجب‬
‫علينا تحديد اسماء الحقول التى نريد اضافة القيم لها ‪ -‬ويجب ان تتوافق البيانات التى يتم اضافتها‬
‫فى الجداول مع انواع البيانات للحقول الخاصة بهذا الجدول بمعنى يجب وضع القيم الحرفية بين‬
‫عالمتى ‪ Single Quotation‬وعدم وضعها بين القيم الرقمية‬
‫‪ ‬يجب تعيين قيمة للحقول وفى حالة عدم تعيين قيمة للحقل فانه يتم تعيين القيمة ‪ Null‬للحقل وفى‬
‫هذه الحالة عدم السماح بحفظ القيم ‪ Null‬واليتم تنفيذ الجملة ‪ insert‬وتظهر رسالة خطأ ولذلك‬
‫البد ان تحتوى على قيمة افتراضية ولتعيين القيمة ‪ Null‬الى من اعمدة الجدول يجب التاكد من‬
‫ان هذا العمود يقبل القيمة ‪. Null‬‬
‫‪ ‬صيغة جملة‬

‫‪ ‬صيغة اخرى جملة‬

‫‪ ‬الجملة ‪:Update‬‬
‫‪ ‬فى حالة اهمال العبارة ‪ where‬تعمل الجملة ‪ Update‬على تعديل جميع قيم الحقل المحدد‬
‫بالعبارة ‪ – Set‬وتستخدم لتعديل الجملة ‪ Update‬لتعديل بيانات جدول واحد فقط – يتم كتابة‬
‫اسماء الجداول المستخدمة فى الجملة ‪ Update‬فى العبارة ‪ From‬ويجب ان تكون هذة الجداول‬
‫مرتبطة مع بعضها البعض‪.‬‬

‫‪ ‬الجملة ‪:Delete‬‬
‫‪ ‬النحتاج لتحديد اسماء اعمدة الجداول فى الجملة ‪ Delete‬حيث تعمل الجملة على الصفوف‬
‫وليس على االعمدة ‪ -‬فى حالة اهمال العبارة ‪ where‬تعمل الجملة ‪ Delete‬على حذف جميع‬
‫السجالت‪.‬‬
‫‪ ‬تعمل ‪ Delete‬على حذف بيانات الجدول مع المحافظة على البناء ‪ Structure‬الخاص بالجدول‬
‫يظل الجدول موجود بقاعدة البيانات ولكن ال يحتوى على اى سجل – تعمل ‪ Drop‬على حذف‬
‫بيانات الجدول والبناء ‪ Structure‬الخاص بهذا الجدول واليصبح للجدول اى وجود فى قاعدة‬
‫البيانات‪.‬‬

‫‪121‬‬
‫‪ ‬االستعالمات الفرعية ‪: SubQueries‬‬
‫‪ ‬هى عبارة عن استعالم داخل استعالم اخر‪.‬‬
‫‪ ‬يتم استخدام ناتج االستعالم الداخلى كمعطيات لالستعالم الخارجى وبالتالى يتم تنفيذ االستعالم‬
‫الداخلى اوالً‪.‬‬
‫‪ ‬يتم تكوين االستعالمات الفرعية عن طريق استخدام جملة ‪ Select‬او اكثر فى العبارة‬
‫‪ Where‬لجملة ‪ Select‬اخرى‪.‬‬
‫‪ ‬يمكن استخدام االستعالمات الفرعية مع الجمل ‪ Delete‬و ‪ Insert‬و ‪.Update‬‬
‫‪ ‬يتم حساب االستعالم الداخلى فى كل مرة يقوم النظام باسترجاع صف جديد من االستعالم‬
‫الخارجى‪.‬‬
‫‪ ‬االستعالم الفرعى متربط باالستعالم الرئيسى ‪ :‬هى تعطى امر بدل من اسم الحقل واحد وليس‬
‫اكثر من حقل النها هتفشل واذا كان اكثر من قيمة هتفشل وده معناها ان االستعالم الفرعى‬
‫يرجع بحقل واحد او بقيمة واحدة‪.‬‬

‫نتيجة هى ‪:‬‬

‫‪ ‬االستعالم الفرعى غير متربط باالستعالم الرئيسى ‪ :‬هى تعطى امر فى الشرط‪.‬‬
‫‪ ‬فلدينا جدولين (‪ )Tickets ,Owner‬وبيانات اللى بداخلهم‪:‬‬

‫وصيغة جملة كما يلى ‪:‬‬

‫نتيجة‬

‫‪122‬‬
‫‪ ‬المعامل ‪( IN‬يقوم بتحديد شرطين او اكثر يتم على اساسها استرجاع البيانات من الجداول –‬
‫يعمل على مقارنة قيمة بمجموعة القيم التى يتم تحديدها كمعطى لهذا المعامل – يقوم‬
‫باسترجاع الصفوف التى تتطابق قيمها مع القيم هذه قيم المجموعة فقط – يمكن استخدام هذا‬
‫المعامل مع االستعالمات الفرعية فى حالة ان ناتج االستعالم الداخلى عبارة عن مجموعة من‬
‫القيم وليس قيمة واحدة فقط – االستعالم الداخلى يمكن ان يتضمن اكثر من استعالم ويتم‬
‫تنفيذ اخر استعالم فى االستعالم الداخلى ثم االستعالم السابق له وهكذا)‪.‬‬

‫ضا تقديم ‪ NOT‬على ‪ IN‬للتحقق من أن القيمة الموجودة في الصف الحالي لالستعالم‬ ‫‪ ‬يمكنك أي ً‬
‫الرئيسي ليست جز ًءا من المجموعة التي قام االستعالم الفرعي بإرجاعها‪.‬‬

‫‪ ‬المعامل ‪ Exists‬استخدمها في عبارة ‪ WHERE‬لتشير إلى أنه يجب أن يقوم االستعالم الفرعي‬
‫ضا تقديم ‪ NOT‬على ‪ EXISTS‬لتشير إلى أنه ال يجب‬ ‫بإرجاع صف واحد على األقل‪ .‬يمكنك أي ً‬
‫أن يقوم االستعالم الفرعي بإرجاع أي صفوف‪.‬‬

‫‪ ‬المعامل ‪ ALL‬يتم االستعالم عن قيمة اكبر من كل القيم الموجودة فى مجموعة القيم اى اكبر‬
‫من القيمة العظمى لمجموعة القيم – ويتم تضمين جميع القم الموجودة فى الحقل الذى يتم‬
‫تمريره كمعطى لهذه الدالة – واستخدمها في عبارة ‪ WHERE‬السترداد الصفوف التي تفي‬
‫بالشروط وذلك عند مقارنتها بكل صف يتم إرجاعه بواسطة االستعالم الفرعي‪.‬‬
‫‪ ‬الفرق بين ‪ IN‬و ‪ ALL‬فان ‪ IN‬هو بيتعامل مع االستعالم الفرعى سجل سجل باحث عن القيمة‬
‫واذا وجدها لن يستمر وينسى الباقى السجالت اما ‪ ALL‬هو بيتعامل مع االستعالم الفرعى ككل‬
‫وتستخدم فى المقارنة = ‪ < ، > ،‬ولن ينسى بقية السجل‪.‬‬

‫‪ ‬المعامل ‪ ANY‬استخدمها في عبارة ‪ WHERE‬السترداد الصفوف التي تفي بالشروط وذلك‬


‫عند مقارنتها بصف واحد على األقل من الصفوف التي يتم إرجاعها بواسطة االستعالم‬
‫الفرعي – حيث جمع المعامل ‪ ANY‬بين المعاملين هما ‪ IN‬و ‪. ALL‬‬

‫‪123‬‬
‫الفصل التاسع ‪ :‬موضوعات متنوعة متقدمة‬
‫‪ ‬االجراء ‪: Stored Procedure‬‬
‫‪ ‬هو اوبجكت يقوم بعملية معينة مكررة عند االستدعاء وقد يمرر له متغيرات اوال – ويمكن‬
‫استخدامها للمحافظة على التكامل المرجعى بين الجداول‪.‬‬
‫‪ ‬االجراء يتم حفظه كعنصر من عناصر قواعد البيانات على خادم لتحسين اداء القاعدة‪.‬‬
‫‪ ‬هناك نوعان من االجراءات ‪: Procedure‬‬
‫‪Stored procedures‬‬ ‫‪System procedures‬‬
‫‪ ‬تأتى مدمجة مع محرك قواعد البيانات‬
‫‪ ‬يتم انشائها باستخدام اللغة‬
‫‪ ‬يتم استخدامها للوصول الى وتعديل بيانات‬
‫‪Data Definition Language‬‬
‫النظام‬
‫‪ : Drop proceduce ‬يتم السماح للمستخدم الذى قام بانشاء االجراء او للمستخدمين‬
‫‪ db_owner‬و ‪ Sysadmin‬فقط بحذف هذا االجراء‪.‬‬
‫‪ :SQL injection ‬تعنى حقن كود داخل احدى الكويريات والذى يفتح ثغرة فى سكيول سيرفر‬
‫وبالتالى الوصول الى قاعدة البيانات ولحل هذة المشكلة نستخدم الــ‪Stored Procedure‬‬
‫ولزيادة االمان باستخدام فيها نوعين من المتغيرات وهما ‪ :Parameter‬تعنى نمرر قيم اثناء‬
‫التنفيذ و ‪ :local‬استخدام متغير‬
‫‪ ‬اننا هنا سوف نتحدث عن االجراءات المخزنه فى الواقع بينما يتم االتصال بالسيكوال وعمل‬
‫اى من جمل ال ‪ Insert – Delete – Update‬كل هذا يتم على الرامات الخاصه بالجهاز‬
‫بينما ان نجحنا بعمل ذلك على السيرفر سيتم توفير الكثير من مصادر النظام الخاص بى ومنها‬
‫توفير الرامات و فى السيكوال يوجد نظام االجراءات المخزنه تمكنا من عمل – ‪Insert‬‬
‫‪ Delete – Update‬على السيرفر وليس الجهاز الحالى‬
‫‪ ‬النشاء استعالم جديد ‪:‬‬

‫‪ ‬اهم نقاط ال ‪Stored Procedure‬‬


‫‪ -‬النشاءه نستخدم كلمه ‪ Create‬اما للتعديل نستخدم ‪Alter‬‬
‫‪ -‬يجب تحديد قاعده البيانات التى نقوم بانشاء البروسيدجر بداخلها‬
‫‪ -‬يتم انشاء البروسيدجر بداخل قاعده البيانات بداخل ‪Programability‬‬
‫‪ -‬بداخل ال ‪ Stored Procedure‬سنجد اسم البروسيدجر الجديد‬
‫‪ -‬لتنفيذ البروسيدجر نكتب ‪ exec‬يليها اسم البروسيدجر‬
‫‪124‬‬
‫‪ ‬ومثال على الـ ‪Stored Procedure‬‬
‫النشاء البروسيدجر ‪:‬‬
‫‪use Students‬‬
‫‪go‬‬
‫‪create procedure Pro_Stud‬‬
‫‪as‬‬
‫‪begin‬‬
‫‪select * from Move‬‬
‫‪end‬‬
‫ولتنفيذ البروسيدجر ‪:‬‬
‫‪use Students‬‬
‫‪go‬‬
‫‪exec Pro_Stud‬‬
‫‪ ‬والنتيجة‬

‫‪ ‬هنا قمنا بعمل تعديل على البروسيدجر لياخذ معامالن ( االول نوعه انتجر لنحصل على االى‬
‫دى الخاص بالحركه ‪ -‬الثانى معامل نخزن بداخله عدد السجالت )‬
‫‪ ‬وعلينا االنتباه ان نوع المتغير االخر ‪ output‬الن هنحتاج قيمته من خارج البروسيدجر‬
‫ولكن لنحصل على قيمته سيكون من داخل البروسيدجر وتكون قيمته كما يلى‬
‫‪Set @CUNT =@@ROWCOUNT‬‬
‫‪ ‬وفى جزء مرحله التنفيذ نعلن عن متغير من نفس نوع المتغير الخارجى ونقوم بالنداء على‬
‫البروسيدجر ولكن البراميتر االول هنكتب قيمه االى دى ولكن كى نحصل على المتغير االخر‬
‫نمرر له المتغير المعلن عنه سلفا مع ضروره توضيح انه ‪ output‬الن المتغير ال ‪output‬‬
‫ال يستقبل اال فى متغير ايضا من نفس نوع ال ‪ output‬وكما هو واضح الستدعاء قيمه‬
‫المتغير ال ‪ output‬نستخدم الجمله ‪Select‬‬

‫‪125‬‬
‫ من خالل البروسيدجر‬Insert ‫ ومثال على عمل جمله‬
USE [Students]
GO
ALTER procedure [dbo].[Pro_Stud](@IDStud int,@RealName NvarChar(50),
@Address NvarChar(50),@Phone int)
as
begin
Insert Into Sutd_Info([ID Stud],RealName,Address,Phone)
values(@IDStud,@RealName,@Address,@Phone)
end
---- Execute Procedure ------------
Exec [dbo].[Pro_Stud] 5,'Rocaia','Samanoud',01041254

‫ الكود التالى فيه تجربه اننا نقوم بعمل ادراج سجل ولكننا نقوم بتسجيل االى دى الخاص‬
‫بالشركه على الرغم من اننا قمنا بكتابه اسم الشركه‬

126
‫ وسنرى الحديث ببروسيدجر اخر يكون فكرته انه بينما يتم التسجيل فى جدول المشتريات يتم‬
‫كتابة اسم الصنف واسم المورد ولكن فى جدول المشتريات يتم تسجيل االى دى الخاص بهم‬
use SuperMarket
go
Alter procedure NewP (@ID int,@ItemName Nvarchar(20),@VndName Nvarchar(20),@Q
int,@Price int)
as
Begin
------------------------
Declare @X as int;
select @X=ID from Items where ITM_NAME = @ItemName;
------------------------
Declare @E as int;
select @E=ID from Vendors where VID_NAME = @VndName;
------------------------
Insert Into Purchases (ID,ITM_ID,VID_ID,Quantity,Price,Datey)
Values
(@ID ,@X, @E, @Q ,@Price ,GETDATE())

end

‫ وقت التنفيذ‬
exec NewP 2,'Sweet','Rocaia',145,13

‫ والنتيجه‬

‫ ولعمل استعالم من جدول المشتريات ولكن البد من اظهر اسم الصنف وليس الرقم والننسى‬
‫من وجود عالقه بين الجداول‬
Use SuperMarket
go

select Purchases.ID ,Items.ITM_NAME ,Purchases.Quantity,Purchases.Price


from Purchases ,Items
where
VID_ID =4 and Purchases.ITM_ID =Items.ID

‫ والنتيجه‬
127
‫فهنا االى دى هنا خاص بالحركه فى جدول المشتريات وليس اى دى الصنف واسم الصنف‬ ‫‪‬‬
‫حصلنا عليه بدالله االى دى فى السطر االخير من االستعالم ومن فلتره االستعالم انه بدالله‬
‫رقم المورد لما يساوى ‪4‬‬
‫‪Purchases.ITM_ID =Items.ID‬‬
‫‪ ‬مثال على عمل اجراء فى سيكول ونداء على االجراء من خارج السيرفر عن طريق برنامج‬
‫فيجوال بيسيك ‪6‬‬
‫النشاء البروسيدجر‬

‫النداء على اسم البروسيدجر وبعدها ندخل القيم‬

‫‪ SP ‬ده اختصار لكلمة ‪ Stored Procedure‬حيث ان بالسيكول بها مجموعة من االجراءات‬


‫المخزنة ومن ضمنها ‪ SP_help‬عشان تاتى بمواصفات الجدول ‪:‬‬
‫النتيجة‬ ‫االجراء‬

‫‪ ‬المطلقات ‪: Triggers‬‬

‫‪128‬‬
‫‪ ‬تعريف ‪: Triggers‬‬

‫‪ ‬هو مثل حدث زر ‪ Button‬وهى زى ‪ Stored procedure‬ولكن مختلفة فى انها ال ينفع‬

‫تنفيذها يدوى او انك تنادى عليها فهى بتعمل عملية مراقبة لجدول وعندما يحدث بداخلها‬

‫اضافة او تعديل او حذف يقوم بعمل تنفيذه اوتوماتيك‪.‬‬

‫‪ ‬من الممكن اسخدامها على سبيل المثال على برنامج خاص بى حيث اننى اعمل مراقبة على‬

‫المستخدمين وماذا قاموا عمله بقاعدة البيانات‪.‬‬

‫‪ ‬الصيغة العامة لكتابة الكود ‪: Triggers‬‬

‫‪ ‬كود لتفعيل و وقف تفعيل ‪ Triggers‬وحذفه‬

‫‪ ‬تستخدم ‪ Create Triggers‬النشاء المطلق اما لتعديله ‪ Alter Trigger‬وملحوظه عند‬

‫التعديل المطلق حيث ياخذ جميع العبارات والخيارات الخاصة بهذه الجملة مطابقة لعبارات‬

‫وخيارات االنشاء وتاخذ نفس اسمائها‪.‬‬

‫‪129‬‬
‫‪ ‬انواعها ‪: Triggers‬‬

‫‪: CRL Triggers ‬‬


‫‪ ‬هى تكتب داخل اللغات ‪ RunTime‬مثل الفيجوال وسى شارب ويتم حفظها على شكل مكتبة‬
‫ثم نقول عمل ‪ Triggers‬ينفذ االكواد بداخلها وهى مسموح بها سيكول سيرفر ‪2118‬‬
‫وتستطيع استخدام االكواد ‪ DML‬و ‪ DDL‬المعتمدة على المكتبة المكتوبة‪.‬‬
‫‪: DDL Triggers ‬‬
‫‪ ‬هى تعمل عندما يحدث حدث او فعل على اى مستوى حيث انها تقسم الى مستويان (مستوى‬
‫يعمل على مستوى السيرفر مثل انشاء ‪ Login‬او تعديل او حذف ومستوى يعمل على مستوى‬
‫قاعدة البيانات مثل انشاء وحذف وتعديل جدول)‬
‫‪ ‬الصيغة العامة النشاء وحذف وتفعيل والغاء التفعيل‪:‬‬
‫على مستوى السيرفر‬ ‫على مستوى قاعدة البيانات‬

‫‪131‬‬
‫‪: DML Triggers ‬‬
‫‪ ‬الصيغة العامة وكود انشاء من هذه النوع ‪:‬‬

‫‪ ‬الفرق بين كتابة ‪ After‬و ‪: INSTEAD OF‬‬


‫‪INSTEAD OF‬‬ ‫‪After‬‬
‫يتم بدء تشغيل المطلق بدال من الفعل اى تعمل‬ ‫تتبع النشاطات التى يتم اجرائها على الجدول او‬
‫على استبدال الفعل للمطلق‬ ‫عدة جداول فيتم بدء تشغيل المطلق بعد وقوع‬
‫يمكن انشائها على كل من الجدول والجداول‬ ‫الفعل بتطبيق قواعد معينة‬
‫التخيلية‬ ‫يمكن انشائها على الجدول االساسية فقط‬
‫يمكن تعيين المطلق عن استخدام اى من الكلمات يتم تنفيذ هذا الفعل بعد بعد انشاء الجداول‬
‫‪ Inserted‬و ‪ Deleted‬وقبل تنفيذ التكامل‬ ‫المخزنة ‪ After‬او ‪For‬‬
‫المرجعى او اى فعل اخر‬ ‫فرض التكامل المرجعى لتكون اكثر مرونة‬
‫‪ ‬االفعال التى تعمل تفعيل المطلق ‪ Insert :‬و ‪ Update‬و ‪ Delete‬ويمكننا كتابتها باى ترتيب‬
‫ويسمح محرك قاعدة البيانات بانشاء عدة مطلقات لكل جدول ولكل فعل من االفعال السابقة‬
‫ويتم السماح ايضا لمالك قاعدة البيانات ومجموعة المديرين ومالك الجدول بانشاء المطلقات‬
‫فى قاعدة البيانات الحالية‪.‬‬
‫‪ ‬استخدام الجداول ‪ Inserted‬و ‪: Deleted‬‬
‫‪ ‬البناء الخاص بهذة الجداول هو نفس البناء الخاص بالجدول المعرف عليه هذا المطلق‪.‬‬
‫‪ ‬فى كل مرة يتم تنفيذ اى من جملتين ‪ Inserted‬و ‪ Deleted‬بالمطلق يتم انشاء الجدول‬
‫‪ Inserted‬و ‪.Deleted‬‬
‫‪ ‬الجملة ‪ Update‬فيم معالجتها مثل الجملة ‪ Deleted‬يليها الجملة ‪.Inserted‬‬
‫فى كل مرة يتم تنفيذ الجملة ‪ Update‬فى المطلق يتم انشاء الجداول ‪ Inserted‬يحتوى على القيمة‬
‫الجديدة للحقل و ‪ Deleted‬يحتوى على القيمة القديمة للحقل قبل التعديل ‪.‬‬
‫‪131‬‬
‫‪:Transaction ‬‬
‫‪ ‬تعريف ‪:Transaction‬‬
‫‪ ‬هو مجموعة من االدوات لنقل البيانات بشكل كامل وصحيح اى تنفيذ مجموعة احداث فى‬
‫وقت واحد بمعنى نفرض اننا نعمل فى بنك فقام شخص بتحويل حسابه مبلغ لحساب شركة‬
‫وبالتالى اننا نقوم بعملتين منفصلتين عملية نقص من رصيدى وعملية اخرى زيادة حساب‬
‫الشركة فالبرنامج قام التنفيذ السطر اللى بينقص رصيد العميل فنفرض انه حدث انقطاع‬
‫الكهرباء ولم يقم بتنفيذ السطر اللى بيزود حساب الشركة ومن ظهرت ادوات لنقل البيانات‬

‫ما هى ادوات ‪: Transaction‬‬ ‫‪‬‬


‫‪ Rollback‬هذة االداه تعمل تراجع لعملية نقل البيانات كلها ومن الممكن كمان تخلينى ارجع‬ ‫‪‬‬
‫لنقطة معينة‪.‬‬
‫‪ SavePoint‬هذة االداه تجعلنى اننى اتراجع عن نقطة معينة وليس تراجع عن نقطة العمليات‬ ‫‪‬‬
‫كلها‪.‬‬
‫‪ Commit‬هذة االداه تجعلنى اكمل نقل بقية العمليات‪.‬‬ ‫‪‬‬

‫‪ ‬الصيغة العامة للكتابة الكود ‪:‬‬

‫‪132‬‬
‫مثال ‪:‬‬

‫كتابة الكود بصيفة اخرى ‪:‬‬

‫مثال ‪:‬‬

‫‪133‬‬
‫‪ ‬سوف نقوم بانشاء اجراء ببروسيدجر وكود التنفيذ من داخل الفيجوال بيسك ‪:‬‬

‫والتنفيذ ‪:‬‬

‫‪134‬‬
‫‪: Replication ‬‬
‫‪ ‬تعريف ‪:Replication‬‬
‫‪ ‬هى تكنولوجيا لنسخ وتوزيع البيانات وقاعدة البيانات من قاعدة الى قاعدة اخرى وثم عمل‬
‫تزامن بين قواعد البيانات مع مراقبة تغييرات التى تحدث فى القاعدة االصلية‪.‬‬
‫‪ ‬هو عملية صيانة قواعد البيانات على مواقع مختلفه و توزيع التغييرات عبر كل المواقع على‬
‫اسس زمنيه مع ت طبيق عملية تناسخ البيانات يتيح احدث البيانات للمستخدم‬
‫يعتبر تناسخ البيانات فى االساس مفيداً لالعمال الضخمه و التى تحتاج لتوزيع كميه كبيره‬
‫من البيانات على العديد من المواقع او العمالء المستفيدين من هذه البيانات‬

‫البيانات‪:‬‬‫هناك العديد من المفاهيم لعملية تناسخ‬ ‫‪‬‬


‫الناشر ‪: publisher‬هى قاعدة بيانات محليه ‪ local‬او بعيده ‪ remote‬التى تمثل مرسل‬ ‫‪‬‬
‫البيانات التى يود توزيعها ‪ -‬نحن نحتاج لعملية النشر كى نقوم بنقل البيانات من الجداول و‬
‫االجراءات المخزنه إلى قاعدة بيانات العميل او ما يرمز له بال ‪sender‬‬
‫المشترك ‪ : subscriber‬هى قاعدة بيانات محليه ‪ local‬او بعيده ‪ remote‬التى تمثل‬ ‫‪‬‬
‫مستقبل هذه البيانات ‪ -‬يجب مراعاة ان تتم هذه العمليه إلى قاعدة بيانات موجوده اصال‬
‫الموزع ‪ : distributor‬هو قاعدة بيانات محليه او بعيده تمثل دور الوسيط بين المشترك و‬ ‫‪‬‬
‫الناشر حيث تعمل على تزامن ‪synchronization‬البيانات بين الناشر والمشترك‬
‫ولكن نسخة ‪ SQL Express‬ال تدعم خطوة االولى والتالتة‬ ‫‪‬‬
‫‪135‬‬
‫البيانات‪:‬‬ ‫‪ ‬انواع العمليات تناسخ‬

‫لقطة النسخ المتماثل ‪ : Snapshot‬الناشر يأخذ نسخة ‪ Snapshot‬من البيانات (قاعدة‬ ‫‪‬‬
‫بيانات منسوخة بالكامل) وينشرها الى المشترك كل الوقت وهذة الطريقة تتطلب وقت كبير‬
‫وعديد من الموارد ‪ -‬فإن معظم المسؤولين ال تستخدم النسخ المتماثل لقطة على أساس‬
‫متكرر لقواعد البيانات التي كثيرا ما تتغير‪ .‬هناك سيناريوهين حيث يتم استخدام النسخ‬
‫المتماثل لقطة شائع‪ .‬أوال‪ ،‬يتم استخدامه لقواعد البيانات التي نادرا ما تتغير‪ .‬الثانية‪ ،‬يتم‬
‫استخدامه لتحديد خط األساس إلنشاء النسخ المتماثل بين النظم حين يتم نشر التحديثات‬
‫المستقبلية باستخدام النسخ المتماثل المعامالت أو دمج‪.‬‬
‫النسخ المتماثل المعامالت ‪: Transactional‬هذا األسلوب هو أفضل من االول هناك‬ ‫‪‬‬
‫"وكيل" أنه رصد المنشور‪ ،‬وعندما يتم إرسال أية تعديالت للمشتركين‪ ،‬وهذه المحطة‬
‫يمكن أن تكون مباشرة أو على فترات منتظمة ‪ -‬يقدم حال أكثر مرونة لقواعد البيانات التي‬
‫تتغير على أساس منتظم‪ .‬مع النسخ المتماثل المعامالت‪ ،‬عامل النسخ المتماثل تراقب‬
‫الناشر إلجراء تغييرات في قاعدة البيانات وينقل تلك التغييرات إلى المشتركين‪ .‬هذا يمكن‬
‫أن يحدث انتقال على الفور أو على أساس دوري ‪ -‬وعادة ما تستخدم في سيفر لسيفر‬
‫السيناريوهات التي تتطلب إنتاجية عالية‬
‫النسخ المتماثل دمج ‪ : Merge‬يتحقق من التعديالت عند الناشر والمشترك ويحفظ جميع‬ ‫‪‬‬
‫التعديالت على كل واحد منهم ‪ -‬إذا تم فقد االتصال‪ ،‬فإنه يتحقق كافة التعديالت مرة واحدة‬
‫في عودة االتصال ‪ -‬تستخدم لتوزيع بيانات لسيرفرات مختلفة وللمستخدمين عن بعد عبر‬
‫الشبكات المحلية أو اإلنترنت‬
‫مع هذه األنواع الثالثة من التكرار‪ ،‬يوفر ‪ SQL‬سيفر نظام قوية ومرنة لمزامنة البيانات‬ ‫‪‬‬

‫‪136‬‬
‫البيانات‪:‬‬ ‫خطوات عملية تناسخ‬
‫لو دى نسخة ‪ Enterprise‬سوف تظهر ثالث حاالت اما نسخة ‪ Express‬سوف‬
‫تظهر فقط ‪Subscriptions‬‬

‫‪1‬‬

‫‪2‬‬

‫‪137‬‬
3

138
‫خطوات النشاء الناشر‬

‫‪1‬‬

‫‪2‬‬

‫‪3‬‬

‫‪139‬‬
‫االختيار االول ‪ :‬نسخة ثابتة من القاعدة‬
‫االختيار التانى ‪ :‬تعمل عملية مراقبة للقاعدة البيانات‬
‫االختيار الثالث ‪ :‬مراقبة للطرفين (اى االصلية والمنسوخة) وثم يقوم بتعديل فى‬
‫الطرفين‬
‫االختيار الرابع ‪ :‬يفعل كل ما سبق بس بطريقتين اما كلها بدفعة واحدة او التعديالت‬
‫فقط‬

‫‪4‬‬

‫‪5‬‬

‫‪141‬‬
6

141
9

11

11

142
12

13

14

143
‫المراجع‬

‫موقع ميكروسوفت‬

‫ااكدميية اجملموعة العربية للمكبيوتر‬

‫ااكدميية ىب ىس الب‬

‫الخاتمة‬

‫اهداء وشكر‬

‫ااكدميية اجملموعة للمكبيوتر عىل مس توى اذلى وصلت اليه‬

‫وخاصة ادلكتور ‪ /‬معرو موىس‬

‫واملهندس ‪ /‬امحد مسري‬

‫والعاملني ابلفرع القبة‬

‫‪144‬‬

You might also like