أساسيات تصميم قواعد البيانات ( Access – Office )

B00005B0BZ.01.LZZZZZZZ

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

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

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

في هذا المقال

التعرف على شروط قاعدة البيانات

ينظم Microsoft Office Access 2007 المعلومات في جداول: وهي قوائم الصفوف والأعمدة التي تستبدل دفتر بيانات المحاسب أو ورقة عمل Microsoft Office Excel 2007. قد تحتوي قاعدة البيانات البسيطة على جدول واحد فقط. ولكنك في معظم قواعد البيانات تحتاج غالبًا لأكثر من جدول واحد. على سبيل المثال، قد تحتاج لجدول لتخزين معلومات عن المنتجات، وجدول آخر لتخزين المعلومات عن الطلبات، وآخر يحتوي على معلومات حول العملاء.

صورة تعرض ثلاثة جداول في أوراق بيانات

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

ما هو التصميم الجيد لقاعدة البيانات؟

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

يؤدي التصميم الجيد لقاعدة البيانات إلى ما يلي:

  • تقسيم المعلومات إلى جداول منفصلة مستندة إلى مواضيع لتقليل البيانات المكررة.
  • توفير المعلومات التي يتطلبها Access لربط المعلومات في جداول مع بعضها عند الحاجة.
  • يساعد على دعم وضمان دقة وتكامل المعلومات.
  • مواءمة متطلبات معالجة البيانات وإعداد التقارير.

عملية التصميم

تتكون عملية التصميم من الخطوات التالية:

  • تحديد الغرض من قاعدة البيانات

يساعد ذلك في التجهيز للخطوات القادمة.

  • العثور على المعلومات المطلوبة وتنظيمها

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

  • تقسيم المعلومات إلى جداول

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

  • تحويل عناصر المعلومات إلى أعمدة

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

  • تعيين مفاتيح أساسية

اختر مفتاح أساسي لكل جدول. يعتبر المفتاح الأساسي هو عمود يُستخدم في تعريف كل صف بشكل فريد، مثل “معرّف المنتج” أو “معرّف الطلب”.

  • إعداد علاقات الجدول

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

  • تنقية التصميم

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

  • تطبيق قواعد التسوية

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

تحديد الغرض من قاعدة البيانات

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

العثور على المعلومات المطلوبة وتنظيمها

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

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

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

تخيل تقرير مخزون المنتجات

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

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

من المستحسن أن تقوم بإنشاء نموذج أولي لكل تقرير أو قائمة إخراج وأن تضع في اعتبارك العناصر التي ستحتاجها لإنشاء التقرير. على سبيل المثال، عند اختبار رسالة نموذجية، يخطر على الذهن أشياء قليلة. إذا أردت تضمين تحية مناسبة  — مثل “السيد” أو “السيدة” أو “الآنسة”. تؤدي السلسلة التي تبدأ بالتحية إلى إنشاء عنصر تحية. كما يجب بشكل عام بدء الرسالة بـ “عزيزي السيد عمرو”، أو “عزيزي السيد عمرو زكي”. مما يؤدي إلى تخزين اسم العائلة منفصلاً عن الاسم الأول بشكلٍ عام.

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

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

بعد تجميع هذه المعلومات، تكون مستعداً للخطوة التالية.

تقسيم المعلومات إلى جداول

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

تقسيم عناصر معلومات مكتوبة بخط اليد إلى مواضيع

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

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

صورة تعرض جدول يتضمن المنتجات والموردين كلاهما

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

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

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

أخيراً، افترض أن هناك منتج واحد فقط يدعمه “أسامة شبانة”، وأردت حذف المنتج والإبقاء على المعلومات الخاصة باسم المورد وعنوانه. كيف يمكنك حذف سجل المنتج بدون فقدان بيانات المورد؟ لا يمكنك ذلك نظراً لاحتواء كل سجل على حقائق عن المنتج والمورد أيضاًَ. لا يمكنك حذف واحد دون حذف الآخر. للإبقاء على هذه الحقائق منفصلة، يجب تقسيم الجدول الواحد إلى جدولين: يضم الأول معلومات حول المنتج والثاني يضم معلومات حول المورد. وبذلك فإن حذف سجل المنتج يؤدي إلى حذف الحقائق حول المنتج فقط، دون الحقائق حول المورد.

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

تحويل عناصر المعلومات إلى أعمدة

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

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

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

توضح القائمة التالية عدداً من التلميحات حول تحديد الأعمدة.

  • لا تقم بتضمين بيانات محسوبة

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

  • تخزين المعلومات في أجزاء منطقية صغيرة

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

قائمة بعناصر المعلومات أثناء عملية التصميم

بمجرد أن تتم تنقية أعمدة البيانات في كل جدول, اختر المفتاح الأساسي لكل جدول.

تعيين مفاتيح أساسية

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

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

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

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

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

