مرحبًا بك عزيزنا الزائر لمدونة وادي التكنولوجيا | بالعربية، توفر لك قاعدة البيانات المصممة بشكل صحيح إمكانية الوصول إلى المعلومات بدقة كبيرة، لأن التصميم الصحيح يعد ضروريًا لتحقيق أهدافك في العمل مع قاعدة البيانات، واستثمار الوقت المطلوب لمعرفة مبادئ التصميم المنطقي الجيد سوف ينتج عنه على الأرجح أن تتوفر لك قاعدة بيانات تلبي احتياجاتك.
في هذه المقالة سوف نوفر لك إرشادات لتخطيط قاعدة بيانات سطح المكتب، ستتعرف على كيفية تحديد المعلومات التي تحتاج إليها، وكيفية تقسيم هذه المعلومات إلى الجداول والأعمدة المناسبة لها، وكيفية ارتباط هذه الجداول ببعضها البعض.
اقرأ أيضًا: شرح برنامج قواعد البيانات Microsoft Access 2021 للمبتدئين
هيا بنا نتعرف على أساسيات تصميم قواعد البيانات في مايكروسوفت أكسيس.
بعض المصطلحات الواجب معرفتها عن قاعدة البيانات
ينظم Access المعلومات الخاصة بك في جداول: وهي قوائم تحتوي على صفوف وأعمدة تشبه لوحة المحاسبة أو جدول البيانات، قد يكون لديك جدول واحد فقط في قاعدة بيانات بسيطة، وقد تحتاج إلى أكثر من جدول واحد في معظم قواعد البيانات.
على سبيل المثال، قد تحتاج إلى جدول يحتوي على معلومات حول المنتجات، وجدول آخر يحتوي على معلومات حول الطلبات، وجدول آخر يحتوى على معلومات حول العملاء.
ويسمى كل صف سجل بينما يسمى كل عمود حقل، ويعتبر السجل طريقة متناسقة ذات معنى لجمع معلومات حول شيء ما، بينما يعتبر الحقل عنصرًا واحدًا من المعلومات، وهو نوع العنصر الذي يظهر في كل سجل.
ففي جدول المنتجات، على سبيل المثال، يمكن أن يحتوي كل صف أو سجل على معلومات حول منتج واحد، ويحتوي كل عمود أو حقل على نوع من المعلومات حول المنتج، مثل الاسم أو السعر.
اقرأ أيضًا: كل ما تريد معرفته عن قواعد البيانات
ما المقصود بالتصميم الجيد لقاعدة البيانات؟
تقوم عملية تصميم قاعدة البيانات على بعض المبادئ، وهي كالتالي:
المبدأ الأول هو: أن المعلومات المتكررة (تسمى أيضاً البيانات الزائدة) غير صالحة، لأنها تهدر المساحة وتزيد من احتمالية الأخطاء وحالات عدم التناسق.
المبدأ الثاني هو: أن اكتمال المعلومات وصحتها يعد أمراً هاماً، فإذا كانت قاعدة البيانات تحتوي على معلومات غير صحيحة، فإن أي تقارير تقوم بسحب المعلومات من قاعدة البيانات ستحتوي أيضاً على معلومات غير صحيحة، ونتيجة لذلك، فإن أي قرارات تتخذها تستند إلى هذه التقارير ستكون مضللة.
بالتالي، فإن من سمات التصميم الجيد لقاعدة البيانات ما يلي:
- تقسيم المعلومات الخاصة بك في جداول قائمة على العناوين لتقليل البيانات المكررة.
- تزويد Access بالمعلومات التي يحتاج إليها لضم المعلومات في الجداول معاً، كما تقتضي الحاجة.
- يساعد ذلك على ضمان دقة البيانات وتكاملها ودعمها.
- تكييف احتياجاتك لمعالجة البيانات وإعداد التقارير.
عملية تصميم قواعد البيانات في مايكروسوفت أكسيس
تتكون عملية التصميم من الخطوات التالية:
- تحديد الغرض من قاعدة البيانات: ويساعدك هذا الأمر في التحضير للخطوات المتبقية.
- العثور على المعلومات المطلوبة وتنظيمها: قم بجمع كل أنواع المعلومات التي قد تحتاج إلى تسجيلها في قاعدة البيانات، مثل اسم المنتج ورقم الطلب.
- تقسيم المعلومات في جداول: قم بتقسيم عناصر المعلومات الخاصة بك إلى عناوين أو وحدات رئيسية، مثل المنتجات أو الطلبات، حيث يصبح كل عنوان جدولاً فيما بعد.
- تحويل عناصر المعلومات إلى أعمدة: حدد ما هي المعلومات التي تريد تخزينها في كل جدول، بحيث يصبح كل عنصر حقلاً ويتم عرضه كعمود في الجدول، على سبيل المثال: قد يتضمن جدول الموظفين حقولاً مثل "اسم العائلة" و"تاريخ التوظيف".
- تحديد المفاتيح الأساسية: اختر المفتاح الأساسي لكل جدول، يعتبر المفتاح الأساسي عمودًا يتم استخدامه لتعريف كل صف بشكل فريد، مثل: "معرف المنتج" أو "معرف الطلب".
- إعداد علاقات الجداول: راجع كل جدول وحدد كيفية ارتباط البيانات في جدولٍ ما بالبيانات الموجودة في الجداول الأخرى، قم بإضافة حقولاً إلى الجداول أو قم بإنشاء جداول جديدة لتوضيح العلاقات كما تقتضي الحاجة.
- تحسين التصميم الخاص بك: قم بتحليل التصميم الخاص بك بحثًا عن الأخطاء، قم بإنشاء الجداول وأضف بعض سجلات عينات البيانات، راجع ما إذا كان يمكنك الحصول على النتائج التي تريدها من الجداول أم لا، وقم بإجراء تعديلات في التصميم كما تقتضي الحاجة.
- تطبيق قواعد التسوية: قم بتطبيق قواعد تسوية البيانات لمعرفة ما إذا كانت الجداول الخاصة بك منظمة بشكل صحيح، وقم بإجراء تعديلات في الجداول كما تقتضي الحاجة.
هيا بنا نتعرف على خطوات عملية تصميم قواعد البييانات في أكسيس بشكل أكثر تفصيلاً.
تحديد الغرض من قاعدة البيانات الخاصة بك
إنها فكرة جيدة أن تكتب الغرض من قاعدة البيانات على الورق، فالغرض منها هو معرفة الطريقة التي تتوقع استخدامها بها والشخص الذي سيستخدمها.
فبالنسبة لقاعدة بيانات صغيرة لشركة تستند إلى العمل من المنزل، على سبيل المثال: قد تكتب شيئاً بسيطاً مثل "تحتفظ قاعدة بيانات العملاء بقائمة معلومات العميل لغرض يتعلق بإنتاج مراسلات البريد والتقارير".
أما إذا كانت قاعدة البيانات أكثر تعقيدًا أو تُستخدم بواسطة العديد من الأشخاص، ويحدث ذلك غالباً أثناء إعداد الشركة، يجب إنشاء بيان مهمة سهل به فقرة أو أكثر، ويجب أن يتضمن البيان طريقة وتوقيت استخدام كل شخص لقاعدة البيانات.
الفكرة هي أن يكون لديك بيان مهمة مطور بشكل جيد يمكن أن يُشار إليه من خلال عملية التصميم، ووجود بيان مثل هذا يساعدك في التركيز على أهدافك عندما تقوم باتخاذ القرارات.
تنظيم المعلومات المطلوبة والبحث عنها
للعثور على المعلومات المطلوبة وتنظيمها، ابدأ بالمعلومات الموجودة، على سبيل المثال: يمكنك تسجيل أوامر الشراء في دفتر ملاحظات أو الاحتفاظ بمعلومات العميل على النماذج الورقية في خزانة ملفات، قم بجمع هذه المستندات وأنشيء قائمة بكل نوع من أنواع المعلومات المعروضة.
أما إذا لم يكن لديك أي نماذج موجودة، فتخيل بدلا من ذلك أنه يجب عليك تصميم نموذج لتسجيل معلومات العميل، ما هي المعلومات التي ستضعها في النموذج؟ ما هي حقول التعبئة التي يمكنك إنشاؤها؟ حدد كل عنصر من هذه العناصر وصنفه.
على سبيل المثال، افترض أنك تحتفظ حاليًا بقائمة العملاء في بطاقات الفهرس، قد يظهر فحص هذه البطاقات أن كل بطاقة تحمل اسم عميل وعنوانه ومدينته ودولته ورقم هاتفه، مما يعني أن كل عنصر من هذه العناصر يعتبر عمودًا محتملاً في جدول.
أثناء إعدادك لهذه القائمة، لا تقلق بشأن إنجازها على أكمل وجه من المرة الأولى، وبدلاً من ذلك، قم بسرد كل عنصر يتبادر إلى ذهنك، وفي حالة استخدام شخص آخر لقاعدة البيانات، اطلب معرفة أفكاره أيضاً، ويمكنك ضبط القائمة في وقت لاحق.
بعد ذلك، يجب عليك التفكير في أنواع التقارير أو المراسلات البريدية التي قد ترغب في إنتاجها من قاعدة البيانات، على سبيل المثال: قد ترغب في أن يعرض تقرير مبيعات المنتج المبيعات حسب المنطقة، أو تقرير ملخص للمخزون يعرض مستويات مخزون المنتجات، وقد ترغب أيضا في إنشاء رسائل نموذج لإرسالها إلى العملاء الذين يعلنون عن حدث بيع أو يقدم عروض.
صمم التقرير في ذهنك، وتخيل كيف سيبدو، وما هي المعلومات التي تريد وضعها في التقرير؟ وافعل الشيء نفسه مع رسالة النموذج وأي تقرير آخر تتوقع إنشاؤه.
يساعدك تكوين فكرة حول التقارير ومراسلات البريد التي قد تريد إنشاؤها على تحديد العناصر التي ستحتاج إليها في قاعدة بياناتك، على سبيل المثال: افترض أنك مَنحت فرصة للعملاء للاشتراك أو إلغاء الاشتراك في تحديثات البريد الإلكتروني الدورية، و تريد طباعة قائمة بأسماء الأشخاص الذين اشتركوا فيها، لتسجيل هذه المعلومات يمكنك إضافة عمود "إرسال بريد إلكتروني" إلى جدول العملاء، ويمكنك تعيين الحقل إلى "نعم" أو "لا" لكل عميل.
وحتى تتمكن من إرسال رسائل البريد الإلكتروني إلى لعملاء هناك عنصر آخر يجب عليك تسجيله، فعندما تعلم أن العميل يريد تلقي رسائل البريد الإلكتروني، ستحتاج إلى معرفة عنوان البريد الإلكتروني الخاص به لإرسال الرسائل إليه، وبالتالي فإنك بحاجة إلى تسجيل عنوان البريد الإلكتروني لكل عميل.
من المنطقي إنشاء نموذج أولي لكل تقرير أو قائمة مخرجات والنظر في العناصر التي ستحتاجها لإنتاج التقرير، على سبيل المثال: عند فحص رسالة نموذجية، قد يتبادر إلى الذهن بعض الأمور مثل: هل تريد تضمين تحية مناسبة - على سبيل المثال غن كنت تريد أن تبدأ الرسالة بتحية كـ "السيد"، "السيدة" أو "الآنسة"، سيكون عليك إنشاء عنصر تحية، أيضًا، قد تبدأ الرسالة بعبارة "عزيزي الأستاذ أمان" بدلاً من "عزيزي الأستاذ مصطفى أمان"، يشير هذا إلى أنك قد ترغب عادةً في تخزين اسم العائلة بشكل منفصل عن الاسم الأول.
فالنقطة الأساسية التي يجب عليك تذكرها هي تقسيم كل معلومة إلى أجزاء أصغر مفيدة، ففيما يخص الاسم لكي تحصل على اسم العائلة بسهولة، ستقوم بتقسيم الاسم إلى قسمين: الاسم الأول واسم العائلة، حتى تتمكن من فرز تقرير بحسب اسم العائلة، فمن المفيد أن يكون اسم عائلة العميل مخزن بشكل منفصل.
بشكل عام، إذا أردت فرز تقرير أو البحث عنه أو حسابه أو تقديمه استناداً إلى عنصر المعلومات، يجب وضع هذا العنصر في الحقل الخاص به.
أيضًا، فكر في الأسئلة التي قد ترغب في أن تجيب عنها قاعدة البيانات، على سبيل المثال: ما هو عدد مبيعات المنتج المميز الذي قمت ببيعه الشهر الماضي؟ أين يعيش أفضل عملائك؟ من هو مورد المنتج الأكثر مبيعًا لديك؟ يساعدك توقع هذه الأسئلة في الوصول إلى عناصر إضافية لتسجيلها.
وبعد تجميع هذه المعلومات، ستكون جاهزاً للخطوة التالية.
تقسيم المعلومات في جداول
لتقسيم المعلومات إلى جداول، اختر الوحدات أو العناوين الرئيسية، على سبيل المثال: بعد البحث عن معلومات لقاعدة بيانات مبيعات المنتج وتنظيمها، قد تبدو القائمة الأولية مماثلة لما يلي:
تمثل الوحدات الرئيسية الموضحة هنا العميل والمنتجات والموردين والطلبات، وبالتالي فمن المنطقي أن تبدأ بهذه الجداول الأربعة: أحدهما للمعلومات حول المنتجات وآخر للمعلومات حول الموردين وآخر للمعلومات حول العملاء وآخر للمعلومات حول الطلبات.
وعلى الرغم من أن هذه البيانات ليست كافية لبناء قاعدة بيانات، لكنها نقطة بداية جيدة، فيمكنك متابعة تحسين هذه القائمة حتى تحصل على تصميم يعمل بشكل جيد.
بالطبع عند مراجعة بيانات هذه القائمة، قد تفكر في وضعها في جدول واحد بدلاً من الأربعة جداول الموضحة في الرسم التوضيحي السابق، ستتعلم هنا لماذا تعد هذه فكرة سيئة، ضع في اعتبارك لبعض الوقت الجدول المعروض هنا:
في هذه الحالة، يحتوى كل صف على معلومات حول المنتج والمورد الخاص به، حيث يمكنك الحصول على عدد كبير من المنتجات من المورد نفسه، لذلك سوف تكون مجبر على تكرار اسم المورد ومعلومات عن عنوانه عدة مرات، وهذا أمر مهدر لمساحة التخزين على الهارد ديسك.
لذا فإن تسجيل معلومات المورد مرة واحدة فقط في جدول موردين منفصل، ومن ثم ربط هذا الجدول بجدول "المنتجات"، يعد حلاً أفضل بكثير.
تتمثل المشكلة الثانية في جعل كل البيانات في جدول واحد كما هو موضح في الصورة السابقة، ماذا ستفعل إن كنت تحتاج إلى تعديل معلومات المورد؟ على سبيل المثال: افترض أنك تحتاج إلى تغيير العنوان الخاص بموردٍ ما، ولإنه يظهر في عدة أماكن بالجدول، فقد تقوم بتغيير العنوان في مكان ما بالجدول وتنسى تغييره في باقي الأماكن الأخرى.
لذا فتسجيل عنوان المورد في مكان واحد فقط يقوم بحل هذه المشكلة.
أيضًا، عند تصميم قاعدة البيانات الخاصة بك، حاول دائماً تسجيل كل معلومة مرة واحدة فقط، فإذا وجدت نفسك تكرر المعلومات نفسها في أكثر من مكان، مثل عنوان مورد معين، قم بوضع هذه المعلومات في جدول منفصل.
وأخيرًا، لنفترض أن هناك منتجًا واحدًا فقط تم توفيره بواسطة أحد الموردين، وأنت تريد حذف هذا المنتج، ولكن مع الاحتفاظ باسم هذا المورد ومعلومات العنوان، كيف يمكنك حذف سجل المنتج دون فقدان معلومات المورد أيضًا؟ للأسف لا يمكنك عمل ذلك.
بما أن كل سجل يحتوي على معلومات حول منتج، بالإضافة إلى معلومات حول مورد، فلا يمكنك حذف أحد هذه السجلات دون حذف الآخر، ولإبقاء هذه المعلومات منفصلة، يجب تقسيم البيانات إلى جدولين: جدول للحصول على معلومات المنتج، وآخر للحصول على معلومات المورد، وبهذه الطريقة يمكنك حذف بيانات منتج ما دون حذف بيانات المورد لهذا المنتج.
أيضًا، عند اختيارك للموضوع الذي يمثله جدول، يجب أن تخزن الأعمدة في هذا الجدول معلومات حول هذا الموضوع فقط، على سبيل المثال: يجب أن يخزن جدول المنتج المعلومات الخاصة بالمنتجات فقط، ونظرًا لأن عنوان المورد يمثل معلومات حول المورد وليس معلومات حول المنتج، فإنه ينتمي إلى جدول الموردين.
تحويل عناصر المعلومات إلى أعمدة
لتحديد الأعمدة في جدول، حدد المعلومات التي تحتاجها لتعقب العنوان المسجل في الجدول، على سبيل المثال: بالنسبة لجدول "العملاء"، تمثل البيانات التالية قائمة بداية جيدة للأعمدة:
- الاسم.
- العنوان.
- المدينة/الولاية/الرمز البريدي.
- إرسال بريد إلكتروني.
- التحية.
- عنوان البريد الإلكتروني.
يحتوي كل سجل في الجدول على مجموعة الأعمدة نفسها، حيث يمكنك تخزين معلومات الاسم والعنوان والمدينة/الولاية/الرمز البريدي وإرسال بريد إلكتروني والتحية لكل سجل، على سبيل المثال: يتضمن عمود العنوان عناوين العملاء، ويحتوي كل سجل على بيانات حول عميل واحد ويحتوى حقل "العنوان" على عنوان هذا العميل.
بعد تحديد مجموعة الأعمدة الأولى لكل جدول، يمكنك تحسين الأعمدة، على سبيل المثال: يُفضّل تخزين اسم العميل كعمودين منفصلين: الاسم الأول واسم العائلة، حيث يمكنك القيام بالفرز والبحث والفهرسة لتلك الأعمدة فقط، وبشكل مماثل، يتكون العنوان فعلياً من خمسة مكونات منفصلة هي؛ العنوان والمدينة والولاية والرمز البريدي والبلد/المنطقة، حيث يُعد ذلك مفيداً لتخزينها في أعمدة منفصلة.
فإذا كنت تريد إجراء بحث أو عملية فرز أو تصفية حسب الولاية، على سبيل المثال، فإنك تحتاج إلى معلومات الولاية المخزنة في عمود منفصل.
يجب عليك أيضاً مراعاة ما إذا كانت قاعدة البيانات تتضمن معلومات العنوان المحلي فقط أو العناوين الدولية أيضًا، على سبيل المثال: إذا كنت تخطط لتخزين العناوين الدولية، يُفضّل أن يكون لديك عمود الدولة، حيث يمكن لمثل هذا العمود احتواء الدول الأخرى، وبشكل مماثل، قد يكون "الرمز البريدي" أفضل بشكل أكبر إذا كنت تريد تخزين العناوين الدولية.
تعرض القائمة التالية بعض التلميحات لتحديد الأعمدة الخاصة بك:
- لا تتضمن البيانات المحسوبة: في معظم الحالات، يجب عدم تخزين نتيجة العمليات الحسابية في الجداول، وبدلاً من ذلك يمكنك جعل Access يقوم بإجراء العمليات الحسابية عندما تريد رؤية النتيجة، على سبيل المثال: لنفترض وجود تقرير "منتجات تحت الطلب" الذي يعرض الإجمالي الفرعي للوحدات التي تحت الطلب لكل فئة من المنتج في قاعدة البيانات، وعلى الرغم من ذلك لا توجد أي أعمدة للإجمالي الفرعي للوحدات التي تحت الطلب في أي جدول، فبدلاً من ذلك يتضمن جدول المنتجات عمود "وحدات تحت الطلب" الذي يقوم بتخزين الوحدات التي تحت الطلب لكل منتج، فباستخدام تلك البيانات يقوم Access بحساب الإجمالي الفرعي في كل مرة تقوم فيها بطباعة التقرير، لذلك يجب عدم تخزين الإجمالي الفرعي نفسه في جدول.
- تخزين المعلومات في أجزاء منطقية أصغر: قد تحتاج إلى حقل واحد للأسماء الكاملة أو لأسماء المنتجات إلى جانب أوصاف المنتج، فإذا قمت بدمج أكثر من نوع واحد من المعلومات في الحقل، فسيكون من الصعب استرداد المعلومات الفردية في وقت لاحق، لذلك حاول تقسِّم المعلومات إلى أجزاء منطقية؛ على سبيل المثال: قم بإنشاء حقول منفصلة للاسم الأول واسم العائلة أو لاسم المنتج وفئته ووصفه.
عندما تقوم بتحسين أعمدة البيانات في كل جدول، تصبح جاهزاً لاختيار المفتاح الأساسي لكل جدول.
تحديد المفاتيح الأساسية
يجب أن يتضمن كل جدول عمودًا أو مجموعة أعمدة تقوم بتعريف كل سجل مخزن في الجدول بشكل فريد، يعد هذا غالباً هو رقم المعرف الفريد، مثل رقم معرف موظف أو رقم تسلسلي، وفي مصطلحات قاعدة البيانات، تسمى هذه المعلومات المفتاح الأساسي للجدول، لذلك يستخدم Access حقول المفتاح الأساسي لإقران البيانات بشكل سريع مع الجداول المتعددة وجمع البيانات معًا بالنيابة عنك.
فإذا كان لديك معرف فريد لجدول، مثل رقم المنتج الذي يحدد كل منتج في الكتالوج بشكل فريد، يمكنك استخدام هذا المعرف كمفتاح أساسي للجدول، لكن فقط إذا كانت القيم في هذا العمود دائماً مختلفة لكل سجل، فلا يمكن وجود قيم مكررة في المفتاح الأساسي، على سبيل المثال: لا تستخدم أسماء الأشخاص كمفتاح أساسي لأن الأسماء غير فريدة، ويمكن بسهولة أن يكون لديك شخصان بنفس الاسم في نفس الجدول.
أيضًا، يجب توفير قيمة دائمًا للمفتاح الأساسي، فإذا كانت قيمة العمود غير معينة أو غير معروفة (قيمة مفقودة) في بعض الأحيان، فلا يمكن استخدامها كمكون في المفتاح الأساسي.
لذلك يجب أن تقوم دائماً باختيار مفتاح أساسي لن تتغير قيمته، يمكن استخدام المفتاح الأساسي للجدول كمرجع في الجداول الأخرى في قاعدة بيانات التي تستخدم أكثر من جدول، إذا تم تغيير المفتاح الأساسي، يجب تطبيق التغيير أيضاً في أي مكان تتم فيه الإشارة إلى هذا المفتاح، ويؤدي استخدام مفتاح أساسي لن يتغير إلى تقليل احتمالية عدم مزامنته مع جداول أخرى تشير إليه.
غالباً ما يتم استخدام رقم فريد عشوائي كمفتاح أساسي، على سبيل المثال: قد تقوم بتعيين رقم طلب فريد لكل طلب، فالغرض الوحيد لرقم الطلب هو تحديد الطلب، وبمجرد تعيينه لا يمكن تغييره.
فإذا لم يكن لديك عمود أو مجموعة من الأعمدة التي قد تشكل مفتاحًا أساسيًا جيدًا، ففكر في استخدام عمود به نوع بيانات "الترقيم التلقائي"، لأنك عند استخدام نوع بيانات "الترقيم التلقائي"، يقوم Access تلقائيًا بتعيين قيمة لك.
وذلك لأن هذا المعرف ليس له معلومات واقعية تصف الصف الذي يمثله، وتعتبر المعرفات الخالية من المعلومات مثالية للاستخدام كمفتاح أساسي لأنها لا تتغير، فالمفتاح الأساسي الذي يحتوي على معلومات حول الصف، على سبيل المثال رقم الهاتف أو اسم العميل، من المحتمل أن تتغير لأن المعلومات الحقيقية نفسها يمكن أن تتغير.
لذلك، غالباً ما يمكن استخدام العمود المعيَّن لنوع البيانات "ترقيم تلقائي" كمفتاح أساسي جيد، فلا يوجد معرفان متماثلان للمنتج.
وفي بعض الحالات، قد تحتاج إلى استخدام حقلين أو أكثر معًا لتوفير المفتاح الأساسي للجدول، على سبيل المثال: يمكن لجدول "تفاصيل الطلب" الذي يقوم بتخزين عناصر الطلبات باستخدام عمودين في المفتاح الأساسي الخاص به: معرف الطلب ومعرف المنتج، فعندما يستخدم المفتاح الأساسي أكثر من عمود، يسمى ذلك أيضاً بالمفتاح المركب.
بالنسبة لقاعدة بيانات مبيعات المنتج، يمكنك إنشاء عمود "ترقيم تلقائي" لكل جدول ليعمل كمفتاح أساسي: معرف المنتج لجدول المنتجات، ومعرف الطلب لجدول الطلبات، ومعرف العميل لجدول العملاء، ومعرف المورد لجدول الموردين.
إنشاء علاقات الجداول
بعد أن قمت بتقسيم المعلومات في جداول، تحتاج إلى طريقة لتجميع المعلومات مرة أخرى بطرق ذات معني، على سبيل المثال: يتضمن النموذج التالي معلومات من عدة جداول.
تأتي المعلومات في هذا النموذج من:
- جدول العملاء.
- جدول الموظفين.
- جدول الطلبات.
- جدول المنتجات.
- جدول تفاصيل الطلب.
نظام Access هو نظام إدارة قاعدة البيانات الارتباطية أو العلائقية، ففي قاعدة البيانات الارتباطية يمكنك تقسيم المعلومات في جداول منفصلة، وجداول قائمة على عناوين، ويمكنك بعد ذلك استخدام علاقات الجداول لجمع المعلومات معًا، إذا اقتضت الحاجة.
وأنواع العلاقات التي يمكنك إنشاؤها في نظام Access كالتالي:
1- إنشاء علاقة واحد إلى متعدد
ضع في اعتبارك هذا المثال: جداول المنتجات والموردين في قاعدة بيانات طلبات المنتج، يمكن لمورد معين توفير عدد من المنتجات المختلفة، ويترتب على ذلك، وجود العديد من المنتجات في جدول المنتجات لهذا المورد في جدول الموردين، وبالتالي تعتبر العلاقة بين جدول الموردين وجدول المنتجات علاقة واحد إلى متعدد.
ولإنشاء علاقة واحد إلى متعدد في تصميم قاعدة البيانات، استخدم المفتاح الأساسي الموجود في عامود "رقم معرف المورد" وقم بإضافته كعمود إضافي أو أعمدة إضافية إلى جدول "المنتجات"، بعد ذلك سيتمكّن Access من استخدام رقم معرّف المورد في جدول المنتجات لتحديد موقع المورد الصحيح لكل منتج.
ويسمى عامود "رقم معرف المورد" في جدول "المنتجات" بالمفتاح الخارجي، والمفتاح الخارجي هو مفتاح أساسي لكن لجدول آخر، ويعتبر عامود "رقم معرف المورد" في جدول "المنتجات" بالمفتاح الخارجي لإنه يعد أيضًا المفتاح الأساسي في جدول "الموردين".
أنت توفر الأساس للانضمام إلى الجداول المرتبطة عن طريق إنشاء المفاتيح الأساسية والمفاتيح الخارجية، فإذا لم تكن متأكدًا من الجداول التي يجب أن تشترك في عمود عام، فإن تحديد علاقة واحد إلى متعدد يضمن أن الجدولين المعنيين سيتطلبان بالفعل عمودًا مشتركًا.
2- إنشاء علاقة متعدد إلى متعدد
ضع في اعتبارك العلاقة بين جدول المنتجات وجدول الطلبات.
قد يتضمن طلب شراء واحد أكثر من منتج، وعلى الجانب الآخر يمكن أن يظهر منتج واحد في عدة طلبات شراء، لذلك يمكن أن يكون لكل سجل في جدول "الطلبات" عدة سجلات في جدول "المنتجات"، والعكس صحيح أيضًا، ويسمى هذا النوع من العلاقة علاقة متعدد إلى متعدد لأنه يمكن أن يكون لأي منتج العديد من الطلبات، ولأي طلب العديد من المنتجات.
وتتضمن عناوين الجدولين، الطلبات والمنتجات، علاقة واحد إلى متعدد، ويمثل ذلك مشكلة، ولفهم المشكلة، تخيل ماذا سيحدث إذا حاولت إنشاء علاقة بين جدول الطلبات وجدول المنتجات بإضافة حقل رقم معرف المنتج إلى جدول الطلبات، وذلك للحصول على أكثر من منتج لكل طلب، ستجد أنك تقوم بإضافة أكثر من سجل في جدول الطلبات لكل طلب، ما ينتج عن ذلك تصميم غير فعال قد يؤدي إلى بيانات غير صحيحة.
كيف يمكنك حل هذه المشكلة؟
الحل هو إنشاء جدول ثالث، يسمى غالباً جدول التوصيل حيث تقوم بتقسيم علاقة متعدد إلى متعدد إلى علاقتيّ واحد إلى متعدد، فيمكنك إدراج المفتاح الأساسي من كل من الجدولين في الجدول الثالث، ونتيجة لذلك يقوم الجدول الثالث بتسجيل كل تكرار أو مثيل للعلاقة.
يمثل كل سجل في جدول "تفاصيل الطلب" بندًا واحدًا في أحد الطلبات، ويتكون المفتاح الأساسي لجدول "تفاصيل الطلب" من حقلين: المفاتيح الخارجية من جدول "الطلبات" وجدول "المنتجات"، ولا يعمل استخدام حقل رقم معرّف الطلب وحده كمفتاح أساسي لهذا الجدول، لأن الطلب الواحد يمكن أن يحتوي على العديد من البنود، ويتكرر رقم معرّف الطلب لكل بند في أحد الطلبات، لذلك لا يحتوي الحقل على قيم فريدة.
كما أن استخدام حقل رقم معرّف المنتج وحده لا يعمل أيضًا، لأن منتجًا واحدًا يمكن أن يظهر في العديد من الطلبات المختلفة، ولكن عند دمج الحقلين معاً، ينتج الحقلين دائمًا قيمة فريدة لكل سجل.
في قاعدة بيانات مبيعات المنتج، لا يرتبط جدول الطلبات وجدول المنتجات ببعضهما البعض بشكل مباشر، وبدلاً من ذلك فهما مرتبطان بشكل غير مباشر من خلال جدول "تفاصيل الطلب"، فيتم تمثيل علاقة متعدد إلى متعدد بين الطلبات والمنتجات في قاعدة البيانات باستخدام علاقة واحد إلى متعدد:
- يحتوى جدول الطلبات وجدول تفاصيل الطلب على علاقة واحد إلى متعدد، يمكن أن يكون لكل طلب أكثر من عنصر سطر، لكن كل عنصر يتصل بطلب واحد فقط.
- يحتوى جدول "المنتجات" وجدول "تفاصيل الطلب" على علاقة واحد إلى متعدد، قد يكون لكل منتج العديد من العناصر المرتبطة به، لكن يشير كل عنصر إلى منتج واحد فقط.
من جدول "تفاصيل الطلب"، يمكنك تحديد كل المنتجات الموجودة في طلب محدد، ويمكنك أيضاً تحديد كل الطلبات الخاصة بمنتج محدد.
وبعد تضمين جدول "تفاصيل الطلب"، قد تبدو قائمة الجداول والحقول مماثلة لما يلي:
نوع آخر من العلاقات هو علاقة واحد إلى واحد، على سبيل المثال: افترض أنك بحاجة إلى تسجل بعض معلومات المنتج الإضافية الخاصة التي ستحتاج إليها نادرًا أو التي تنطبق فقط على منتجات قليلة، يمكنك وضعها في جدول منفصل لأنك لا تحتاج هذه المعلومات بشكل متكرر، ولأنه يمكن أن ينتج عن تخزين المعلومات في جدول المنتجات مساحة فارغة لكل منتج لا تنطبق عليه.
لذلك، يمكننا وضع هذه البيانات في جدول منفصل باسم جدول "تكميلي" كما فعلنا في جدول المنتجات، ويمكنك استخدام رقم معرف المنتج كمفتاح أساسي في هذا الجدول، وتعتبر العلاقة بين هذا الجدول التكميلي وجدول المنتج علاقة واحد إلى واحد، فلكل سجل في جدول المنتجات، يوجد سجل مطابق واحد في الجدول التكميلي، وعند تحديد علاقة مثل هذه، يجب أن يشترك كلا الجدولين في حقل مشترك.
عندما تكتشف الحاجة إلى علاقة واحد إلى واحد في قاعدة البيانات الخاصة بك، ضع في اعتبارك ما إذا كان يمكنك وضع المعلومات من الجدولين معًا في جدول واحد، وإذا كنت لا ترغب في القيام بذلك لسبب ما، ربما لأنه سينتج عنه الكثير من المساحات الفارغة، فإن القائمة التالية توضح كيف ستمثل العلاقة في تصميمك:
- إذا كان للجدولين العنوان نفسه، يمكنك على الأرجح إعداد العلاقة باستخدام المفتاح الأساسي نفسه في الجدولين.
- إذا كان للجدولين عناوين مختلفة بمفاتيح أساسية مختلفة، فاختر أحد الجدولين وقم بإدراج المفتاح الأساسي الخاص به في الجدول الآخر كمفتاح خارجي.
يساعدك تحديد العلاقات بين الجداول على ضمان حصولك على الجداول والأعمدة الصحيحة، فعند وجود علاقة واحد إلى واحد أو واحد إلى متعدد، يجب مشاركة الجداول المضمنة لعمود أو أعمدة مشتركة، وعند وجود علاقة متعدد إلى متعدد، يجب توفير جدول ثالث لتمثيل العلاقة.
تحسين التصميم
عند حصولك على الجداول والحقول والعلاقات التي تحتاج إليها، يجب إنشاء وتعبئة الجداول الخاصة بك بالبيانات النموذجية ومحاولة استخدام المعلومات: إنشاء استعلامات وإضافة سجلات جديدة وهكذا، ويساعدك هذا الأمر على تمييز المشاكل المحتملة، على سبيل المثال: قد تحتاج لإضافة عمود قد نسيت إدراجه أثناء مرحلة التصميم أو قد يكون لديك جدول يجب تقسيمه إلى جدولين لإزالة النسخ المتماثلة.
تعرف على ما إذا كان يمكنك استخدام قاعدة البيانات للحصول على الحلول التي تريدها، قم بإنشاء مسودات للنماذج والتقارير وراجع ما إذا كانت تعرض البيانات المتوقعة، أيضًا قم بالبحث عن تكرار البيانات غير الضرورية، وعند العثور على أي منها، قم بتعديل التصميم للتخلص منها.
عند محاولة تجربة قاعدة البيانات الأولية، ستكتشف على الأرجح إمكانية للتحسين، فيما يلي بعض الأمور التي يجب التحقق منها:
- هل نسيت أي أعمدة؟ إذا كان الأمر كذلك، فهل المعلومات تنتمي إلى الجداول الموجودة؟ إذا كانت معلومات حول شيء آخر، فقد تحتاج إلى إنشاء جدول جديد، أنشئ عمودًا لكل عنصر معلومات تحتاج إلى تعقبه، وإذا لم يكن من الممكن حساب المعلومات من أعمدة أخرى، فمن المرجح أنك ستحتاج إلى عمود جديد لها.
- هل هناك أي أعمدة غير ضرورية لأنه يمكن حسابها من الحقول الموجودة؟ إذا كان من الممكن حساب عنصر معلومات من أعمدة أخرى موجودة،على سبيل المثال: سعر محسوب بخصم من سعر البيع بالتجزئة — فمن الأفضل القيام بذلك فقط وتجنب إنشاء عمود جديد.
- هل تقوم بشكل متكرر بإدخال معلومات مكررة في أحد الجداول؟ إذا كان الأمر كذلك، فقد تحتاج إلى تقسيم الجدول إلى جدولين تربط بينهما علاقة واحد إلى متعدد.
- هل لديك جداول ذات حقول عديدة وعدد محدود من السجلات والعديد من الحقول الفارغة في سجلات فردية؟ إذا كان الأمر كذلك، فكر في إعادة تصميم الجدول بحيث يكون فيه عدد أقل من الحقول والمزيد من السجلات.
- هل تم تقسيم كل عنصر معلومات إلى أصغر أجزائه المفيدة؟ إذا كنت بحاجة إلى الإبلاغ عن عنصر معلومات أو فرزه أو البحث عنه أو حسابه، فضع هذا العنصر في عموده الخاص.
- هل يحتوي كل عمود على معلومات حول موضوع الجدول؟ إذا لم يتضمن أحد الأعمدة معلومات حول موضوع الجدول، فإنه ينتمي إلى جدول آخر.
- هل يتم تمثيل كل العلاقات بين الجداول، إما بواسطة حقول مشتركة أو جدول ثالث؟ تتطلب العلاقات واحد إلى واحد وعلاقة واحد إلى متعدد أعمدة مشتركة، وتتطلب علاقات متعدد إلى متعدد جدولاً ثالثًا.
تحسين جدول المنتجات
لنفترض أن كل منتج في قاعده بيانات مبيعات المنتجات يقع ضمن فئة عامة، مثل أجهزة كمبيوترأو لابتوب أو شاشات، يمكن أن يتضمن جدول "المنتجات" حقلاً يعرض فئة كل منتج.
ثم افترض أنه بعد فحص تصميم قاعدة البيانات وتحسينها، قررت تخزين وصف للفئة مع اسمها، فإذا قمت بإضافة حقل وصف الفئة إلى جدول "المنتجات"، فيجب عليك تكرار وصف كل فئة لكل منتج يقع ضمن الفئة، وهذا ليس حلاً جيدًا.
الحل الأفضل هو وضع الفئات في جدول جديد لقاعدة البيانات لتعقبها، مع الجدول الخاص بها والمفتاح الأساسي الخاص بها، ثم يمكنك بعد ذلك إضافة المفتاح الأساسي من جدول "الفئات" إلى جدول "المنتجات" كمفتاح خارجي.
وترتبط جداول الفئات والمنتجات بعلاقة واحد إلى متعدد، لأنه يمكن أن تتضمن الفئة أكثر من منتج واحد، ولكن يمكن أن ينتمي المنتج إلى فئة واحدة فقط.
وعند مراجعة هياكل الجداول الخاصة بك، احترس من تكرار المجموعات، على سبيل المثال: افترض أن لديك جدول يحتوي على الأعمدة التالية:
- رقم معرّف المنتج
- الاسم
- رقم معرّف المنتج 1
- الاسم 1
- رقم معرّف المنتج 2
- الاسم 2
- رقم معرّف المنتج 3
- الاسم 3
هنا كل منتج عبارة عن مجموعة متكررة من الأعمدة التي تختلف عن الآخرين فقط عن طريق إضافة رقم إلى نهاية اسم العمود، لذلك عندما ترى أعمدة مرقمة بهذه الطريقة، يجب عليك أن تعيد النظر في تصميمك.
فمثل هذا التصميم به عيوب عديدة، بالنسبة للمبتدئين يجبرك هذا الأمر على وضع حد أعلى لعدد المنتجات، وبمجرد تجاوز هذا الحد ، يجب إضافة مجموعة جديدة من الأعمدة إلى بنية الجدول، وهي مهمة إدارية رئيسية.
هناك مشكلة أخرى وهي أن الموردين الذين لديهم أقل من الحد الأقصى لعدد المنتجات سوف يضيعون بعض المساحة، لأن الأعمدة الإضافية ستكون فارغة، والمشكلة الأكثر خطورة في مثل هذا التصميم هو أنه يجعل العديد من المهام صعبة التنفيذ، مثل فرز الجدول أو فهرسته بواسطة رقم معرف المنتج أو اسمه.
لذلك، كلما رأيت مجموعات متكررة، قم بمراجعة التصميم عن كثب مع التركيز على تقسيم الجدول إلى قسمين، ففي المثال أعلاه من الأفضل استخدام جدولين: أحدهما للموردين والآخر للمنتجات، ومرتبطين بواسطة رقم معرف المورد.
تطبيق قواعد التسوية
يمكنك تطبيق قواعد تسوية البيانات (تسمى أحيانًا قواعد التسوية فقط) كخطوة تالية في التصميم الخاص بك، فيمكنك استخدام هذه القواعد لمعرفة ما إذا كانت الجداول الخاصة بك منظمة بشكل صحيح أم لا، وتسمى عملية تطبيق القواعد على تصميم قاعدة البيانات بتسوية قاعدة البيانات، أو التسوية فقط.
تكون التسوية مفيدة للغاية بعد أن تكون قد قمت بتمثيل كافة عناصر المعلومات ووصولك إلى تصميم أولي، تساعدك هذه الفكرة على التأكد من تقسيم عناصر المعلومات الخاصة بك إلى جداول مناسبة، وما لا يمكن لقواعد التسوية القيام به هو التأكد من أن لديك جميع عناصر البيانات الصحيحة لتبدأ بها.
قم بتطبيق القواعد على التوالي مع التأكد في كل خطوة أن التصميم قد وصل إلى ما يعرف باسم "النماذج العادية"، ويتم قبول خمسة أشكال من النماذج العادية على نطاق واسع، وهي من النموذج العادي الأول وصولاً إلى النموذج العادي الخامس، ونحن في هذه المقالة سنقوم بشرح أول ثلاثة نماذج لأن جميعها مطلوبة لمعظم تصميمات قاعدة البيانات.
النموذج العادي الأول
ينص النموذج العادي الأول على أنه في كل تقاطع صف وعمود في الجدول، توجد قيمة واحدة فقط، وليس قائمة قيم على الإطلاق، على سبيل المثال: لا يمكن أن يكون لديك حقل يسمى "السعر" تضع فيه أكثر من سعر، فإذا فكرت في كل تقاطع من الصفوف والأعمدة كخلية، يمكن لكل خلية الاحتفاظ بقيمة واحدة فقط.
النموذج العادي الثاني
يتطلب النموذج العادي الثاني أن يعتمد كل عمود ليس به مفتاح بشكل كامل على المفتاح الأساسي بالكامل، وليس على جزء من المفتاح فقط، وتنطبق هذه القاعدة عندما يكون لديك مفتاح أساسي يتكون من أكثر من عمود واحد، على سبيل المثال: افترض أن لديك جدولاً يحتوي على الأعمدة التالية، حيث يشكل رقم معرف الطلب ورقم معرف المنتج المفتاح الأساسي:
- رقم معرف الطلب (المفتاح الأساسي)
- رقم معرف المنتج (المفتاح الأساسي)
- اسم المنتج
ينتهك هذا التصميم النموذج العادي الثاني، لأن "اسم المنتج" يعتمد على "رقم معرّف المنتج"، وليس على "رقم معرّف الطلب"، لذا فهو لا يعتمد على المفتاح الأساسي بأكمله، ويجب عليك إزالة "اسم المنتج" من الجدول، لأنه ينتمي إلى جدول مختلف وهو جدول "المنتجات".
النموذج العادي الثالث
يتطلب النموذج العادي الثالث ألا يعتمد كل عمود ليس له مفتاح فقط على المفتاح الأساسي بأكمله، بل يتطلب أن تكون الأعمدة غير الرئيسية مستقلة عن بعضها البعض.
وهناك طريقة أخرى لقول ذلك وهي: أن كل عمود ليس به مفتاح يجب أن يعتمد على المفتاح الأساسي وليس شيئًا سوى المفتاح الأساسي، على سبيل المثال: افترض أن لديك جدولاً يحتوي على الأعمدة التالية:
- رقم معرف المنتج (المفتاح الأساسي)
- الاسم
- سعر البيع بالتجزئة المقترح
- الخصم
لنفترض أن الخصم يعتمد على سعر التجزئة المقترح، ينتهك هذا الجدول النموذج العادي الثالث لأن العمود بدون مفتاح، وهو الخصم ، يعتمد على عمود آخر بدون مفتاح، وهو سعر البيع بالتجزئة المقترح، وتعني استقلالية العمود أنه يجب أن تكون قادرًا على تغيير أي عمود ليس به مفتاح دون التأثير على أي عمود آخر، فإذا قمت بتغيير قيمة في حقل سعر البيع بالتجزئة المقترح، فسيتغير الخصم وفقًا لذلك، وبالتالي ينتهك هذا الأمر لهذه القاعدة، وفي هذه الحالة يجب نقل الخصم إلى جدول آخر يتم إدخاله في سعر البيع بالتجزئة المقترح.
في النهاية، نتمنى أن نكون قد أضفنا لكم معلومة جديدة ومفيدة، وفي حالة وجود أي استفسارات لا تترددوا في ذكرها لنا في التعليقات وسوف نقوم بالتواصل معكم والرد على استفساراتكم.
إضافة تعليق