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

منتديات عراق وير

منتديات عامة حاسوبية وهندسية مرحبا بك يا زائر في ( منتديات عراق وير )
 
الرئيسيةالبوابةاليوميةس .و .جبحـثالتسجيلدخول

شاطر | 
 

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

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
Admin
Admin


عدد المساهمات : 168
نقاطك : 2602
التقييم : 0
تاريخ التسجيل : 11/01/2012

مُساهمةموضوع: تعلي اساسيات قواعد البيانات    الأربعاء يناير 25, 2012 7:05 pm

أساسيات قواعد البيانات

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

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

=============

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

مقدمة عن قواعد البيانات

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

نظام قاعدة البيانات العلائقي

يطلق على نظام إدارة قواعد البيانات Database Management System أو ما يعرف بين متخصصي ذلك المجال باسم DBMS ، كما يطلق على نظام قواعد البيانات العلائقي Relational Database Management System وتختصر هكذا RDBMS ، و نظام لإدارة قواعد البيانات يستخدم جدول أو أكثر من جدول بينها علاقة. وقد ذكرنا هنا كلمة علائقي للتفرقة بينه وبين النظم الأخرى لإدارة قواعد البيانات منها مثلا ( النظام الهرمي ) المستخدم في حفظ المعلومات بأسلوب يوفر سهولة التعامل مع البيانات واسترجاعها بأكثر من طريقة ، حيث تحتوي قاعدة البيانات على العناصر التالية :

· جداول البيانات ← Tables
· السجلات ← Records
· الحقول ← Fields
· الاستعلامات ← Queries
· الفهارس ← Indexes
· طرق العرض ← Views


أظنها لفكرة سديدة لو قمنا بشرح تلك العناصر شرحاً تفصيلياً .. هيا بنا ننطلق

· قاعدة البيانات ( Database ) ← هي مجموعة من جداول البيانات تحتوي على معلومات لها علاقة ببعضها ويمكن أن تحتوي قاعدة البيانات على جدول بيانات واحد فقط.


· جداول البيانات ( Tables ) ← هي مجموعة من السجلات ( كل سجل يعتبر سطر داخل الجدول ) ، وتحتوي هذه السجلات على معلومات من نفس النوع. ويمكن اعتبار دليل التليفونات جدول واحد.


· السجلات ( Records ) ← السجل عبارة عن سطر واحد في الجدول ويحتوي على مجموعة من الحقول. ويمكن اعتبار أي سطر من أي صفحة من دليل التليفونات سجلاً.


· الحقول ( Fields ) ← هو عنصر محدد داخل السجل قد يكون ( في دليل الهاتف مثلا ) اسم المواطن أو العنوان أو رقم التليفون ويتم تحديده من حيث النوع والحجم بواسطة مصمم البرنامج.


· الفهارس ( Indexes ) ← هو نوع خاص من الجداول يسمى جدول الفهرسة ويحتوي على قيم لحقل أو اكثر ، وتشير هذه القيم للأماكن الحقيقية لهذه الحقول وترتب هذه الأرقام طبقاً للترتيب الذي يحدده مصمم البرنامج ( تصاعدي أو تنازلي ) ، وفي مثالنا السابق يمكننا عمل جدول لفهرسة دليل التليفونات طبقاً لترتيب اسم المواطن الأبجدي أو ... الخ. ملحوظة هامة هنا ألا وهي أن الفهرس يستخدم مفتاح أساسي ( Primary Key Field ) ويقوم بتحديده مصمم البرنامج.


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


· عوامل التصفية ( Filters ) ← هو شرط ( ليس جزء من قاعدة البيانات ) يوضع ليظهر البيانات المطلوبة أثناء تنفيذ البرامج.


· طرق العرض ( Views ) ← هي طريقة لعرض المعلومات – مجموعة من السجلات – بصورة يتم تحديدها بواسطة مصمم المبرمج في صورة نتيجة أحد أمرين ، إما أمر فهرسة Index أو أمر تصفية Filter ، وفي مثالنا السابق يمكن عرض جميع المواطنين الذين تبدأ أسمائهم بحرف الألف ، حيث يقوم المبرمج بإعداد الشرط المناسب باستخدام عملية التصفية المناسبة Filter ، ومن ثم عرض المعلومات المطلوبة.

==============

