الأخطاء الشائعة في تصميم قواعد البيانات

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

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

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

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

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

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

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

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

رقم التعريف الخاص بالطلب هوية الزبون تاريخ الطلب مجموع
1 7 1/24/17 19.99
2 9 1/25/17 24.99
معرف المنتج المنتج عد
1 دمى الدببة 1
2 جيلي بينز 100
ProductOrderID معرف المنتج رقم التعريف الخاص بالطلب
101 1 1
102 2 1

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

خطأ في قاعدة البيانات # 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-5858 1
2 أليس حداد 504 2nd Street، New York، NY (211) 122-1821 2
3 جو أبرشية 428 Aker St، Austin، TX (215) 545-5545 1
OfficeID مكتب. مقر. مركز رقم المكتب
1 أوستن وسط المدينة (212) 421-2412
2 نيويورك (الشرق) (211) 855-4541

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

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

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

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

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

SalesID أول الاخير العنوان 1 العنوان 2 مدينة حالة الرمز البريدي هاتف
1 سام إليوت 118 ش الرئيسي أوستين TX 78720 2155555858
2 أليس حداد 504 2nd St نيويورك NY 10022 2111221821
3 جو أبرشية 428 شارع عكر شقة 304 أوستين TX 78716 2155455545

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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