تقنية Denormalization هي تقنية تقضي بأن يقوم المبرمج - أو مصمم قاعدة البيانات - بتكرار البيانات التي يتم الاستعلام عنها بكثرة في قاعدة البيانات في أكثر من جدول، محاولا أن يتم تلبية استعلامات البرنامج قدر الامكان من جدول واحد فقط.
فكما هو معلوم أن من أهم العوامل التي تؤدي الى سرعة تنفيذ الاستعلامات - وبالتالي سرعة تنفيذ البرمجية وقلة استهلاكها للموارد - هو استخدام جدول واحد فقط في الاستعلامات وتجنب الربط بين أكثر من جدول JOINS بقدر الامكان، لذا فإن استخدام تقنية Denormalization هو أهم خطوة لبرمجة برامج أسرع وأقل استخداما للموارد.
فعلى سبيل المثال، في حالة برمجة سكريبت إدارة محتوى، ننشيء جدولين الأول للمقالات articles والثاني للتعليقات comments، مع الربط بين الجدولين باستخدام الحقل article_id والذي يخبرنا أن هذا التعليق هو تابع لهذه المقالة. كل ما سبق هو بديهي ولا يوجد فيه شيء جديد.
ولكن التحدي الآن هو عند ايجاد عدد التعليقات لكل مقال في البرنامج، فعليك اتباع احدى الطريقتين:
الأولى وهي تعتبر الطريقة الأبطأ والأكثر استهلاكا للموارد وهي "Normalized Way"، وهي تقضي بايجاد عدد الصفوف في الجدول comments والتي تتبع المقال الذي نعرضه ، وهذه الطريقة كما ذكرنا تستهلك الكثير من موارد النظام خصوصا في حالة كان عدد المقالات ليس بقليل وفي حالة كان الزائر يحاول ترتيب المقالات تبعا لعدد التعليقات!
أما الطريقة الثانية وهي تعتبر الأسرع والأقل استهلاكا لموارد النظام وهي "Denormalized Way"، وهي تقضي بانشاء حقل جديد في جدول المقالات ليتم فيه حفظ عدد التعليقات لكل مقال، مع انشاء MySQL trigger لتحديث حقل عدد التعليقات لكل مقال مع كل عملية اضافة او حذف لتعليق.
أتمنى أن تحدث الفائدة المرجوة من الدرس
والله ولي التوفيق
المصدر: http://2coder.me/?p=1