في الدرس القادم سنتعلم الكثير عن تصميم قواعد البيانات

الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://iraqware.yoo7.com
Admin
Admin


عدد المساهمات : 168
نقاطك : 2602
التقييم : 0
تاريخ التسجيل : 11/01/2012

مُساهمةموضوع: رد: تعلي اساسيات قواعد البيانات    الأربعاء يناير 25, 2012 7:07 pm

تصميم قاعدة البيانات


( خطأ فادح ) .. هو أن أغلب تصميماتنا لقواعد البيانات سواء كنا مبتدئين أو محترفين يغلب عليه الطابع الروتيني الممل ، ومنها ما لا نستطيع وصفه إلا بأوصاف غير لائقة .. يتساءل البعض طبعا ( لماذا نحن هكذا ؟؟؟؟؟؟؟ ).

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

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

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

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

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

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

تصميم قاعدة البيانات

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

1. تصميم خريطة النظام.

2. تحديد أنواع البيانات المطلوبة للنظام.

3. تنظيم البيانات داخل الجداول.

4. إنشاء العلاقات السليمة بين جداول البيانات.

5. تصميم الاستعلامات اللازمة عن النظام.

6. معالجة البيانات.

7. مراجعة التصميم.


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

· تقرير ببيانات عملاء المنشأة.
· تقرير ببيانات مندوبي المبيعات.
· تقرير ببيانات الموردين.
· تقرير بالأصناف الواردة.
· تقرير بجميع الطلبات الخاصة بعميل معين.
· تقرير بجميع الطلبات الخاصة بمندوب معين.
· تقرير بجميع الطلبات ( اليومية / الشهرية / السنوية ).


ومن هذا السرد لوظائف النظام تلاحظ أن النظام يشتمل على خمسة برامج على النحو التالي :

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


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


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


· في البرنامج الرابع : يقوم المستخدم بتسجيل بيانات الأصناف بجدول " الأصناف " بالإضافة إلى أسماء الموردين ومن هذا الجدول يتم استخراج تقارير الأصناف الواردة.


· في البرنامج الخامس : يتم تجميع بيانات العملاء والموردين والأصناف كل من الجدول الخاص به ، ومن هذا البرنامج يمكن الحصول على :

1. فاتورة بيع.

2. طلبات خاصة بعميل معين.

3. طلبات خاصة بمندوب معين.

4. الطلبات ( اليومية / الشهرية / السنوية ).


تحديد أنواع البيانات المطلوبة

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


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




( أتمنى انك ما تكونش جعت ، ومستني الدليفري بتاع كنتاكي )


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

====================

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

الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://iraqware.yoo7.com
Admin
Admin


عدد المساهمات : 168
نقاطك : 2602
التقييم : 0
تاريخ التسجيل : 11/01/2012

مُساهمةموضوع: رد: تعلي اساسيات قواعد البيانات    الأربعاء يناير 25, 2012 7:08 pm

أنواع البيانات


أخر ما تحدثنا عنه في الدرس السابق هو ( تحديد أنواع البيانات المطلوبة ) .. تعال معي هنا كي نتعرف على بعض أنواع البيانات :

· نصي ( Text ) ← يحتوي على عدد متغير من الحروف يصل طوله إلى 255 حرف ويستخدم مع البيانات التي لا تحتاج إلى إجراء عمليات حسابية عليها مثل الأسماء والعناوين والأكواد التي تشتمل على أرقام وحروف.

· مذكرة ( Memo ) ← يحتوي على عدد كبير من الحروف ( أكبر بكثير من 255 حرف ) ومن أمثلة استخداماته استخدامه لحفظ مواصفات منتج.

· عددي – صحيح ( Integer ) ← يحتوي على أرقام صحيحة ( بدون كسور عشرية ) ، ومن أمثلة استخداماته حفظ كمية الأصناف من منتج معين أو عدد السكان في حي معين.

· عددي - عشري ( Decimal ) ← يشتمل على أرقام تحتوي على كسور عشرية مثل تكلفة المنتج ، ضريبة المنتج .. الخ.

· تاريخ أو وقت ( DateTime ) ← يمكنك بتحديد نوع الحقل انه من هذا النوع ، عندها يمكنك حفظ قيم زمنية – تاريخ أو وقت - ، كما يمكنك التعامل معها كما تريد.

