تكملة دروس دورة الربط بين sql server و visual studio

  دروس دورة الربط بين sql server  و visual studio باكثر من طريقه مختلفه بالتفصيل .

طبعا بالدروس السابقة وما اطول عليكم تكلمنه عن اساسيات الربط بين sql و visual studio وعرفنه عده مفاهيم منها مفهوم الوضع المتصل والمنفصل والذي نعتمد  عليهما في برمجة اي مشروع برمجي (انظمة ادارة قواعد البيانات ) ،وعرفنه ماهو الوضع المنفصل والمتصل والفرق والخصائص والمساوى بين الوضعين .

 الطرق الموجوده في الوضع المنفصل .

ان شاء الله اول شي راح نعرف الطرق ونبرمج انظمة ادارة قواعد البيانات مع visual studio في الوضع المنفصل… 

الوضع المنفصل يحتوي على طريقتين لبرمجة والاتصال  بانظمة ادارة قواعد  البيانات مع visual studio هما : 

_  طريقه كائن DataTable

_  طريقة كائن DataSet

ان شاء الله راح نبرمج اول طريقه من الوضع المنفصل هي DataTable وقبل ذلك خل نتعرف اكثر حول الفرق بين الطريقتين .

الفرق بين DataTable و DataSet والاختلاف بين الكائنين وكما يلي :-  

١ـ DataTable

هو تمثيل في الذاكرة لجدول قاعدة بيانات واحد يحتوي على مجموعة من الصفوف والأعمدة بينما DataSet

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

٢ ـ DataTables

عندما نريد جلب البيانات من قاعدة البيانات ، فإنها تتصل بشكل غير مباشر بقاعدة البيانات وإنشاء قاعدة بيانات افتراضية في النظام المحلي ثم يتم فصلها عن قاعدة البيانات. 

DataTable

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

3⃣ كائن DataTable أخف من كائن DataSet لأنه يحتوي على بيانات من جدول واحد بينما DataSet هو كائن أثقل يمكن أن يحتوي على بيانات من جداول متعددة.

4⃣ يقوم DataTable بجلب TableRow واحد فقط في كل مرة بينما يمكن لـ DataSet جلب صفوف TableRows متعددة في وقت واحد  

5⃣  نظرًا لأن DataTable هو جدول قاعدة بيانات واحد ، لذلك لا يوجد كائن DataRelation فيه بينما في DataSet ، يمكن ربط كائنات DataTable ببعضها البعض باستخدام كائنات DataRelation.

6⃣ في DataTable ، لا تتوفر كائنات قيد فريد وقيد مفتاح خارجي

ولكن في DataSet ، يتم فرض تكامل البيانات باستخدام كائنات قيد فريد وقيد مفتاح خارجي.

7⃣ في DataTable ، لا يمكن إجراء تسلسل لمصدر البيانات. ولكن DataSet عبارة عن مصدر بيانات متسلسل ، ولهذا السبب يمكن لخدمات الويب دائمًا إرجاع DataSet كنتيجة ولكن ليس DataTables.

8⃣ يمكننا تحميل جدول قاعدة بيانات واحد في DataTable ومعالجة البيانات الموجودة في الذاكرة. إذا كنا سنقوم بجلب البيانات من جدول قاعدة بيانات واحد ، فإن DataTable هو الخيار الأفضل. بينما يمكن لمجموعة DataSet من ناحية أخرى تحديد DataRelations - التي تحدد العلاقة بين DataTables ، تمامًا مثل علاقة المفتاح الخارجي التي يمكن إعدادها بين الجداول في قاعدة البيانات. مجموعات البيانات نفسها لا تحتوي على أي بيانات. تحتوي مجموعات البيانات على DataTables (حيث توجد أي بيانات بالفعل) ، DataRelations ، إلخ ، ولكن لا توجد بيانات.

9⃣ ـ Dataset عبارة عن مجموعة من الجداول ، والتي تُستخدم في الهندسة المعمارية غير المتصلة. بشكل عام لملء DataSet ، نستخدم طريقة ملء SqlDataAdapter.

ـ DataTable يمكن استخدامه لمعالجة البيانات عن بعد وتحديث قاعدة البيانات في النهاية بالبيانات المعدلة. وبهذه الطريقة ، فإنها تتيح وسائل غير متصلة للعمل مع البيانات. يؤدي ذلك إلى تحسين الأداء من حيث تقليل عدد المرات التي يتم فيها الوصول إلى قاعدة البيانات من أجل معالجة البيانات.

طريقه برمجة DataTable

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

اول الخطوات  نسويهه بخصوص ربط sql server مع  visual studio وحتى نبرمج طريقه DataTable هي انشاء وتصميم قاعدة بيانات تحتوي على جداول وعلاقات ومفاتيح تمنع التكرار وساذكر بعض تفاصيل تتعلق بمفاهيم البيانات وانظمة ادارة قواعد البيانات Rdbms لكي تصبح لديكم معلومات ومهارات اكثر للتعامل مع انظمة ادارة قواعد البيانات dbms .

