قواعد البيانات «الحلقة الأولى »
|
إعداد م. سيد سعد الدين*
مراحل التصميم
دعنا نتعرض لجميع مراحل التصميم من خلال مثال عملي. قام أحد محللي النظام بتحليل نظام شركة ما يعمل بها مجموعة من الموظفين ينتمون لمجموعة من الأقسام. وتقوم الشركة بعمل عدد من المشاريع يعمل بها الموظفون بعد انتهاء الدوام الرسمي. وكانت النقاط التالية هي نتائج ما توصل إليه محلل النظام:
(1) الشركة مكونة من مجموعة من الأقسام (رقم القسم ( وحيد). اسم القسم (وحيد). موقع القسم).
(2) هناك مجموعة من الموظفين بالشركة (رقم الموظف (وحيد). اسم الموظف. عنوانه. راتبه. وظيفته. تاريخ تعيينه) بحيث ان الموظف يتبع لقسم واحد فقط ولكن القسم يوجد به أكثر من موظف.
(3) هناك مجموعة من المشاريع (رقم المشروع(وحيد). اسم المشروع (وحيد). موقع المشروع) وكل مشروع له قسم معين يديره وقد يدير القسم أكثر من مشروع. ويعمل في المشروع أكثر من موظف. وقد يعمل الموظف في أكثر من مشروع. ولكل موظف عدد ساعات عمل في الأسبوع بكل مشروع.
وبالنظر إلى المثال السابق نجد أنه يحتوي على ثلاثة أشياء أساسية هي أصل كل النظام وهي:
1 الأقسام 2 الموظفون 3 المشاريع.
فكل واحدة منها تمثل كينونة Entity في حد ذاتها والعناصر التي تنتمي لكل كينونة منها هي حقل Attribute مثال ذلك (اسم القسم. رقم القسم......). وكل حقل وحيد يعني أن قيمته من غير الممكن تكرارها لأكثر من سجل مما يعني إمكانية أن يكون هذا الحقل هو المفتاح الأساس للجدول الموجود به. وذلك يقودنا إلى معرفة معنى المفتاح الأساس وهو الحقل (أو مجموعة الحقول) التي يمكن عن طريقها تحديد السجل تحديدا تاما. بمعنى عندما يتم اختيار رقم القسم مفتاح أساس لجدول الأقسام (كما سنرى لاحقا) فذلك يعني أنه لا يوجد قسمان لهما نفس الرقم ولا يوجد قسم ليس له رقم.
ويتم بعد ذلك تمثيل هذه النقاط على هيئة مخطط باستخدام أحد النماذج المتعارف عليها في تصميم قواعد البيانات. ومن أشهر هذه النماذج «نموذج العلاقات الكينونية» حيث يتم تمثيل كل كينونة من كينونات النظام بشكل مستطيل يوضع بداخله اسم الكينونة وكذلك كل حقل يتم تمثيله بدائرة متصلة بالكينونة المنتمي لها مع مراعاة وضع خط تحت اسم الحقل الوحيد. ويتم بعد ذلك تمثيل العلاقات بين كل كينونة والأخرى.
وحيث ان القسم به أكثر من موظف والعكس غير صحيح وبالتالي تصبح العلاقة بين الأقسام والموظفين «رأس بأطراف». ويتم تمثيل الرأس بخط واحد والأطراف بخطين وبين الخط والخطين يتم وضع شكل معين يحتوي على اسم لهذه العلاقة يوضح معناها وليكن مثلا «ينتمي إلى». وهكذا بالنسبة للأقسام مع المشاريع فحيث ان القسم يدير مشروعاً أو أكثر ولكن المشروع لا يديره إلا قسم واحد. أصبحت العلاقة «رأس بأطراف» ويتم تمثيلها بنفس الطريقة السابقة.
أما بالنسبة للموظفين مع المشاريع فالعلاقة هنا تختلف حيث ان الموظف يعمل في أكثر من مشروع والمشروع يعمل به أكثر من موظف وبالتالي أصبحت العلاقة «أطراف بأطراف» مع ملاحظة وضع الحقول التي لا تنتمي لأي كينونة على العلاقة بين الكينونتين.
وبذلك نكون قد مثلنا النظام عن طريق مخطط العلاقات الكينونية. والسبب في نمذجة النظام بهذا الشكل هو تحويل نقاط تحليل النظام جميعها التي قد يتم فهمها بأكثر من طريقة إلى نموذج واضح متعارف على جميع مكوناته بحيث يتم فهم النظام كما يريد محلل النظام. وبالتالي يكون مخطط العلاقات الكينونية وسيلة لتوحيد رؤية محلل النظام لأي مصمم قواعد بيانات ولاسيما أن هذا المخطط سيستخدم لاستنتاج جداول قاعدة البيانات التي سوف يتم تمثيلها على الحاسب باستخدام أحد برامج قواعد البيانات والتي اخترنا منها أكسس ACCESS. ولاستنتاج الجداول يتم أولا تمثيل كل كينونة بحقولها بشكل أفقي مع اختيار حقل المفتاح الأساس لكل جدول بحيث يكون الحقل وحيدا وإذا كان هناك أكثر من حقل وحيد يتم اختيار الحقل الذي بياناته كلها أرقام. وإذا كانت الحقول الوحيدة كلها تخزن أرقاما نختار أيا منها. حيث ان المفتاح الأساس يستخدم في الربط بين الجداول وبالتالي الحقول الرقمية تكون أسهل من الحقول النصية في عملية ربط البيانات بين أكثر من جدول (سنرى لاحقا كيفية اختيار نوع بيانات كل حقل).
وبعد ذلك يتم تمثيل العلاقات بين الكينونات «رأس بأطراف» يتم أخذ نسخة من حقل المفتاح الأساس الخاص بالكينونة «الرأس» ووضعه في الكينونة «أطراف».
ولذلك نأخذ نسخة من حقل «رقم القسم» الموجود بالأقسام ونضعه في الموظفين. وكذلك نفس الحقل نضعه في المشاريع.
أطراف بأطراف
أما بالنسبة للعلاقة «أطراف بأطراف» فيتم إنشاء جدول جديد يحتوي على نسخة من حقل المفتاح الأساس لكل من الكينونتين ويكون كل من الحقلين المفتاح الأساس للجدول الجديد. ونضع في الجدول الجديد أي حقل آخر كان على العلاقة بين الكينونتين. ولذلك نأخذ نسخة من «رقم الموظف» بالموظفين ونسخة من «رقم المشروع» بالمشاريع ونضعهما في جدول جديد «موظفي المشاريع» وحقل عدد الساعات نضعه في نفس الجدول.
وهذه هي القاعدة العامة في ربط الجداول مع بعضها البعض حتى تضمن أقل تكرار ممكن في البيانات وتوفر في السعة التخزينية وتسهل في عمليات البحث والفهرسة. والآن دعنا نتعلم كيف كان استنتاج هذه القاعدة. حقل مشترك بداية الربط بين الجداول يكون عن طريق وضع حقل مشترك بين الجدولين وبالتالي يكون الربط بين أي جدولين بأخذ نسخة من المفتاح الأساس لأحدهما ووضعه في الجدول الآخر.
والآن لماذا في العلاقة «رأس بأطراف» نأخذ المفتاح الأساس الخاص بالرأس ونضعه في جدول «أطراف». دعنا نفترض حدوث العكس فلو أخذنا نسخة من رقم الموظف بجدول الموظفين ووضعناها في جدول الأقسام ولنتصور شكل البيانات المخزنة عندئذ في جدول الأقسام لوجدنا مثلا قسم الحسابات مسجلا في الجدول10 مرات لوجود 10 موظفين يعملون بالقسم وذلك يعني أن رقم قسم الحسابات مكرر10 مرات وكذلك اسم القسم وأيضا موقع القسم.
وكل هذا التكرار حدث نتيجة وجود حقل «رقم الموظف». لكن بالرجوع إلى اختيارنا حسب القاعدة التي أشرنا إليها سابقا نجد أن البيانات بجدول الموظفين لن تتكرر بوجود حقل «رقم القسم».
وبالنسبة للعلاقة «أطراف بأطراف» فلا يصلح الربط بين الجدولين بأخذ نسخة من المفتاح الأساس لأي منهما ووضعه في الجدول الآخر. لأن التكرار يوجد في الحالتين وبالتالي فالحل هو تقليل عدد الحقول التي سوف يتم تكرار بياناتها ووضعها في جدول جديد.. وهذه الحقول هي رقم الموظف ورقم المشروع ونضع معهم عدد الساعات. ويكون المفتاح الأساس في الجدول الجديد هو كل من رقم_الموظف ورقم _ المشروع (الحقلان معا) لأن في الجدول الجديد رقم الموظف يتكرر (لأنه يعمل في أكثر من مشروع) ورقم المشروع يتكرر (لأنه يعمل به أكثر من موظف) لكن الحقلين معا لا يتكرران في الجدول أبدا. وذلك كان شرحا لاستنتاج القاعدة العامة لربط الجداول. فعند التصميم نستخدم القاعدة العامة لربط الجداول مباشرة.
الحقول الأجنبية
ونلاحظ هنا أن الحقول التي أضيفت لكل جدول تسمى الحقول الأجنبية. فمثلا حقل رقم القسم بجدول الموظفين هو حقل أجنبي. وأيضا رقم القسم بجدول المشاريع حقل أجنبي. وكذلك حقل رقم الموظف في جدول موظفي المشاريع حقل أجنبي وحقل رقم المشروع في جدول موظفي المشاريع حقل أجنبي.
فالحقل الأجنبي هوالحقل الموجود بجدول ما ليس مفتاحا أساسيا به ولكنه مفتاح أساس في جدول آخر.
وفي اللقاء القادم يتم رسم الوصف Schema الخاص بقاعدة البيانات وتحديد أنواع بيانات الحقول لكل جدول ثم نبدأ في التعرف على مكونات الأكسس الذي اخترنا من إصداراته الإصدار 2002 XP ونبدأ في تمثيل قاعدة البيانات من خلال هذاالبرنامج.
عضو هيئة تدريس بقسم الحاسب الآلي كلية المعلمين بالرياض
.....
الرجوع
.....
|
|
|
|
توجه جميع المراسلات التحريرية والصحفية الى
chief@al-jazirah.com عناية رئيس التحرير
توجه جميع المراسلات الفنية الى
admin@al-jazirah.com عناية مدير وحدة الانترنت
Copyright 2002, Al-Jazirah Corporation, All rights Reserved
|