· منطقي ( Boolean ) ← يحدد بإحدى القيمتين True أو False .. أو Yes أو No .. ومثال على ذلك الحالة الاجتماعية لشخص معين ، هل هو متزوج ؟ فيكتب أمام هذا السؤال Yes بمعنى نعم ليدل على أنه متزوج أو يكتب No بمعنى انه غير متزوج.

· ثنائي ( Binary ) ← يمكن أن يشتمل على صور أو مقطوعات موسيقية أو كائنات OLE ، ومثال ذلك يمكن الاحتفاظ بصور الأصناف التي تعرض للبيع أو غير ذلك.

تحديد الجداول المطلوبة


بعد تحديد البيانات التي يحتاجها النظام يلزم تنظيم هذه البيانات داخل الجداول ، حيث يتم حفظ البيانات داخل جدول أو اكثر ويتم عمل العلاقات Relationships اللازمة بين هذه الجداول.

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

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





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





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

حساب حجم البيانات

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

تصميم جداول تابعة


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


اقتباس
اقتباس:

ملحوظة ... يطلق على جدول العائلة الجدول الأبوي ( Parent Table ) ويحتوي على معظم البيانات الأساسية للعائلة بينما يطلق على جدول العملاء الابن ( Child Table ) حيث أنه جدول منبثق من جدول العائلة.




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




اقتباس
اقتباس:

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









الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://iraqware.yoo7.com
Admin
Admin


عدد المساهمات : 168
نقاطك : 2602
التقييم : 0
تاريخ التسجيل : 11/01/2012

مُساهمةموضوع: رد: تعلي اساسيات قواعد البيانات    الأربعاء يناير 25, 2012 7:09 pm

إنشاء العلاقات بين الجداول


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


المفتاح الأساسي ( Primary Key )

هو الحقل الذي يحتوي على بيانات لا تتكرر داخل الجدول ، ومثال على ذلك يحتوي كل سجل من جدول العملاء على بيانات كاملة عن عميل معين ، فمن المناسب أن نستخدم حقل " رقم العميل " لأنه لن يتكرر داخل الجدول ويكون هو المفتاح الأساسي أو Primary Key لهذا الجدول.


المفتاح الأجنبي ( Foreign Key )

هو الحقل الموجود بالجدول المرتبط وعادة لا يكون الجدول المرتبط في حاجة إليه ، ولكن وجوده ضروري لربط هذا الجدول مع الجدول الأساسي. يشتمل الشكل التالي على مربع " علاقات " وفيه يظهر أن العلاقة بين جدول العملاء ( Customers ) وجدول الطلبات ( Order ) تم تأسيسها بناء على بيانات حقل رقم العميل ( Customer_ID)، ويظهر بالشكل موقع المفتاح الأساسي وموقع المفتاح الأجنبي.







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

أنواع علاقات الارتباط

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

يمكن إنشاء 3 أنواع من العلاقات : علاقة واحد مقابل واحد ، وعلاقة واحد مقابل مجموعة ، وعلاقة مجموعة مقابل مجموعة ، ونوضح فيما يلي الفرق بين هذه الأنواع من العلاقات.

علاقة واحد مقابل مجموعة ( One-to-Many )

تسمى هذه العلاقة أحيانا " علاقة ارتباط رأس بأطراف " ومعناها أيضا علاقة واحد مقابل مجموعة وهي الأكثر استخداما. وتعني أن السجل الواحد في جدول البيانات ( يسمى الجدول الرئيسي Primary Table ) يقابله اكثر من سجل في جدول آخر ( يسمى الجدول المرتبط Related Table ). فمثلا قاعدة البيانات Sales تسجل كل فاتورة في سجل واحد في جدول إجماليات الفواتير ، وتسجل تفصيلات هذه الفاتورة في سجل أو اكثر في جدول " تفصيلات الفواتير " ، ولذلك يقابل كل سجل ( بيانات فاتورة ) في جدول إجماليات " الفواتير " سجلا أو اكثر ( تفصيلات الفاتورة ) في جدول " تفصيلات الفواتير ".

علاقة واحد قابل مقابل واحد ( One-to-One)

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

علاقة مجموعة مقابل مجموعة ( Many-to-Many )

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

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

