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