إذا لم يكن حاضراً في ذهنك اسم عموداً أو مجموعة أعمدة تصلح كمفاتيح أساسية جيدة, فكر في استخدام العمود الذي يستخدم نوع البيانات “ترقيم تلقائي”. عند استخدام نوع البيانات “ترقيم تلقائي”، يُعين Access قيمةً تلقائياً. هذا المعرِّف غير حقيقي؛ فهو يحتوي على معلومات غير حقيقية لوصف الصف الذي يمثله. ويفضل استخدام المعرّفات غير الحقيقية كمفتاح أساسي لأن قيمها لا تتغير. المفتاح الأساسي الذي يحتوي على معلومات حقيقة حول الصف ـــــ على سبيل المثال, رقم التليفون أو اسم العميل ــــــ من المحتمل أن يتغير, لأن المعلومات الحقيقية نفسها قد تتغير.


صورة تعرض جدول المنتجات متضمناً حقل مفتاح أساسي.

وسيلة الشرح 1 تصلح الأعمدة التي تم تعيينها إلى نوع البيانات “رقم تلقائي” كمفاتيح أساسية جيدة, لأنها تضمن عدم وجود معرّفات منتجات متشابهة.

قد تستخدم في بعض الحالات حقلين أو أكثر معاً لتوفير مفتاح أساسي للجدول. على سبيل المثال, قد يستخدم جدول “تفاصيل الطلبات”، الذي يخزن عناصر خطية للطلبات، عمودين لمفتاحه الأساسي: هما معرّف الطلب ومعرّف المنتج. عندما يستخدم المفتاح الأساسي أكثر من عمود واحد يسمى مفتاحا مركبا.

في قاعدة بيانات مبيعات المنتجات، يمكنك إنشاء عمود “ترقيم تلقائي” كمفتاح أساسي لكل من الجداول: العمود “معرّف-المنتج” لجدول “المنتجات”، والعمود “معرّف-الطلب” لجدول “الطلبات”، والعمود “معرّف-العميل” لجدول “العملاء”، والعمود “معرّف-المورد” لجدول “الموردون”.

صورة تعرض عناصر المعلومات أثناء عملية التصميم

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

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


النموذج طلبات

وسيلة الشرح 1 تأتي المعلومات في هذا النموذج من جدول “العملاء”…
وسيلة الشرح 2 …وجدول “الموظفون”…
وسيلة الشرح 3 …وجدول “الطلبات”…
وسيلة الشرح 4 …وجدول “المنتجات”…
وسيلة الشرح 5 …وجدول”تفاصيل الطلبات”.

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

إنشاء علاقة رأس بأطراف

راجع هذا المثال: جداول “الموردون” و”المنتجات” في قاعدة بيانات طلبات المنتجات. يمكن لمورد واحد تقديم أي عدد من المنتجات. وتبعاً لذلك يمكن أن يقابل كل مورد موجود في جدول “الموردون” عدة منتجات في جدول “المنتجات”. وهكذا تكون العلاقة بين جدولي “الموردون” وجدول “المنتجات” هي علاقة رأس بأطراف.

مفهوم علاقة الرأس بالأطراف

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

يسمى العمود “معرّف المورد” في جدول “المنتجات” مفتاح خارجي. يعد المفتاح الخارجي هو مفتاحاً اساسياً آخر للجدول. ولذلك يعتبر العمود “معرّف المورد” مفتاحاً خارجياً في جدول “المنتجات” وأساسي أيضاً في جدول “الموردون”.

قائمة بعناصر المعلومات أثناء عملية التصميم

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

إنشاء علاقة أطراف بأطراف

فكر في العلاقة بين جدول “المنتجات” وجدول “الطلبات”.

قد يتضمن طلب واحد أكثر من منتج. على الجانب الآخر, يمكن أن يظهر منتج واحد في عدة طلبات. ولذلك، قد يكون لكل سجل في جدول “الطلبات” عدة سجلات في جدول “المنتجات”. وقد يكون أيضاً لكل سجل في جدول “المنتجات” عدة سجلات في جدول “الطلبات”. يسمى هذا النوع من العلاقات علاقة أطراف بأطراف، حيث يكون لأي منتج عدة طلبات؛ ويكون لأي طلب عدة منتجات. لاحظ أنه من المهم لاكتشاف علاقات أطراف بأطراف بين الجداول أن تضع جانبي العلاقة في الاعتبار.

