Skip to main content

هل أنت جعل هذه اخطاء بسيطة مع تصميم قاعدة البيانات الخاصة بك؟

الصيغ والاخطاء | formula | قناة A-Soft التعليمية (يونيو 2025)

الصيغ والاخطاء | formula | قناة A-Soft التعليمية (يونيو 2025)
Anonim

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

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

خطأ في قاعدة البيانات # 1: تكرار الحقول في جدول

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

لحسن الحظ ، عادةً ما تكون الحقول المتكررة سهلة التمييز. مجرد إلقاء نظرة على هذا الجدول:

رقم التعريف الخاص بالطلبProduct1PRODUCT2Product3
1دمى الدببةجيلي بينز
2جيلي بينز

ماذا يحدث عندما يحتوي الطلب على أربعة منتجات؟ سنحتاج إلى إضافة حقل آخر إلى الجدول لدعم أكثر من ثلاثة منتجات. وإذا قمنا بإنشاء تطبيق عميل حول الطاولة لمساعدتنا على إدخال البيانات ، فقد نحتاج إلى تعديلها مع حقل المنتج الجديد. وكيف نجد جميع الطلبات مع Jellybeans في الترتيب؟ سنضطر إلى الاستعلام عن كل حقل منتج في الجدول باستخدام عبارة SQL التي قد تبدو: SELECT * FROM المنتجات WHERE Product1 = 'Jelly Beans' أو Product2 = 'Jelly Beans' أو Product3 = 'Jelly Beans'.

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

رقم التعريف الخاص بالطلبهوية الزبونتاريخ الطلبمجموع
171/24/1719.99
291/25/1724.99

معرف المنتجالمنتجعد
1دمى الدببة1
2جيلي بينز100

ProductOrderIDمعرف المنتجرقم التعريف الخاص بالطلب
10111
10221

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

خطأ في قاعدة البيانات # 2: تضمين جدول في جدول

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

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

SalesIDأولالاخيرعنوانرقم الهاتفمكتب. مقر. مركزرقم المكتب
1سامإليوت118 Main St، Austin، TX(215) 555-5858أوستن وسط المدينة(212) 421-2412
2أليسحداد504 2nd Street، New York، NY(211) 122-1821نيويورك (الشرق)(211) 855-4541
3جوأبرشية428 Aker St، Austin، TX(215) 545-5545أوستن وسط المدينة(212) 421-2412

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

SalesIDأولالاخيرعنوانرقم الهاتفOfficeID
1سامإليوت118 Main St، Austin، TX(215) 555-58581
2أليسحداد504 2nd Street، New York، NY(211) 122-18212
3جوأبرشية428 Aker St، Austin، TX(215) 545-55451

OfficeIDمكتب. مقر. مركزرقم المكتب
1أوستن وسط المدينة(212) 421-2412
2نيويورك (الشرق)(211) 855-4541

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

خطأ في قاعدة البيانات رقم 3: وضع اثنين أو أكثر من المعلومات في حقل واحد

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

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

إليك ما يجب أن يبدو عليه الجدول:

SalesIDأولالاخيرالعنوان 1العنوان 2مدينةحالةالرمز البريديهاتف
1سامإليوت118 ش الرئيسي أوستينTX787202155555858
2أليسحداد504 2nd St نيويوركNY100222111221821
3جوأبرشية428 شارع عكرشقة 304أوستينTX787162155455545

هناك بعض الأشياء التي يجب ملاحظتها هنا.أولاً ، يبدو أن "Address1" و "Address2" يقعان تحت خطأ الحقول المتكررة.

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

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

خطأ في قاعدة البيانات # 4: عدم استخدام مفتاح أساسي صحيح

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

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

وهذه هي مشكلة استخدام المعلومات الفعلية كقيمة أساسية. يمكن أن تتغير.

خطأ قاعدة البيانات # 5: عدم استخدام اتفاقية التسمية

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

فقط تخيل مدى الصعوبة التي ستكون عليها هذه العملية إذا تم تخزين الأسماء كـ FirstName ، LastName في جدول واحد و first_name ، last_name في جدول آخر.

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

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

لا تعتبر اصطلاح التسمية الذي تختاره بنفس أهمية عملية الاختيار والتقيّد باتفاقية التسمية.

خطأ في قاعدة البيانات # 6: الفهرسة غير لائق

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

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

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