مثال .. علاقة الارتباط بين جدول " العملاء Customers " ، وجدول " الأصناف Items " علاقة ( مجموعة مقابل مجموعة ) فأي عميل يمكن أن يشتري أي صنف والعكس صحيح فأي يمكن صنف يمكن أن يُباع لأي عميل.

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





===============


إلى هنا يكون قد انتهى الجزء الخاص بالعلاقات بين جداول البيانات .. انتظروا المزيد من الاحترافية في الدروس القادمة
الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://iraqware.yoo7.com
Admin
Admin


عدد المساهمات : 168
نقاطك : 2602
التقييم : 0
تاريخ التسجيل : 11/01/2012

مُساهمةموضوع: رد: تعلي اساسيات قواعد البيانات    الأربعاء يناير 25, 2012 7:09 pm

إنشاء العلاقات بين الجداول


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


المفتاح الأساسي ( Primary Key )

هو الحقل الذي يحتوي على بيانات لا تتكرر داخل الجدول ، ومثال على ذلك يحتوي كل سجل من جدول العملاء على بيانات كاملة عن عميل معين ، فمن المناسب أن نستخدم حقل " رقم العميل " لأنه لن يتكرر داخل الجدول ويكون هو المفتاح الأساسي أو Primary Key لهذا الجدول.


المفتاح الأجنبي ( Foreign Key )

هو الحقل الموجود بالجدول المرتبط وعادة لا يكون الجدول المرتبط في حاجة إليه ، ولكن وجوده ضروري لربط هذا الجدول مع الجدول الأساسي. يشتمل الشكل التالي على مربع " علاقات " وفيه يظهر أن العلاقة بين جدول العملاء ( Customers ) وجدول الطلبات ( Order ) تم تأسيسها بناء على بيانات حقل رقم العميل ( Customer_ID)، ويظهر بالشكل موقع المفتاح الأساسي وموقع المفتاح الأجنبي.







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

أنواع علاقات الارتباط

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

يمكن إنشاء 3 أنواع من العلاقات : علاقة واحد مقابل واحد ، وعلاقة واحد مقابل مجموعة ، وعلاقة مجموعة مقابل مجموعة ، ونوضح فيما يلي الفرق بين هذه الأنواع من العلاقات.

علاقة واحد مقابل مجموعة ( One-to-Many )

تسمى هذه العلاقة أحيانا " علاقة ارتباط رأس بأطراف " ومعناها أيضا علاقة واحد مقابل مجموعة وهي الأكثر استخداما. وتعني أن السجل الواحد في جدول البيانات ( يسمى الجدول الرئيسي Primary Table ) يقابله اكثر من سجل في جدول آخر ( يسمى الجدول المرتبط Related Table ). فمثلا قاعدة البيانات Sales تسجل كل فاتورة في سجل واحد في جدول إجماليات الفواتير ، وتسجل تفصيلات هذه الفاتورة في سجل أو اكثر في جدول " تفصيلات الفواتير " ، ولذلك يقابل كل سجل ( بيانات فاتورة ) في جدول إجماليات " الفواتير " سجلا أو اكثر ( تفصيلات الفاتورة ) في جدول " تفصيلات الفواتير ".

علاقة واحد قابل مقابل واحد ( One-to-One)

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

علاقة مجموعة مقابل مجموعة ( Many-to-Many )

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

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

مثال .. علاقة الارتباط بين جدول " العملاء Customers " ، وجدول " الأصناف Items " علاقة ( مجموعة مقابل مجموعة ) فأي عميل يمكن أن يشتري أي صنف والعكس صحيح فأي يمكن صنف يمكن أن يُباع لأي عميل.

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





===============


إلى هنا يكون قد انتهى الجزء الخاص بالعلاقات بين جداول البيانات .. انتظروا المزيد من الاحترافية في الدروس القادمة
الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://iraqware.yoo7.com
Admin
Admin


عدد المساهمات : 168
نقاطك : 2602
التقييم : 0
تاريخ التسجيل : 11/01/2012

مُساهمةموضوع: رد: تعلي اساسيات قواعد البيانات    الأربعاء يناير 25, 2012 7:10 pm

معالجة البيانات

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

· الفهرس Index

· التصفية Filter

· الترتيب أو الفرز Sort

· التحقق من البيانات Validation

· تكامل قاعدة البيانات Integrity

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




