تسوية قاعدة البيانات

تُعد **التسوية** في مجال تصميم قواعد البيانات العلائقية طريقة منهجية لضمان تناسب هيكل قاعدة البيانات مع الأغراض العامة، وخُلُوِّها من أي صفات غير مرغوب فيها—مثل الإدراج، والتحديث، والحذف الخطأ—التي قد تُؤدي إلى فقدان صحة البيانات. وقدَّم إدجار كود، مخترع النموذج العلائقي، مفهوم التسوية وما يُعرف الآن باسم نموذج التسوية الأول (1NF) في عام 1970. كما عرَّف كود نموذج التسوية الثاني (2NF)، ونموذج التسوية الثالث (3NF) في عام 1971. كود ورايموند بويس، نموذج بويس-كود للتسوية (BCNF) في عام 1974. ذلك بالإضافة إلى تعريف أشكال أخرى من التسوية من قبل باحثين آخرين في سنوات لاحقة. وكان آخرها نموذج التسوية السادس (6NF) الذي قدمه كريس ديت، وهيو داروين، ونيكوس لورينتوس في عام 2002.

وكثيراً ما يُوصف جدول قاعدة البيانات العلائقية بأنه "تسوية" في حالة نموذج التسوية الثالث. وتخلو معظم جداول الـ3NF من الإدراج، والتحديث، والحذف الخاطيء. أي أن جداول الـ3NF ترتبط في معظم الأحيان بالـBCNF، والـ4NF، والـ5NF (ولكنه لا يرتبط بالـ6NF).

وينبغي على المصمم إنشاء تصميم تم تسويته بالكامل؛ حيث يُمكن إلغاء التسوية لأسباب أدائية. ومع ذلك، تتطلب بعض تخصصات النمذجة، مثل النمذجة ثلاثية الأبعاد في التعامل مع تصميم مستودع البيانات، وتصميمات لم يتم تسويتها. وهي التصميمات التي لا ترتبط بالـ3NF.

## أهداف تسوية قاعدة البيانات
يهدف نموذج التسوية الأول الذي عرَّفه كود في عام 1970 إلى الاستعلام عن البيانات والتعامل معها باستخدام "لغة فرعية عالمية للبيانات" تعتمد على منطق الرتبة الأولى. (وتعتبر لغة الاستعلامات البنيوية إس كيو إل مثال على تلك اللغات البيانية). وتعتبر عملية الاستعلام عن البيانات والتعامل معها في إطار هيكل بيانات غير مستوي عملية معقدة جداً. مثال: التمثيل التالي الذي لا يرتبط بالـ1NF الخاص بعمليات بطاقات الائتمان الخاصة بالعملاء:

*تتكرر مجموعة* من المعاملات لكل عميل. ويَشمل التقييم الآلي للاستعلام عن معاملات العملاء مرحلتين:

# تفريغ مجموعة أو أكثر من معاملات العملاء، مما يسمح بفحص المعاملات الفردية في كل مجموعة
# استخلاص نتيجة استعلام استناداً إلى نتائج المرحلة الأولى

فعلى سبيل المثال، يجب على النظام تفريغ مجموعة *معاملات* لكل عميل، ثم جمع *مبالغ* جميع المعاملات التي تمت قي شهر أكتوبر عام 2003، وذلك لمعرفة المبالغ النقدية لجميع المعاملات التي تمت في شهر أكتوبر 2003 لكل العملاء.

ومن أهم أراء كود أنه يمكن التخلص من هذا التعقيد الهيكلي، مما قد يُؤدي إلى حُدوث قدر أكبر من القوة والمرونة في كيفية صياغة وتقييم أسلوب الاستعلام (بواسطة المستخدمين والبرمجيات التطبيقية، ونظام إدارة قواعد البيانات). ويُمكن أن يظهر البديل الذي تم تسويته للهيكل أعلاه كالآتي:

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

ذكر كود أهداف التسوية لنظام الـ1NF، وتمنح الفروع التالية تفاصيل عن كل هدف على حدى.