ما هى قواعد البيانات ؟

بمنتهى البساطة فى تعريف قواعد البيانات نقول أنها مجموعة من البيانات المهيكلة  structuredأى موضوعة وفقا

لمنظومة معينة ،فالغرض الأساسى لأى قاعدة بيانات هو تنظيم معلومات كبيرة الحجم تيسيرا على المستخدم حال قيامه

بعملية استعلام أو تعديل أو إضافة لهذه المعلومات .

ـ Data Base Management System ( DBMS)

 ما هو نظام إدارة قواعد البيانات

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

 ما هو الـ Relational DBMS

يستطيع الـ  DBMSمن التعامل مع البيانات فى صورة جداول )صفوف أو سجلات –أعمدة أو حقول( تشبه تلك الجداول فى البرامج المحاسبية مثل  Excelوهى صورة سهلة ومنطقية لتنظيم البيانات ، ومن هنا ظهرت قواعد البيانات العلائقية

➖ أو  RDBMS التى هى مربط الفرس الآن فى التعامل مع البيانات فى معظم التطبيقات سواءاً أكانت تطبيقات سطح المكتب أو ويب أو حتى أجهزة كفية .

متى نختار بين قواعد البيانات والجداول الممتدة  Spreadsheets؟

يأتى سؤال بديهى..بما أن قواعد البيانات تشبه فى عملها الجداول الممتدة  Spreadsheetsفلماذا إذا ظهرت ؟!! ....سؤال

جيد ، والإجابة تكمن فى المرونة التى يوفرها لك أى نظام إدارة لقواعد البيانات من استرجاع سلس وسهل للبيانات ، إجراء العمليات على هذه البيانات مهما كانت مفرقة فى الجداول ،إجراء عمليات على الجداول دفعة واحدة دون تجزئتها 

لماذا أستخدم قواعد البيانات ؟

توفر  قواعد البيانات الحلول للعديد من المشكلات التى تقابلنا فى الحياة مثال :

• التوثيق للبيانات الكبيرة الحجم والمبعثرة )كالإرشيف مثلا فى المؤسسات المختلفة ( بدلا من الطرق التقليدية فى

الحفظ كالورق والملفات .

• السرعة فى جلب المعلومة مهما كان حجم البيانات عندى ،أسرع بكثير حتى ولو كان النظام الورقى التقليدى عندى مرتب بأى شكل كان .

• توفير الوقت والمجهود المبذولان فى ترتيب وتنظيم البيانات بالطرق التقليدية والتى بدورها معرضة لأخطاء كثيرة وجسيمة .

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

وفاءاً بطلبك فى زمن صارت فيه للثانية قيمة

فوائد استخدام نظم إدارة قواعد البيانات العلائقية  RDBMS؟

تستطيع RDBMs من تحقيق فوائد جمة عن  طريق التحكم فى الآتى :

 التكرارية : Redundancyفهى تمنع أى تكرار سواءا مقصود او غير مقصود لبيانات موجودة مسبقا وبالتالى تتحكم فى توفير وعدم إهدار المساحة على القرص الصلب او أى وحدة تخزين اخرى.

تضارب البيانات :Inconsistency

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

تكامل البيانات  :Data Integrityفالنظام يحقق نوع من الانسجام بين البيانات يمكن من خلاله استخراج معلومة صحيحة 

تدارك الخطأ :فى حالات فشل اتمام أى عملية كتحويل الأموال مثلا أو الولوج إلى أنظمة سرية مثلا أو حتى العمليات المزدوجة كإجراء تعديل من قبل شخصين على نفس البيانات فى نفس الوقت هناك خط دفاعى لتدارك هذه المشكلات عن طريق .RDBMS

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

العمليات المنتظمة واستراجع الأخطاء: فى بعض الحالات يكون هناك تسلسل لعمليات مختلفة على قواعد البيانات يستطيع  RDBMSمن هذا ،فضلا عن استرجاعه لهذه العمليات حال حدوث خطأ مفاجئ لا قدر الله.

تنظيم التخزين: يمكنك  RDBMSمن تنظيم للبيانات المخزنة على وحدات التخزين المختلفة بميكانيكية تسهل عمليات الاسترجاع والبحث عن طريق مايسمى بـ Internal Schemaدون تدخل منك .

الفرق بين  RDBMS لأنظمة سطح المكتب و الخوادم Servers

تنقسم صناعة البرمجيات اليوم المتعلقة بقواعد البيانات تقريبا إلى قسمين رئيسيين :

➖ قواعد بيانات أنظمة سطح المكتب او  PCs

➖ قواعد بيانات أنظمة الخوادم .Servers

فيما يلى الفروق الجوهرية بين النوعين :

قواعد بيانات أنظمة سطح المكتب او PCs

تتسم قواعد بيانات أنظمة سطح المكتب او  PCs بقلة عدد المستخدمين او بالأحرى المنتفعين من قاعدة البيانات عن طريق أنظمة رخيصة نسبيا 

مثل الـ

 (MS Access –Lotus-FoxPro-SQL  Server Express )

وفى الغالب لا تتضمن هذه الانظمة العلميات المعقدة او الإمكانات الكبيرة نظراً لعدم الاحتياج إليها على أنظمة سطح المكتب فهى تلائم المؤسسات الصغيرة والمتوسطة الحجم بمنتهى الفاعلية ، 

➖لكنها تختلف عن أنظمة الخوادم فى الآتى :

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

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

قواعد بيانات أنظمة الخوادم Servers على العكس من أنظمة قواعد البيانات الخاصة بسطح المكتب ، تتسم قواعد بيانات الـ  Servers بالتعامل مع كم كبير ومعقد من البيانات دفعة واحدة ،ليس هذا فحسب بل ومن أكثر من مستخدم فى نفس الوقت دون أى خلل وهذا يرجع إلى طبيعة الخوادم

وإماكانياتها الكبيرة مقارنة بالأجهزة المنزلية العادية وكمثال على قواعد بيانات الخوادم هناك العملاق أوراكل وكذا MS SQL 

Sybase وIBM DB2  وأنظمة شركة

Server


➖ ويكمن الإختلاف الجوهرى بين هذه الانظمة وسابقتها فى الآتى :

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

الإعتمادية : توفر قواعد بيانات أنظمة الخوادم  Serversالقدرة على الاعتماد عليها بدرجة  ۲٤ساعة طيلة  ۷أيام متصلة طبقا لحاجة السوق إلى ذلك ..

مثال هذا أنظمة البنوك والشركات العملاقة كشركة ميكروسوفت وكموقع كبير كأمازون مثلا ً فهى عادة ماتلحق ببعض الميزات مثل الـ  Mirroringوالـ . Log Shipping

سرعة الأداء : لأنها تعمل على اجهزة الخوادم فهى تتسم بالسرعة العالية فى الاستجابة للأوامر والعمليات المختلفة ،

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

 التمدد : من الميزات المهمة جدا ميزة التمدد والاستعداد الدائم للطوارئ والزيادات فى أى وقت فى حجم البيانات

وكثافتها ، نخيل مثلا لو أن بنك فى اليابان كان حجم تعاملاته اليومية  ۲۰مليون عملية تم دمجه مع بنك آخر حجم تعاملاته  ۱۰مليون عملية ، إن لم تكن قواعد البيانات مهيأة تماما لمثل هذه الإجراءات الطارئه ...فالخسائر ستكون

فادحة فى العملاء

دورة حياة نظم قواعد البيانات DB Life Cycle 

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

كذلك فى حالة نظم قواعد البيانات يبدأ التطوير بالفكرة ثم التنفيذ ،والذى بدوره ينقسم إلى عدة مراحل ، لايتم الانتقال إلى مرحلة إلا بعد تجاوز المرحلة السابقة لها  (Block by Block )

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

تنقسم دورة حياة نظم قواعد البيانات إلى عدة مراحل ،بدءاً من الـ  global schemaوانتهاءا بالتنفيذ والصيانة : maintenance

تحليل المتطلبات  :Requirement analysisقبل الشروع فى التصميم لابد وان تعرف المشكلة المراد حلها بقواعد

البيانات جيدا ،يتطلب هذا عدة لقاءات مع المستخدمين أو الموظفين من خلالها يُعرف كيف يدار النظام ، ومن أين وإلى

أين تتدفق البيانات بهذه الطريقة تضمن توافق تنفيذك لمشروعك مع متطلبات العميل (هذه المرحلة بحق هي عصب أى

مشروع برمجي ) حسام كمال محمد

التصميم المنطقى  :Logical designياتى بعد مرحلة جمع المتطلبات ،مرحلة تصميم  لما ستكون عليه البيانات ،فابستخدام العلاقات والنماذج مثل  ER diagramsنستطيع توضيح هذه العلاقات والترابطات بين البيانات.

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

مرحلة بناء قاعدة البيانات : هنا يبدأ المجهود السابق يثمر عن قاعدة البيانات الحقيقة التى ستستخدم فى مشروعك

مستخدمين نظام إدارة قواعد البيانات العلائقية  RDBMS

مرحلة التعديل على البيانات 

Data modification

باستخدام لغة التعديل على البيانات Data Modification او Language DML تستطيع إجراء  الإستعلامات وإنشاء المفهرسات وتحديث قاعدة البيانات ووضع القيود مثل

Referential lntegrity

  الذي يسمى التكامل المرجعي

مراقبة قاعدة البيانات  :Database Monitoring وتعتبر هذه المرحلة هامة جدا بعد عمليات التنفيذ السابقة ،ضماناً

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

 العلاقات بين البيانات و الجداول 

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

تتكون الجداول من صفوف وأعمدة ، كل عمود يُعبر عن معلومة جزئية .

فى قواعد البيانات لابد وأن ترتبط الحقول أو أى جزئية من البيانات مع بعضها البعض بعلاقة ما .

فمثلا قسم للمشتريات فى شركة ما ، هناك موردون لهذه الشركة وبأصناف شتى نحتاج عند تنفيذ قاعدة بيانات لذلك القسم إلى عدة علاقات كاالتالى :

١-  العلاقة  :One-to-One

تعنى أن قيمة واحدة فى الجدول أ مثلا تقابلها قيمة واحدة (صف ) فى الجدول

فمثلا لكل قسم يوجد مدير واحد فقط  لذا يتم ربط جدول المديرين بجدول الأقسام عن طريق العلاقة 

٢- العلاقة  : One-to-Many

تعنى أن قيمة فى الجدول الأول تقابلها قيمة فى الجدول الثاني وهذه القيمة بدورها يقابلها قيمة أو أكثر فى الجدول الأول ...


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

العلاقة من السلع للزبائن أى أكثر من زبون يحصل على نفس السلعة .

٣- العلاقة  : Many-to-Many

تعنى أن قيمة فى الجدول الأول تقابلها قيمة أو أكثر فى الجدول الثانى والعكس صحيح .

فمثلا فى جدول الطلاب يستطيع الطالب التسجيل فى أكثر من مادة ، وجدول المواد الدراسية يستطيع أن يسجل العديد من الطلاب للمادة أو أكثر .

فى الغالب عند تنفيذ هذه العلاقة يكون هناك جدول ثالث للربط بين الجدولين لأن هذا النوع من العلاقات معقد نوعا ما .

مفهوم المفاتيح Keys

عرفنا أن تمثيل العلاقات يتم بين البيانات فى الجداول وفقا لطبيعة العلاقة ، ولإيجاد هذه العلاقات لابد من وجود صفوف أو حقول مثلا للربط بين هذه الجداول ، وأمثل علاقة بين هذه الجداول هى المفاتيح ، Keys هذه المفاتيح ماهي إلا أعمدة متشابهة بين الجداول وذلك لتمييز الصفوف بعضها عن بعض .

أي  RDBMS يتعامل مع نوعين رئيسيين من المفاتيح : (Primary Key (P.k و  (Foreign Key (F.K

برمجة قواعد البيانات باستخدام  C# 2010 and MSSQL Server 2008حسام كمال محمد

المفتاح الرئيسي :P.K

هو عمود او أكثر ، يتصف بأنه غير حاوي لبيانات متكررة أي بيانات فريدة  Unique مميزا به كل صف فى الجدول 

وعندما تختار مفتاحا رئيسيا  P.K لابد من معرفة  : 

ـ ➖كل سجل فى الجدول لابد  ألا يحتوى على قيمة خالية . NULL

➖كل قيمة مدخلة إلى العمود الذي يحتويه للمفتاح لابد أن تكون قيمة فريدة 

➖ضمان الحفاظ على القيمة الموضوعة فى الجدول من عدم التغيير مستقبلا أثناء اجراء العمليات على قاعدة البيانات .

➖ يوجد فى الجدول مفتاح رئيسى واحد فقط .

إلى جانب ضمان المفتاح الرئيسى  P.K لفرادة البيانات الموجودة فى كل سجل ، فهو أيضا يسهل عملية البحث داخل الجدول وذلك لأنك بمجرد انشاءك للمفتاح الرئيسى يتولد اتوماتيكيا فهرس للجدول يسهل عليك عملية البحث وبالطبع هذا كله يعود إلى RDBMS  

ليس هذا فحسب بل من الممكن أخذ أكثر من  Entity وإعتبارها مفتاح رئيسي وذلك تحقيقا لمبدأ الفرادة Uniqueness

ويسمى هذا،كما أنه يمكن ترشيح اي مفتاح ليصبح مفتاحا رئيسيا  وفقا للصفات السابقة الذكر  ويسمى هذا المفتاح المرشح Candidate Key

 المفتاح الخارجي : Foreign Key

المفتاج الخارجي  F.K عبارة عن صفة مرجعية للمفاتيح الرئيسية ..أو قيمة غير مكررة Unique فى جدول آخر وهي هامة جدا فى تحقيق خاصية التكامل المرجعى والتنقل بين عناصر الجداول المترابطة .


تعليقات