تتضمن مواضيع الجدولين  — الطلبات والمنتجات — علاقة أطراف بأطراف مما يؤدى إلى ظهور مشكلة. لإدراك هذه المشكلة تخيل أنك تحاول إنشاء علاقة بين الجدولين بإضافة الحقل “معرّف المنتج” إلى جدول “الطلبات”. تحتاج للحصول على عدة منتجات لكل أمر لأكثر من سجل واحد في جدول “الطلبات” لكل أمر. قد تتكرر معلومات الأمر في كل صف مرتبط بأمر واحد — مما يتسبب في إنشاء تصميم غير فعال يقودك إلى بيانات غير دقيقة. ستقع في نفس هذه المشكلة إذا تم وضع الحقل “معرّف الطلب” في جدول “المنتجات” — قد تجد أكثر من سجل لكل منتج في جدول “المنتجات”. كيف يمكنك حل هذه المشكلة؟

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

علاقة أطراف بأطراف

يمثل كل سجل في جدول “تفاصيل الطلبات” بند سطر واحد في الطلب. يتكون المفتاح الأساسي لجدول “تفاصيل الطلبات” من حقلين  — المفاتيح الخارجية من جداول “الطلبات” و”المنتجات”. لا يعمل استخدام الحقل “معرّف الطلب” وحده مثل المفتاح الأساسي لهذا الجدول، لأنه يمكن أن يكون للطلب الواحد عناصر خطوط متعددة. يتم تكرار “معرّف الطلب” لكل بند سطر في الطلب، لا يتضمن الحقل قيم فريدة. وكذلك لا يعمل استخدام الحقل “معرّف المنتج” حيث يمكن ظهور منتج واحد في عدة طلبات مختلفة. ولكن دائماً ينتج الحقلان الاثنان معاً قيم فريدة لكل سجل.

في قاعدة بيانات مبيعات المنتج، لا يرتبط كل من جدول “الطلبات” وجدول “المنتجات” مباشرة. بدلاً من ذلك، يرتبطا بطريقة غير مباشرة من خلال جدول “تفاصيل الطلبات”. يتم تقديم علاقة أطراف بأطراف بين الطلبات والمنتجات في قاعدة البيانات باستخدام علاقتي رأس بأطراف:

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

من جدول “تفاصيل الطلبات”، يمكنك تحديد كافة المنتجات الموجودة ضمن طلب معين. يمكنك أيضاً تحديد كافة الطلبات الخاصة بمنتج معين.

بعد تضمين جدول “تفاصيل الطلبات”، يجب أن تظهر قائمة الجداول والحقول كما يلي:

قائمة بعناصر المعلومات أثناء عملية التصميم

إنشاء علاقة رأس برأس

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

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

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

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

تنقية التصميم

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

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

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

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

تنقية جدول “المنتجات”

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

افترض أنه بعد اختبار وتنقية تصميم قاعدة البيانات, قررت تخزين وصف الفئة واسمها. إذا تم إضافة حقل “وصف الفئة” إلى جدول “المنتجات”، يجب تكرار وصف كل فئة لكل منتج يقع أسفل هذه الفئة — لا يكون ذلك حلاً صحيحاً.

الحل الأفضل هو أن تنشئ موضوع “فئات” جديد في قاعدة البيانات لتعقبه وتعقب جدوله ومفتاحه الأساسي. يمكنك بعد ذلك إضافة مفتاح أساسي من الجدول “فئات” إلى جدول “المنتجات” كمفتاح خارجي.

يربط الجدولان “الفئات” و”المنتجات” علاقة رأس بأطراف: يمكن أن تتضمن الفئة أكثر من منتج واحد، بينما ينتمي كل منتج إلى فئة واحدة فقط.

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

  • معرّف المنتج
  • الاسم
  • معرّف المنتج 1
  • الاسم 1
  • معرّف المنتج 2
  • الاسم 2
  • معرّف المنتج 3
  • الاسم 3

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

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

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

كلما رأيت مجموعات متكررة راجع التصميم جيداً مع التأكد من تقسيم الجدول. في المثال السابق يكون من الأفضل استخدام جدولين أحدهما للموردين والآخر للمنتجات ويتم ربطهما بواسطة معرّف المورد.

تطبيق قواعد التسوية

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

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

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

النموذج العادي الأول

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

النموذج العادي الثاني

يتطلب النموذج العادي الثاني أن يعتمد كل عمود بلا مفتاح اعتماداً كلياً على المفتاح الأساسي بأكمله وليس جزءاً منه فقط. يتم تطبيق هذه القاعدة عندما يتكون المفتاح الأساسي من عدة أعمدة. على سبيل المثال، افترض أن هناك جدول يحتوي على الأعمدة التالية حيث يُكون “معرّف الطلب” و”معرّف المنتج” هما المفتاح الأساسي:

  • اسم معرّف الطلب
  • معرّف المنتج (مفتاح أساسي)
  • اسم المنتج

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

النموذج العادي الثالث

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

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

  • معرّف المنتج (مفتاح أساسي)
  • الاسم
  • SRP
  • الخصم

تعليق واحد على أساسيات تصميم قواعد البيانات ( Access – Office )

اكتب تعليق

*

Optimization WordPress Plugins & Solutions by W3 EDGE