### خلو قاعدة البيانات من التعديل الخاطيء
280px|تصغير|يمين|إدراج خاطيء. لا يمكن تسجيل بيانات دكتور نيوسام، العضو الجديد، حتى يتم تعيينه لتدريس مادة واحدة على الأقل.
280px|تصغير|يمين|حذف خاطيء. تم حذف كل المعلومات الخاصة بالدكتور غيدنز عندما توقف مؤقتاً عن تدريس أي مواد.
عند تعديل (تحديث، أو إضافة، أو حذف) أي جدول، يُمكن أن يُؤدي ذلك إلى حدوث آثار جانبية غير مرغوب فيها. ولا تتعرض كل الجداول إلى هذه الآثار الجانبية؛ تظهر هذه الآثار الجانبية في الجداول التي لم يتم تسويتها بشكل كافي. ويمكن أن يضم الجدول الذي لم يتم تسويته بشكل كاف واحدة أو أكثر من الخصائص التالية:

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

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

### كيفية جعل نموذج البيانات أكثر إفادةً للمستخدمين
تعكس الجداول المستوية والعلاقة بينها مفاهيم العالم الحقيقي والعلاقات المتبادلة بينهم.

### تجنب التحيز تجاه أي نمط معين من الاستعلام
تعد الجداول المستوية مناسبة للاستعلامات ذات الغرض العام. وهذا يعني أنه يتم تدعيم أي استفسارات حول هذه الجداول، بما في ذلك الاستفسارات المستقبلية التي لا يمكن التنبؤ بتفاصيلها. وفي المقابل، تعتبر الجداول التي لم يتم تسويتها مفيدة لبعض أنواع الاستعلامات.

## خلفية التسوية: التعاريف
* **التبعية الوظيفية**: يعتمد الخاصية B وظيفياً على الخاصية A (أي **A → B**)، وذلك في حالة وجود قيمة مماثلة من الخاصية B لكل قيمة من الخاصية A. وإذا تكررت قيمة A في صفوف، ستتكرر قيمة B أيضاً. وفي هذا المثال، يعتمد عنوان الموظف وظيفياً على مُعرِّف الموظف، وذلك لأن قيمة معرف الموظف يقابلها عنوان موظف واحد. (ملحوظة: ليس بالضرورة أن يكون العكس صحيحاً: فيمكن أن يعيش عدد من الموظفين في نفس العنوان، وبالتالي يمكن أن يقابل عنوان الموظف الواحد أكثر من معرف. ومن ثم **لا يعتمد** معرف الموظف وظيفياً على عنوان الموظف). وقد يعتمد الخاصية وظيفياً على خاصية واحد أو أكثر. وليس من الممكن تحديد مدى إمكانية تسوية تصميم من دون تفهم التبعيات الوظيفية التي تنطبق على الخاصيةات الموجودة في الجداول؛ وهذا يتطلب معرفة مجال المشكلة. فعلى سبيل المثال، يُمكن لصاحب العمل أن يطلب من بعض الموظفين تقسيم وقتهم بين موقعين، مثل مدينة نيويورك ولندن، ومن ثم يرغب في تحديد أكثر من عنوان لهؤلاء الموظفين. وفي هذه الحالة، لن يعتمد عنوان الموظف وظيفياً على معرف الموظف.

استعراض الوظائف الحسابية الأساسية:

نفترض أن الدالة Fx هي دالة رياضية ذات قيمة واحدة ومتغير مستقل واحد. ويشبه المتغير المستقل الخاصية A، المتغير التابع (أو الخاصية التابع). وبالتالي، فإن مصطلح التبعية الوظيفية هي قيمة الدالة FA؛ A هي خاصية مستقل. ومن ثم يمكن أن تشمل الوظائف ذات القيمة الواحدة على ناتج واحد فقط. ومن الشائع التعبير عن هذه العلاقة في الرياضيات كالآتي: **F(A) = B** أو **F : A → B**.

وهناك أيضاً وظائف ذات أكثر من متغير مستقل، وهي تسمى وظائف متعددة المتغيرات. وتمثل هذه الفكرة خاصية يعتمد وظيفياً على مزيج من الأتربيوتات. وبالتالي، تحتوى الدالة **Fxyz** على ثلاثة متغيرات مستقلة أو خاصيةات مستقلة، وخاصية واحد مستقل هو **F:x,y,z**.

;**التبعية الوظيفية البسيطة**
: التبعية الوظيفية البسيطة هي تبعية وظيفية لخاصية يعتمد على مجموعة شاملة. (معرف الموظف، عنوان الموظف) → (عنوان الموظف) بسيط، مثل (عنوان الموظف) → (عنوان الموظف).

; التبعية الوظيفية الكاملة
: يعتمد الخاصية وظيفياً بشكل تام على مجموعة من الخاصيةات X إذا
:
:* كانت تعتمد وظيفياً على X
:* لا تعتمد وظيفياً على أي مجموعة فرعية لـX. ويعتمد (عنوان الموظف) وظيفياً على (مُعرف الموظف، ومهارته)، ولكنه لا يعتمد عليهما بشكل *تام*، لأنه يعتمد أيضاً على (معرف الموظف).

; تبعية متعدية
: التبعية المتعدية هي تبعية وظيفية غير مباشرة حيث يكون: X→Z نتيجة X→Y، و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)، أو في حالة عدم تغيير البيانات، مما يستوجب استجابة سريعة وحاسمة.

### النموذج العادي غير الأول (NF² أو N1NF)
يمكن أن يكون عدم التسوية مفيداً، ومن ثم يُعرِّف النموذج العادى غير الأول تصميمات قاعدة البيانات التي لا تتفق مع النموذج العادي الأول من خلال "مجموعات مجالات الخاصية" (Schek 1982). ويجب أن تمتد اللغات المستخدمة في التعامل والاستعلام عن البيانات داخل النموذج، وذلك لدعم مثل هذه القيم.

يجب النظر إلى تلك القيم المهيكلة باعتبارها أنواع متخصصة من القيم (المجالات)، ولغاتهم المحددة. فالنماذج غير الـ1NF هي امتداد النموذج العلائقي واللغات المستخدمة في الاستعلام عنه من خلال آلية عامة خاصة بهذا الهيكل. فعلى سبيل المثال، يُدعم النموذج العلائقي المتداخل استخدام العلاقات باعتبارها قيم من خلال إضافة مشغلين (*متداخل وغير متداخل*) إلى الجبر العلائقي الذي يمكن أن يخلق علاقات متداخلة.

أنظر الجدول التالي:

لنفرض أن هناك شخص لديه أكثر من لون مفضل. تتكون الألوان المفضلة من مجموعة من الألوان وفقاً للجدول. ويحتاج تحويل جدول 1NF إلى جدول NF² "مشغل متداخل" لمد الجبر العلائقي الخاص بأعلى الأشكال العادية. وعند تطبيق "المشغل المتداخل" على جدول الـ1NF، ينتج جدول الـNF² التالى:

ولتحويل هذا الجدول إلى جدول 1NF مرة أخرى، يجب استخدام "مشغل غير متداخل" لمد الجبر العلائقي الخاص بأعلى الأشكال العادية.

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

## قراءات أخرى
* نصائح ليت: تسوية
* سي جي دات(1999)، *[http://www.aw-bc.com/catalog/academic/product/0,1144,0321197844,00.html مقدمة لنظم قواعد البيانات] * (الطبعة الثامنة). أديسون ويسلي لونجمان. ردمك 0-321-47266-7
* دابليو كينت1983)، *[http://www.bkent.net/Doc/simple5.htm دليل بسيط حول خمسة أشكال عادية في نظرية قاعدة البيانات العلائقية]*، اتصالات إيه سي إم، المجلد 26، صـ.&nbsp;120-125
* سي جيه دات، وإتش داروين. وإف باسكال، *[http://www.dbdebunk.com تفنيد قاعدة بيانات]*
* إتش جيه شيك، وبي بيستور، هياكل البيانات لإدارة قاعدة بيانات متكاملة ونظام استرجاع المعلومات

## ملاحظات ومراجع

* بحث: "علاقات النموذج العادي غير الأول" بقلم جي جايشكي، وإتش شيك؛ مركز آي بي إم هايدلبرغ العلمي. --> بحث حول مشغلات التسوية وعدم التسوية المتداخلة وغير المتداخلة، وذلك كما هو موضح في نهاية هذه الصفحة. ويصف البحث تفاصيل العلاقة بين الـ1NF والـNF^2

## وصلات خارجية
* أساسيات تسوية قاعدة البيانات  بقلم مايك تشابل (About.com)
* مقدمة لتسوية قاعدة البيانات ، الجزء الثاني 
* مقدمة لتسوية قاعدة البيانات بقلم مايك هيلير.
* التسوية بقلم آي تي إس، جامعة تكساس.
* كيفية استخدام أول ثلاثة أشكال عادية بقلم فريد كولسون
* أمثلة حول تسوية الديسيبل 
* وصف أساسيات تسوية قاعدة البيانات، شركة مايكروسوفت
* تقنيات تسوية قاعدة البيانات وتصاميمها  بقلم باري وايز.

*
تصنيف:نظم إدارة قواعد البيانات
تصنيف:نمذجة البيانات
تصنيف:إدارة البيانات