سؤال

افترض أن لدي جدولين على قاعدة بيانات ، ر10 و ت11, ، وجود 10 و 11 عمود ، على التوالي ، حيث 10 من الأعمدة هي نفسها بالضبط على حد سواء.

ما هي (إن وجدت) قاعدة التطبيع التي انتهكت؟

هل كانت مفيدة؟

المحلول

تحرير: لقد أبلغت أنه لا توجد أشكال طبيعية يتم انتهاكها هنا من الناحية النظرية. نظرًا لأن هذا كان الإجابة المقبولة ، سأتركها هنا للرجوع إليها ، ولأن التفكير في 3NF قد يساعد في الممارسة العملية في تجنب مواقف مثل هذا في السؤال.

أنت تنتهك الشكل العادي الثالث (3NF), ، لأنه إذا تم الاحتفاظ في الغالب بنفس البيانات في كلا الجدولين ، فإن كل سمة من كل جدول لا تعتمد بشكل مباشر على مفتاح الجدول الخاص به.

نصائح أخرى

صدق أو لا تصدق ، فإن تكرار الأعمدة عبر الجداول لا ينتهك أي شكل طبيعي نظري في حد ذاته. باستثناء النموذج الطبيعي للمجال/المفتاح (DKNF) ، يتم تعريف النماذج العادية من حيث الجداول الفردية ، وليس المتعددة ،. يتم تعريف DKNF من حيث القيود ، والتي لا يوجد شيء في الحالة العامة. وبالتالي ، إذا كان هناك انتهاك للشكل الطبيعي:

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

النظر في الأشكال العادية, ، باستخدام تعريفات موجزة من مقالة ويكيبيديا:

1NF
يمثل الجدول بإخلاص علاقة وليس له مجموعات متكررة.

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

2nf
لا تعتمد أي سمة غير بروز في الجدول بشكل وظيفي على مجموعة فرعية مناسبة من أي مفتاح مرشح.

هنا ، المصطلح المهم لفحصه هو "الاعتماد الوظيفي". في الأساس ، يكون الاعتماد الوظيفي هو المكان الذي تقوم فيه بتقديم علاقة بعمدين ، x و y ، وينتهي من وظيفة x → y.*. بالإضافة إلى ذلك ، لا يمكن أن تمتد مفاتيح المرشحين على جداول متعددة.

3nf
تعتمد كل سمة غير بارزة على كل مفتاح مرشح في الجدول.

يتم تعريف الاعتماد المتعدي على الاعتماد الوظيفي: التبعية المتعدية هي التبعية حيث x → z فقط لأن x → y و y → z. x و y و z يجب أن تكون في نفس الجدول لأن هذه تبعيات وظيفية.

4nf
كل التبعية المتعددة غير المستفادة في الجدول هي اعتماد على مفتاح السوبر.

التبعية متعددة يكون أصعب بعض الشيء ، ولكن يمكن توضيحه بمثال: "كلما توجد tuples (a ، b ، c) و (a ، d ، e) في r ، tuples (a ، b ، e) و (a ، D ، C) يجب أن توجد أيضًا في R "(حيث" R "هو جدول). الأهم من ذلك بالنسبة للمسألة في متناول اليد ، لا ينطبق التبعية المتعددة إلا على جدول واحد.

5nf
كل التبعية غير التافهة في الجدول ضمنيًا بواسطة مفاتيح الجدول.

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

6nf (C. التاريخ)
لا يتميز الجدول بأي تبعيات صلة غير تافهة على الإطلاق (مع الإشارة إلى مشغل الصلة المعمم).

نفس المنطق لـ 5nf.

الشكل العادي للمفتاح الابتدائي (EKNF)
كل التبعية الوظيفية غير التافهة في الجدول هي إما تبعية سمة المفتاح الابتدائي أو التبعية على مفتاح Superkey.

نفس المنطق لـ 2nf.

boyce -codd شكل طبيعي (BCNF)
كل التبعية الوظيفية غير التافهة في الجدول هي اعتماد على مفتاح السوبر.

نفس المنطق لـ 2nf.

النموذج الطبيعي للمجال/المفتاح (DKNF)
كل قيد على الجدول هو نتيجة منطقية لقيود مجال الجدول والقيود الرئيسية.

إذا ر11 لديه قيد يعتمد على t10, ، ثم إما قيود رئيسية أو قيد أكثر تعقيدًا لا يزال يشير إلى t10. الحالة الأخيرة ليست الحالة العامة المذكورة في السؤال. بمعنى آخر ، على الرغم من أنه يمكن أن يكون هناك مخططات محددة مع أعمدة مكررة تنتهك DKNF ، إلا أنه ليس صحيحًا بشكل عام. علاوة على ذلك ، فإن القيد (وليس النموذج الطبيعي) هو المحدد من حيث الجداول المتعددة والقيود (وليس ازدواجية العمود) التي تسبب انتهاك DKNF.


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

إذا كان هذا لا يزال لا يقنعك ، ففكر في أن تعليق مخطط KM.11 يمثل نسخة تاريخ (أو إصدار) من T.10. المفتاح الأساسي لـ T11 يتكون من أعمدة المفاتيح الأساسية المشتركة مع T.10, ، بالإضافة إلى العمود الإضافي (عمود التاريخ/الإصدار). هذا ر11 لديه مفاتيح مرشح مختلفة تجعل كل الفرق بين تصميم الشذوذ المعرضة للشذوذ والشذوذ الطبيعي.

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

ربما قاعدة تجنب البيانات الزائدة؟ (أي نفس البيانات في جدولين)

إذا كانت 10 من الأعمدة الـ 11 هي نفسها ، فلماذا لا يمكن أن يكون هذا فقط جدولًا واحدًا ، حيث يتم ترك العمود الحادي عشر فارغًا (جنبًا في الأصل)؟

ذلك يعتمد على ما هو موجود في الجداول.

إذا لم ترتبط أي سجلات ببعضها البعض (على سبيل المثال ، إذا كان جدول واحد هو ببساطة سجلات مؤرشفة ناشئة ولكن تمت إزالتها من الجدول الأول) فأنت لا تنتهك أي قواعد.

ولكن إذا كانت هذه هي السجلات نفسها في كل جدول ، فستواجه مشكلة تبعية - هذا العمود الحادي عشر يعتمد فقط على القيمة الرئيسية من السجل ، وليس الأعمدة الإضافية. على افتراض أن جميع الأعمدة العشرة غير متورطة في المفتاح الأساسي ، فقد انتهكت 3rd NF.

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

إذا كانت جميع الأعمدة العشرة جزءًا من المفتاح الخاص بك ، فإن النموذج العادي الثاني: التخلص من البيانات الزائدة. على وجه التحديد ، هذا يندرج تحت معضلة "Nonsurrogate مقابل المفاتيح الأولية البديلة" - لأكون صادقًا ، لا أتذكر أيًا من هذين الخيارين ليكونوا "ينتهكان" 2NF ، لكن مفتاح البديل هو بالتأكيد أقرب إلى روح 2nf

قد تكون المفاتيح الأولية فقط زائدة عن الحاجة بين الجداول. وجود أي قدر من الأعمدة الرئيسية غير الأولية في جداول متعددة ينتهك النموذج العادي الثالث.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top