عند العمل مع قواعد البيانات، من الشائع مواجهة مشاكل مثل البيانات المتكررة والتحديثات غير المتناسقة. الصيغة الطبيعية الثانية هي خطوة في تطبيع قاعدة البيانات تعتمد على الصيغة الطبيعية الأولى (1NF) لإنشاء جداول أنظف وأكثر كفاءة.
فهم الصيغة الطبيعية الثانية أمر حيوي لأي شخص يعمل في تصميم قواعد البيانات أو إدارة البيانات، وهو يمهد الطريق لصيغ التطبيع الأعلى مثل الصيغة الطبيعية الثالثة (3NF). في هذه المقالة، سنستكشف كيفية عمل الصيغة الطبيعية الثانية وكيفية تحويل الجداول لتلبية متطلبات الصيغة الثانية، مع أمثلة عملية. سنتحدث أيضًا عن فوائد وعيوب الصيغة الطبيعية الثانية، والحالات التي تناسبها بشكل أفضل.
فهم الصيغة الطبيعية الثانية
الصيغة الطبيعية الثانية هي خطوة في تطبيع قاعدة البيانات تركز على القضاء على التبعيات الجزئية. تمت إدخالها بواسطة إدغار إف. كود، رائد قواعد البيانات العلاقية، كجزء من عمله في التطبيع.
قبل أن تكون الجدول في الصيغة الطبيعية الثانية، يجب أن تستوفي قواعد الصيغة الطبيعية الأولى:
- الذرة: يجب أن تحتوي كل خلية على قيمة واحدة فقط (لا مجموعات متكررة أو مصفوفات).
- صفوف فريدة: يجب أن تحتوي الجدول على مفتاح أساسي واضح.
المستوى الثاني من التطبيع 2NF يأخذ خطوة إضافية مع قاعدة إضافية: إلغاء التبعيات الجزئية.
ينشأ اعتماد جزئي عندما يعتمد سمة غير رئيسية (عمود ليس جزءًا من أي مفتاح مرشح) على جزء فقط من مفتاح مركب بدلاً من المفتاح بالكامل. تضمن قاعدة 2NF أن جميع السمات غير الرئيسية تعتمد على المفتاح الأساسي بالكامل، وليس فقط على جزء منه. ترك الاعتمادات الجزئية في جدول يعني أن البيانات الزائدة يمكن أن تتسلل إلى قاعدة البيانات، مما يؤدي إلى عدم الكفاءة واحتمالية عدم التناسق أثناء التحديثات أو الحذف.
يمكن أن تكون النظرية وحدها جافة بعض الشيء، لذا دعنا ننظر إلى مثال عملي.
فيما يلي جدول تسجيل الدورة لطلاب Datacamp.
Student ID | Course ID | Course Name | Instructor Name |
---|---|---|---|
1001 | 201 | أساسيات SQL | كين سميث |
1002 | 202 | مقدمة في بايثون | ميرلين أودونيل |
1001 | 202 | مقدمة في بايثون | ميرلين أودونيل |
هنا، المفتاح الرئيسي هو تجميعي لـرقم الطالب و رقم الدورة. ومع ذلك، السمات غير الرئيسية اسم الدورة ورسوم الدورة تعتمد فقط على رقم الدورة، وليس على المفتاح بأكمله. وهذا ينتهك الشكل الثاني للتطبيقات.
خطوات تحليل الجداول لتحقيق 2NF
للتأكد من أن الجدول يتبع قواعد 2NF، تحتاج إلى:
- تحديد جميع مفاتيح المرشحين: حدد المجموعات الحد الأدنى من السمات التي تحدد الصفوف بشكل فريد في الجدول. هذه هي مفاتيح المرشحين لديك.
- تحديد الاعتمادات الوظيفية: حدد جميع الاعتمادات الوظيفية في الجدول. بشكل خاص، ابحث عن الاعتمادات التي تعتمد فيها السمات غير الرئيسية (التي ليست جزءًا من أي مفتاح مرشح) فقط على جزء من مفتاح مركب.
- القضاء على التبعيات الجزئية: لكل تبعية جزئية:
- نقل السمات التابعة إلى جدول جديد مع الجزء من المفتاح الذي يعتمدون عليه.
- تأكد من أن الجدول الجديد يحتوي على مفتاح أساسي فريد.
- كرر حتى لا تبقى تبعيات جزئية: تأكد من أن كل سمة غير رئيسية في جميع الجداول تعتمد بشكل كامل على مفتاحها الأساسي المعني.
أمثلة على الشكل الطبيعي الثاني في الممارسة
لنلق نظرة على مثلين الآن.
مثال 1: جدول تسجيل الدورات
في وقت سابق، رأينا الجدول التالي لتسجيل الدورة:
Student ID | Course ID | Course Name | Instructor Name |
---|---|---|---|
1001 | 201 | SQL Fundamentals | كين سميث |
1002 | 202 | مقدمة إلى Python | ميرلين أودونيل |
1001 | 202 | مقدمة إلى Python | ميرلين أودونيل |
لنتبع الخطوات التي حددناها في القسم السابق.
1. تحديد المفتاح المرشح لدينا.
في هذه الحالة، المفتاح المرشح هو مفتاح مركب من رقم تعريف الطالب و رقم تعريف الدورة. تحدد هذه الجمعية الفريدة كل صف في الجدول.
2. تحديد تبعياتنا الوظيفية
اسم الدورة و اسم المدرس تعتمدان على معرف الدورة, وليس المفتاح المركب الكامل (معرف الطالب, معرف الدورة). هذا يعتبر تبعية جزئية لأن هذه السمات تعتمد فقط على جزء من المفتاح المركب.
3. القضاء على الاعتماديات الجزئية
نحتاج إلى نقل السمات التي تعتمد على جزء فقط من المفتاح (اسم الدورة و اسم المدرب) إلى جدول جديد يعتمد فقط على معرف الدورة.
بعد التفكيك، تبدو جداولنا الجديدة كما يلي:
جدول تسجيل الدورة
Student ID | Course ID |
---|---|
1001 | 201 |
1002 | 202 |
1001 | 202 |
جدول تفاصيل الدورة
Course ID | Course Name | Instructor Name |
---|---|---|
201 | أساسيات SQL | كين سميث |
202 | مقدمة لغة Python | ميرلن أودونيل |
إذا كنت ترغب في البدء العملي وإنشاء قواعد بيانات خاصة بك، اطلع على دورتنا PostgresQL. إذا كنت متقدم قليلاً، يمكنك تجربة مقدمة في نمذجة البيانات في Snowflake، التي تغطي أفكارًا مثل نمذجة العلاقة والأبعاد.
مثال 2: جدول الطلبيات
سنبدأ بجدول الطلبيات هذا. حاول اتباع الخطوات التي عرضناها أعلاه وفك تحليل هذا الجدول بنفسك!
Order ID | Product ID | Order Date | Product Name | Supplier Name |
---|---|---|---|---|
1 | 201 | 2024-11-01 | Laptop | TechSupply |
1 | 202 | 2024-11-01 | Mouse | TechSupply |
2 | 201 | 2024-11-02 | Laptop | TechSupply |
3 | 203 | 2024-11-03 | Keyboard | KeyMasters |
1. تحديد المفتاح المرشح لدينا
معرف الطلب ومعرف المنتج يجمعان بشكل فريد كل صف، مما يجعل (معرف الطلب، معرف المنتج) مفتاح مرشح مركب. لا يمكن لأي عمود فردي تحديد الصفوف بشكل فريد لأن:
- معرف الطلبلوحده ليس فريدًا، حيث يمكن أن تكون عدة منتجات جزءًا من نفس الطلب.
- معرف المنتجلوحده ليس فريدًا، حيث يمكن أن يظهر نفس المنتج في طلبات مختلفة.
هذا يعني أن (رقم الطلب، رقم المنتج) هو أيضا مفتاحنا الرئيسي.
2. تحديد تبعياتنا الوظيفية
تاريخ الطلب يعتمد على معرف الطلب (ليس على المفتاح المركب الكامل). هذه تعتمد جزئيًا.
اسم المنتج و اسم المورد يعتمدان على معرف المنتج (وليس على المفتاح الرئيسي الكامل). هذه تعتبر تبعيات جزئية أيضًا.
3. القضاء على التبعيات الجزئية
نحتاج إلى تقسيم الجدول إلى جداول أصغر، تتناول كل منها تبعية منطقية واحدة.
أولاً، سنقوم بإنشاء جدول لمعلومات الطلبات، الذي يحتوي على معلومات محددة لـرقم الطلب.
جدول الطلبيات
Order ID | Order Date |
---|---|
1 | 2024-11-01 |
2 | 2024-11-02 |
3 | 2024-11-03 |
ثم، نقوم بإنشاء جدول يحتوي على معلومات محددة لـرقم المنتج.
جدول الطلبات
Product ID | Product Name | Supplier Name |
---|---|---|
201 | لابتوب | توريد التقنية |
202 | فأرة | توريد التقنية |
203 | لوحة مفاتيح | مفاتيح رئيسية |
تم تقليص الجدول الأصلي الآن إلى المفتاح المركب فقط والعلاقات بين الطلبات والمنتجات.
Order ID | Product ID |
---|---|
1 | 201 |
1 | 202 |
2 | 201 |
3 | 203 |
الآن، قاعدة البيانات لدينا في الشكل الطبيعي الثاني لأن 1) تم القضاء على جميع التبعيات الجزئية، و2) تعتمد السمات غير الرئيسية بالكامل على مفاتيحها الأساسية الخاصة.
متى يجب تنفيذ الشكل الطبيعي الثاني
لذا، لماذا يجب عليك إعادة تنظيم قاعدة البيانات إلى الشكل الطبيعي الثاني؟ هل هو كافٍ بمفرده أم يجب أن تتخذ خطوة إضافية وتهدف إلى الشكل الطبيعي الثالث؟
الفوائد والقيود للشكل الطبيعي الثاني
الشكل الطبيعي الثاني يقدم عدة مزايا، مما يجعله خطوة مفيدة في عملية تطبيع قاعدة البيانات:
- تعزيز سلامة البيانات: من خلال القضاء على التبعيات الجزئية، يقلل الشكل الطبيعي الثاني من الشذوذات في الإدراج والتحديث والحذف، مما يؤدي إلى قاعدة بيانات أكثر موثوقية.
- تقليل التكرار: يقلل الشكل الطبيعي الثاني من تكرار البيانات، مما يحسن استخدام التخزين ويبسط صيانة البيانات.
- الهيكل البيانات المحسن: يمهد الطريق لتطور الطبيعة الثالثة الأكثر اعتيادًا، من خلال إنشاء تصميم قاعدة بيانات أكثر نظافة وكفاءة.
لكنه يأتي مع بعض القيود:
- زيادة التعقيد: تفكيك الجداول لتحقيق 2NF يمكن أن يجعل عملية التصميم أكثر تعقيدًا، خاصة عند التعامل مع المفاتيح المركبة والاعتماديات.
- الانضمامات الإضافية: قد تتطلب تقسيم الجداول مزيدًا من الانضمامات في الاستعلامات، مما قد يؤثر على الأداء في الأنظمة التي تحتوي على مجموعات بيانات كبيرة أو استعلامات معقدة – تفاصيل أكثر حول ذلك فيما يلي.
- التكرار الزائدي: بينما تقلل الشكل الطبيعي الثاني من الاعتماديات الجزئية، إلا أنه لا يعالج الاعتماديات العابرة، مما يترك بعض التكرار حتى يتم التعامل معه في الشكل الطبيعي الثالث.
اعتبارات الأداء مع الشكل الطبيعي الثاني
يمكن أن يؤثر تفكيك الجداول لإزالة التبعيات الجزئية بشكل مباشر على أداء قاعدة البيانات. من جهة، فإن تحقيق 2NF يقلل من وفرة البيانات ويحسن من التناسق، مما يؤدي إلى تقليل الشذوذ أثناء عمليات الإدخال أو التحديث أو الحذف. من جهة أخرى، يمكن أن تؤدي التطبيع إلى زيادة عدد الجداول، مما يعني أن عمليات الربط الإضافية ستكون ضرورية عند استرجاع البيانات ذات الصلة. هذا قد يؤثر على أداء الاستعلامات في مجموعات البيانات الكبيرة.
لضمان بقاء قاعدة بياناتك المعيارية فعالة، تأكد من اتباع هذه الممارسات الجيدة:
- الفهرسة: استخدم الفهارس لتسريع عمليات الربط بين الجداول المفككة.
- تحسين الاستعلام: حسن الاستعلامات لتقليل تكلفة الوصلات الإضافية.
- نهج مختلط: قم بدمج التطبيع مع عدم التطبيع في المجالات التي تكون فيها الأداء مهمًا، مثل جداول التقارير.
- مراقبة منتظمة: قم بتقييم أداء قاعدة البيانات الخاصة بك بشكل مستمر باستخدام أدوات التحليل الشخصي للكشف عن أي مشكلة محتملة.
هل الشكل الطبيعي الثاني مجرد خطوة انتقالية لتحقيق الشكل الطبيعي الثالث؟
في معظم الحالات، يسعى مصممو قواعد البيانات إلى تحقيق الصيغة الطبيعية الثالثة بسبب قدرتها على تقليل التكرار بشكل أكبر وتحسين سلامة البيانات بشكل عام. ومع ذلك، ينطوي تحقيق الصيغة الطبيعية الثالثة في كثير من الأحيان على عمل إضافي، مثل إنشاء مزيد من الجداول والعلاقات، مما يمكن أن يزيد من التعقيد ويتسبب في تنازلات في أداء تنفيذ الاستعلامات.
هناك حالات يمكن فيها أن يكون استخدام الصيغة الطبيعية الثانية بمفرده كافيًا. إذا كانت البساطة والتنفيذ السريع من الأولويات، مثل في المشاريع بمقياس صغير، عمليات النمذجة الأولية، أو الحالات التي تكون فيها تكرار البيانات أدنى، يمكن أن تكون الصيغة الطبيعية الثانية كافية. على سبيل المثال، في الأنظمة التي تكون جميع البيانات التابعة لمفتاح أساسي بسيط بالفعل، فإن تحقيق الصيغة الطبيعية الثانية قد يحقق الهدف الأساسي لتقليل التبعية الجزئية، دون الحاجة إلى تطبيع إضافي.
الانتقال إلى ما بعد الصيغة الطبيعية الثانية: نحو الصيغة الطبيعية الثالثة
إذا كنت ترغب في تطبيع قاعدة بياناتك بشكل أكبر، يمكنك مواصلة إعادة تنظيم الجداول الخاصة بك لتصل إلى الصيغة الطبيعية الثالثة.
تقوم 3NF بالبناء على 2NF من خلال معالجة التبعيات الانتقالية – الحالات التي تعتمد فيها السمات غير الأساسية على سمات غير أساسية أخرى بدلاً من المفتاح الأساسي. يضمن هذا التقدم أن كل سمة تعتمد مباشرة على المفتاح الأساسي ولا شيء آخر.
على سبيل المثال، في جدول يتتبع تسجيلات الدورات:
- 2NF: تضمن أن السمات مثل اسم الدورة واسم الطالب تعتمد تمامًا على مفاتيحها الرئيسية الخاصة (على سبيل المثال، معرف الطالب و معرف الدورة). وهذا يقضي على الاعتماديات الجزئية، حيث تعتمد السمات غير المفتاحية فقط على جزء من المفتاح المركب.
- 3NF: يضمن تخزين سمات مثل تفاصيل المدرب أو معلومات القسم في جداول منفصلة، مما يلغي الاعتماديات الانتقالية.
3NF مثالي للأنظمة الأكثر تعقيدًا حيث تكون سلامة البيانات والكفاءة ذات أهمية قصوى، خاصة مع زيادة حجم البيانات. تحقق من مقالتنا ما هي الصورة الطبيعية الثالثة؟ إذا كنت ترغب في معرفة المزيد عن 3NF وشكلها الأكثر تقييدًا، BCNF.
الخاتمة
الصورة الطبيعية الثانية هي خطوة أساسية في تطبيع قواعد البيانات، حيث تسد الفجوة بين 1NF والأشكال الأعلى مثل 3NF. من خلال إزالة الاعتماديات الجزئية، تقلل 2NF من التكرار وتحسن موثوقية بياناتك. على الرغم من أنها قد تضيف بعض التعقيد، إلا أن فوائد تحسين سلامة البيانات والصيانة المبسطة تجعلها جزءًا حيويًا من تصميم قواعد البيانات الفعال.
إذا كنت مستعدًا لتعزيز مهاراتك، استكشف دورة تصميم قواعد البيانات لتعميق فهمك لتقنيات التطبيع وتطبيقاتها العملية. يمكنك أيضًا التحقق من مهاراتك في SQL وإدارة قواعد البيانات وإظهار خبرتك للجهات المحتملة من خلال شهادة الشريك في SQL!
أخيرًا، أود أن أقول، إذا كنت صانع قرار في شركة وتعلم أنه لديك عمل في إنشاء قواعد بيانات أنظف وأكثر كفاءة، فكر في تقديم طلب عرض توضيحي لـ DataCamp for Business . يمكننا مساعدتك في تحويل قدرات فريقك حتى تتمكن من إنشاء أنظمة قواعد بيانات قابلة للتوسع تعزز من كفاءة الأعمال والابتكار. يمكننا حتى إنشاء مسارات تعلم مخصصة ومسارات مخصصة.
Source:
https://www.datacamp.com/tutorial/second-normal-form