فهرسة الجداول


يتم إدخال المعلومات وترتيبها طبقاً لأسبقية الدخول ويسمى هذا الترتيب الطبيعي وعندما تريد أن ترى هذه البيانات بترتيب مخالف لترتيبها الطبيعي فإن استخدامك للفهرس Index يصبح ضرورة. والفهرس عبارة عن جدول من نوع خاص يحتوي على مفتاح الجدول الذي تريد ترتيبه طبقا لهذا المفتاح ( ترتيبا تنازليا أو تصاعديا ) فيتيح لك الطريقة التي تساعدك على رؤية هذا الجدول طبقا للترتيب المنطقي المطلوب. كما يحتوي هذا الفهرس على مجموعة من المؤشرات Pointers التي تتيح لك الوصول إلى المكان الحقيقي لأي سجل في جدول معرف لديه. يتم استخدام الفهرس لزيادة سرعة البحث عن البيانات.




تصفية البيانات


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

يتم استخدام المعاملات مثل اكبر من < وأصغر من > و يساوي = ولا يساوي <> .. الخ داخل الشرط. ويكون ناتج الشرط هو ناتج منطقي فكل سجل تتحقق فيه الشروط ويعطي النتيجة True تظهر بياناته وكل سجل لم يتحقق فيه الشرط يتم تجاهله.




ترتيب ( فرز ) البيانات


يتم استخدام الأمر Sort للحصول على بيانات مرتبة بترتيب معين ( تنازلي أو تصاعدي ) ، وتظهر أهمية استخدام هذا الأمر في الأحوال التي لا يستخدم فيها الفهرس Index كما يحدث عند استخدام ( Dynast ) – وهي من الطرق التي تستخدم في إظهار مجموعة من السجلات من جدول أو اكثر وسوف يتم مناقشتها بالتفصيل ضمن الطرق المختلفة للتعامل مع البيانات.
كما يمكن استخدام عملية الترتيب من خلال الأمر ( ORDER BY ) الخاص بالاستعلامات ، وسيتم مناقشة جميع الأوامر التي تستخدم في الاستعلامات فيما بعد.

التحقق من البيانات

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

أثناء تصميم قواعد البيانات يجب مراعاة إدخال الشروط اللازمة للتحقق من البيانات التي يتم إدخالها إلى الجداول. فمثلا عند إدخال بيانات ( في حقل Date ) يجب اعتبار يوم 30 فبراير تاريخ خاطئ ، بل وان يوم 29 فبراير لا يعتبر تاريخ صحيح إلا مع بعض السنوات الميلادية دون الأخرى .. وهكذا. كما انك إذا أردت إدخال عمر شخص فلا يعقل أن يساوي صفر أو اقل من صفر .. وهكذا لابد من مراعاة جميع الأخطاء الغير منطقية التي يمكن أن تتسرب كبيانات داخل الجداول من خلال المستخدم.
تتم عملية التحقق من البيانات إما أثناء كتابة تعليمات البرنامج أو عند تصميم الجداول وتوصيف الحقول بداخلها وهي إمكانية موجودة بالفعل داخل قاعدة البيانات Ms Accessوهي موجودة أيضا في معظم قواعد البيانات.

المحافظة على تكامل قاعدة البيانات

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

مراجعة تصميم البرنامج

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

السؤال الأول الذي ينبغي أن يكون على لسان مصمم البرنامج دائما هو ( هل هذا التصميم يوفر كل مطالب العميل أم لا ؟؟؟ ) ، أي هل حقق هذا التصميم كل أهداف البرنامج المطلوب تحقيقها والتي وجد لأجلها النظام من الأساس ، فإذا وجد أي خطا فان هذا يستدعي مراجعة كل وظيفة من الوظائف التي تكلمنا عنها سابقا ( والتي في مجموعها تمثل النظام برمته ) باستخدام بيانات كأمثلة فإذا ما تبين مصدر الخطأ فانه يلزم إعادة تصميم هذه الجزئية مرة أخرى بما لا يتعارض مع التصميم المنطقي للبرنامج ككل.




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




بالتوفيق للجميع
الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://iraqware.yoo7.com
 
تعلي اساسيات قواعد البيانات
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتديات عراق وير  :: قسم السوفت وير :: تعليم الاوفس office-
انتقل الى: