استخدام MYISAM بدلاً من InnDB
MySql قواعد البيانات : أخطاء في استخدام دوال php المخصصة لقواعد البيانات
عدم فحص مدخلات المستخدم
اذا قررت فتح المجال للزوار لإضافة بيانات وحفظها في قاعدة بياناتك ينبغي عليك أن لا تثق أبدأ في معطيات الأشخاص الذين لن تعرفهم بلا شك . ويجب عليك أن تتحقق من البيانات عن طريق دوال التحقق على الخادم أو ما يسمى Server side validation التي يستحيل على المستخدم لموقعك تجازوها .
أما أدوات التحقق باستخدام دوال التحقق على جهاز المستخدم أو ما يسمى Client side validation والتي تستخدم عادة لغة الجافاسكربت فهذي يسهل على المستخدم تجاوزها .
وهي وضعت لخدمة المستخدم من حيث ضبط نوع البيانات وعددها لكن ليس من أجل حماية موقعك إطلاقاً
وحتى تتصور خطورة ذلك أنظر إلى سطر البرمجة التالي
المتغير القادم من حقل النموذج المخصص لدخول الأعضاء بهذا الشكل
اسم المستخدم:
كلمة المرور:
يحمع المبرمج هذه المتغيرات لينشئ جملة استعلام بهذا الشكل
كل ما على المخرب عمله هو ادخال هذه الكلمة:
في اسم المستخدم لتصبح عبار الاستعلام كالتالي:
سوف يدخل المخرب بهذه الطريقة بصفته أدمن .. السبب أنه مرر عبارة تختصر جملة الاستعلام بإضافة علامة السيمي كولن وانتهى الامر.
عدم استخدام ترميز UTF-8
مهم جداً لحل مشاكل المواقع والتطبيقات التي تستخدم اللغات المتعددة -خصوصاً اللغة العربية- أن تستخدم ترميز UTF-8 كترميز افتراضي .
تفضيل دوال PHP على دوال MySql
يجهل كثير من المطورين أن MySql لديها دوال خاصة بها فيعمد إلى استخدام دوال php أو انشاء واختراع دوال جديدة . مثلاُ لو احتاج احتساب معدل درجات الطالب ربما يجمع درجات كل مادة . ثم باستخدام php يجري عملية حسابية فيها ضرب وقسمة ومعادلة ويستخرج النسبة . مع العلم أن هناك دالة في MySql خاصة بهذه العملية ولا يحتاج الامر الا الى كتابة سطر استعلام واحد وهي دالة:
مثالها :
أنظر أيضاً موضوعنا في هذه المدونة تحت عنوان أشهر دوال MySql التي يغفل عنها المبرمجون
الاستعلامات الرديئة
معظم مشاكل برامج php بسبب الاستعلامات الرديئة في قواعد البيانات ، ولو أخطأت في جملة استعلام واحدة فقط يتسبب ذلك الخطأ في إفساد تطبيقك بالكامل وربما كل موقعك على الويب. وMySql تقدم في موقعها شرحاً وافياً لصيغ الاستعلامات الصحيحة ، كما يوجد العديد من الأدوات المساعدة في كتابة وبناء جمل الاستعلام الدقيقة مثل SQl Yog وكذلك sqlMestro
استخدام صيغة البيانات لخطأ في MySql قواعد البيانات
إن الاستخدام الخاطئ لصيغ البيانات يجعل البحث في قاعدة بيانات في غاية الصعوبة إن لم يكن مستحيلاً. فعلى سبيل المثال لو حفظت التاريخ بصيغة نص فلن يكون باستطاعتك البحث حسب معيار زمني معين أو من تاريخ كذا إلى كذا .. ومن أبرز الأخطاء هنا استخدام حجم الأرقام الكبير لبيانات من المتوقع أن تكون صغيرة وهذا يتسبب في تضخم قاعدة البيانات .. والأخطر من ذلك استخدام صيغة بيانات رقمية صغيرة لبيانات من المتوقع أن تصل لحجم كبير .. ويقع خلل مربك لو استخدمت صيغة بيانات سلسلة أرقام بطول 11 خانة مثلاً لحفظ أرقام الهوية ثم فوجئت لمستخدم يملك رقم هوية يزيد عن 11 خانة فستضيع منك البيانات وتدخل في حرج مع المستخدمين.
ينطبق الأمر كذلك على الصيغ النصية text و varchar
استخدام علامة النجمة * في كتابة جملة الاستعلام
لا تستخدم أبداً النجمة في البحث بطريقة SELECT * FROM … استخدم أسماء الحقول للبحث واطلب فقط الحقول التي تريد عرضها . حتى لو كنت تحتاج البحث في كل الحقول في الجدول ، اكتب أسماء الكل ولا تستخدم النجمة
الإفراط في إضافة الفهارس لغير حاجة.
الفهارس تساعد في سرعة الوصول إلى السجل عند البحث لكن ترهق قاعدة البيانات عند إدراج سجل جديد أو تحديث سجل سابق ، فلو كان عندك جدول الأعضاء مثلاً فيكفي أن تجعل حقل البريد الاكتروني مفهرساً ، أما إذا أضفت حقل ID مرقماً آلياً وجعلته مفهرساً فلا حاجة لفهرسة حقل البريد الالكتروني . استخدم الفهارس بقدر المستطاع عند الضرورة فقط.
عدم حفظ نسخة من قواعد البيانات .
قد يكون نادر جداً لكنه كارثة. ماذا لو تعطل الهاردسك للسيرفر ؟ أفلست الشركة المستضيفة ؟ انفجر السيرفر ؟ بياناتك لا تعوض ولذلك احرص على عمل نسخة احتياطية في يدك ،، ملف نصي تقوم بحفظه في جهازك أو على وسائط محمولة بشكل دوري.
تحياتي
نهاية المقال بعنوان : MySql قواعد البيانات … عشرة أخطاء مشهورة في قواعد البيانات MySql يقع فيها مطورو PHP
إذا أعجبك المقال شاركه مع أصدقائك
لا تنس الاشتراك في المدونة .. والاشتراك في القائمة البريدية … اشتراكك دعم لنا ويحفزنا لكتابة المزيد
أخوكم حسن الزهراني