تسوية قاعدة البيانات
تُعد التسوية في مجال تصميم قواعد البيانات العلائقية طريقة منهجية لضمان تناسب هيكل قاعدة البيانات مع الأغراض العامة، وخُلُوِّها من أي صفات غير مرغوب فيها—مثل الإدراج، والتحديث، والحذف الخطأ—التي قد تُؤدي إلى فقدان صحة البيانات. وقدَّم إدجار كود، مخترع النموذج العلائقي، مفهوم التسوية وما يُعرف الآن باسم نموذج التسوية الأول (1NF) في عام 1970. كما عرَّف كود نموذج التسوية الثاني (2NF)، ونموذج التسوية الثالث (3NF) في عام 1971. كود ورايموند بويس، نموذج بويس-كود للتسوية (BCNF) في عام 1974. ذلك بالإضافة إلى تعريف أشكال أخرى من التسوية من قبل باحثين آخرين في سنوات لاحقة. وكان آخرها نموذج التسوية السادس (6NF) الذي قدمه كريس ديت، وهيو داروين، ونيكوس لورينتوس في عام 2002.
وكثيراً ما يُوصف جدول قاعدة البيانات العلائقية بأنه "تسوية" في حالة نموذج التسوية الثالث. وتخلو معظم جداول الـ3NF من الإدراج، والتحديث، والحذف الخاطيء. أي أن جداول الـ3NF ترتبط في معظم الأحيان بالـBCNF، والـ4NF، والـ5NF (ولكنه لا يرتبط بالـ6NF).
وينبغي على المصمم إنشاء تصميم تم تسويته بالكامل؛ حيث يُمكن إلغاء التسوية لأسباب أدائية. ومع ذلك، تتطلب بعض تخصصات النمذجة، مثل النمذجة ثلاثية الأبعاد في التعامل مع تصميم مستودع البيانات، وتصميمات لم يتم تسويتها. وهي التصميمات التي لا ترتبط بالـ3NF.
يهدف نموذج التسوية الأول الذي عرَّفه كود في عام 1970 إلى الاستعلام عن البيانات والتعامل معها باستخدام "لغة فرعية عالمية للبيانات" تعتمد على منطق الرتبة الأولى. (وتعتبر لغة الاستعلامات البنيوية إس كيو إل مثال على تلك اللغات البيانية). وتعتبر عملية الاستعلام عن البيانات والتعامل معها في إطار هيكل بيانات غير مستوي عملية معقدة جداً. مثال: التمثيل التالي الذي لا يرتبط بالـ1NF الخاص بعمليات بطاقات الائتمان الخاصة بالعملاء:
"تتكرر مجموعة" من المعاملات لكل عميل. ويَشمل التقييم الآلي للاستعلام عن معاملات العملاء مرحلتين:فعلى سبيل المثال، يجب على النظام تفريغ مجموعة "معاملات" لكل عميل، ثم جمع "مبالغ" جميع المعاملات التي تمت قي شهر أكتوبر عام 2003، وذلك لمعرفة المبالغ النقدية لجميع المعاملات التي تمت في شهر أكتوبر 2003 لكل العملاء.
ومن أهم أراء كود أنه يمكن التخلص من هذا التعقيد الهيكلي، مما قد يُؤدي إلى حُدوث قدر أكبر من القوة والمرونة في كيفية صياغة وتقييم أسلوب الاستعلام (بواسطة المستخدمين والبرمجيات التطبيقية، ونظام إدارة قواعد البيانات). ويُمكن أن يظهر البديل الذي تم تسويته للهيكل أعلاه كالآتي:
يُمثل كل صف معملة فردية ببطاقة الائتمان، ويمكن لنظام إدارة قواعد البيانات الحصول على نتيجة الفائدة من خلال إيجاد جميع الصفوف التي ترتبط بالتاريخ الواقع في شهر أكتوبر، ثم جمع المبالغ الخاصة بهم. وتنطبق نفس الشروط على كافة قيم هيكل البيانات: حيثُ يتعرضون جميعاً إلى نظام إدارة قواعد البيانات مباشرةً، ويُمكنها المشاركة في الاستعلامات بشكل مباشر. في حين توضع بعض القيم في هياكل منخفضة المستوى في الحالة السابقة. وبالتالي، يصبح التصميم الذي تمت تسويته مناسباً لعملية الاستعلام ذات الغرض العام، بينما لا يقوم التصميم الآخر بذلك.
ذكر كود أهداف التسوية لنظام الـ1NF، وتمنح الفروع التالية تفاصيل عن كل هدف على حدى.
عند تعديل (تحديث، أو إضافة، أو حذف) أي جدول، يُمكن أن يُؤدي ذلك إلى حدوث آثار جانبية غير مرغوب فيها. ولا تتعرض كل الجداول إلى هذه الآثار الجانبية؛ تظهر هذه الآثار الجانبية في الجداول التي لم يتم تسويتها بشكل كافي. ويمكن أن يضم الجدول الذي لم يتم تسويته بشكل كاف واحدة أو أكثر من الخصائص التالية:عندما يتم تسوية هيكل قاعدة البيانات بشكل تام، ومده لاستيعاب أنواع جديدة من البيانات، يمكن ألا تتغير جوانب هيكل قاعدة البيانات إلى حدٍ كبير. ونتيجة لذلك، ستتأثر التطبيقات المتفاعلة مع قاعدة البيانات بشكل بسيط.
تعكس الجداول المستوية والعلاقة بينها مفاهيم العالم الحقيقي والعلاقات المتبادلة بينهم.
تعد الجداول المستوية مناسبة للاستعلامات ذات الغرض العام. وهذا يعني أنه يتم تدعيم أي استفسارات حول هذه الجداول، بما في ذلك الاستفسارات المستقبلية التي لا يمكن التنبؤ بتفاصيلها. وفي المقابل، تعتبر الجداول التي لم يتم تسويتها مفيدة لبعض أنواع الاستعلامات.استعراض الوظائف الحسابية الأساسية:
نفترض أن الدالة Fx هي دالة رياضية ذات قيمة واحدة ومتغير مستقل واحد. ويشبه المتغير المستقل الخاصية A، المتغير التابع (أو الخاصية التابع). وبالتالي، فإن مصطلح التبعية الوظيفية هي قيمة الدالة FA؛ A هي خاصية مستقل. ومن ثم يمكن أن تشمل الوظائف ذات القيمة الواحدة على ناتج واحد فقط. ومن الشائع التعبير عن هذه العلاقة في الرياضيات كالآتي: F(A) = B أو F : A → B.
وهناك أيضاً وظائف ذات أكثر من متغير مستقل، وهي تسمى وظائف متعددة المتغيرات. وتمثل هذه الفكرة خاصية يعتمد وظيفياً على مزيج من الأتربيوتات. وبالتالي، تحتوى الدالة Fxyz على ثلاثة متغيرات مستقلة أو خاصيةات مستقلة، وخاصية واحد مستقل هو F:x,y,z.
توفر الأشكال العادية لنظرية قواعد البيانات العلائقية معايير لتحديد درجة ضعف الجدول وتناقضاته المنطقية وأخطائه. وكلما زادت قابلية تطبيق الشكل العادي على الجدول، قَلَّت درجة التناقضات والأخطاء. وهناك "أكثر النماذج العادية تطبيقاً"(HNF) لكل جدول: ووفقاً للتعريف، يفي الجدول دائماً بمتطلبات الـHNF الخاص به، وجميع الأشكال العادية الاقل من الـHNF الخاص به؛ كما يفشل الجدول في تلبية احتياجات أي شكل طبيعي يزيد عن الـHNF.
ويُمكن تطبيق أشكال عادية على الجداول الفردية؛ تصبح قاعدة البيانات في شكلها العادي "n" عندما تكون جميع الجداول في شكلها العادي "n".
يفترض مصممو قاعدة البيانات أحياناً أن عملية التسوية تتم بشكل متكرر، أي أنه يتم تسوية تصميمات الـ1NF لتصبح 2NF، ثم إلى 3NF، وهكذا. لا يعد ذلك وصفاً دقيقاً لكيفية تسوية قواعد البيانات. ويمكن أن يقع الجدول الذي صمم بشكل معقول في نمط الـ3NF في أول محاولة؛ وإذا كان في نظام الـ3NF، فمن المحتمل أن يصل الـHNF إلى الـ5NF. ولا يتطلب تحقيق "أشكال عادية" فوق الـ3NF أن يبذل المصمم جهد إضافي، وذلك لأن جداول الـ3NF لا تحتاج عادةً إلى حدوث تعديلات لتلبية احتياجات تلك الأشكال العادية.
تتلخص الأشكال العادية الرئيسية كالآتي:
وعادةً ما تكون قواعد البيانات المخصصة لمعالجة المعاملات التجارية التي تتم عبر الإنترنت (OLTP) أكثر طبيعيةً من قواعد البيانات المخصصة للمعالجة التحليلية التي تتم عبر الإنترنت (OLAP). وتتميز تطبيقات الـOLTP بأنها تضم صفقات صغيرة ذات حجم كبير مثل تحديث تسجيلات المبيعات في السوبر ماركت. وبالتالي، يتوقع أن تترك كل معاملة قاعدة البيانات بشكل متناسق. وعلى الوجه الآخر، تعتبر قواعد البيانات المصممة لعمليات الـOLAP "للقراءة فقط" في معظم الحالات. وتميل تطبيقات الـOLAP إلى استخراج بيانات تاريخية تراكمت على مدار فترة طويلة من الزمن. وقد تُسهل البيانات غير المفيدة من عمل تطبيقات استخبارات الأعمال. كما تضم جداول الأبعاد في النموذج النجمي بيانات لم يتم تسويتها. ويجب التحكم في البيانات التي لم يتم تسويتها بعناية أثناء عملية استخراج ونقل وتحميل البيانات. ولا يجب السماح للمستخدمين برؤية هذه البيانات حتى تصبح في حالة متناسقة. ويعد البديل المستوى للنموذج النجمي هو المخطط الثلجي. وتقل الحاجة إلى عدم التسوية في كثير من الحالات لأن أجهزة الكمبيوتر وبرامج الـRDBMS أصبحت أكثر قوة. ومنذ أن زادت أحجام البيانات بوجه عام مع أداء الأجهزة والبرامج، تستخدم قواعد بيانات الـOLAP مخططات لم يتم تسويتها.
كما تستخدم عملية عدم التسوية أيضاً لتحسين أداء أجهزة الكمبيوتر الصغيرة وأجهزة المحمول. حيث يمكنها استخدام هذه البيانات للبحث فقط (البحث عن الأسعار مثلاً). كما تستخدم أيضاً في حالة عدم وجود RDBMS (مثل Palm)، أو في حالة عدم تغيير البيانات، مما يستوجب استجابة سريعة وحاسمة.
يمكن أن يكون عدم التسوية مفيداً، ومن ثم يُعرِّف النموذج العادى غير الأول تصميمات قاعدة البيانات التي لا تتفق مع النموذج العادي الأول من خلال "مجموعات مجالات الخاصية" (Schek 1982). ويجب أن تمتد اللغات المستخدمة في التعامل والاستعلام عن البيانات داخل النموذج، وذلك لدعم مثل هذه القيم.
يجب النظر إلى تلك القيم المهيكلة باعتبارها أنواع متخصصة من القيم (المجالات)، ولغاتهم المحددة. فالنماذج غير الـ1NF هي امتداد النموذج العلائقي واللغات المستخدمة في الاستعلام عنه من خلال آلية عامة خاصة بهذا الهيكل. فعلى سبيل المثال، يُدعم النموذج العلائقي المتداخل استخدام العلاقات باعتبارها قيم من خلال إضافة مشغلين ("متداخل وغير متداخل") إلى الجبر العلائقي الذي يمكن أن يخلق علاقات متداخلة.
أنظر الجدول التالي:
لنفرض أن هناك شخص لديه أكثر من لون مفضل. تتكون الألوان المفضلة من مجموعة من الألوان وفقاً للجدول. ويحتاج تحويل جدول 1NF إلى جدول NF² "مشغل متداخل" لمد الجبر العلائقي الخاص بأعلى الأشكال العادية. وعند تطبيق "المشغل المتداخل" على جدول الـ1NF، ينتج جدول الـNF² التالى:
ولتحويل هذا الجدول إلى جدول 1NF مرة أخرى، يجب استخدام "مشغل غير متداخل" لمد الجبر العلائقي الخاص بأعلى الأشكال العادية.
على الرغم من أن "المشغل غير المتداخل" هو رياضياً عكس "المشغل المتداخل"، لا يصبح "المشغل المتداخل" دائماً عكس "المشغل غير المتداخل". كما يجب أن تكون المشغلات متقابلة، والتي يغطيها النموذج العادي المقسم (PNF).