سؤال

لماذا يستمر رجال قاعدة البيانات في التطبيع؟

ما هذا؟كيف يساعد؟

هل ينطبق على أي شيء خارج قواعد البيانات؟

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

المحلول

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

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

بعض أخطاء التطبيع النموذجية:

(1) وجود أكثر من قيمة في الخلية.مثال:

UserId | Car
---------------------
1      | Toyota
2      | Ford,Cadillac

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

UserId | Car
---------------------
1      | Toyota
2      | Ford
2      | Cadillac

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

(2) وجود بيانات غير أساسية زائدة عن الحاجة (أي.تكرار البيانات دون داع في عدة صفوف).مثال:

UserId | UserName | Car
-----------------------
1      | John     | Toyota
2      | Sue      | Ford
2      | Sue      | Cadillac

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

UserId(FK) | Car               UserId(PK) | UserName
---------------------          -----------------
1          | Toyota            1          | John
2          | Ford              2          | Sue
2          | Cadillac

الآن قد يبدو أنه لا يزال لدينا بيانات زائدة عن الحاجة لأن معرفات المستخدم متكررة؛ومع ذلك، يضمن قيد PK/FK عدم إمكانية تحديث القيم بشكل مستقل، لذا فإن التكامل آمن.

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

لا تخافوا من التطبيع.التعريفات الفنية الرسمية لمستويات التطبيع غامضة تمامًا.يجعل الأمر يبدو وكأن التطبيع هو عملية رياضية معقدة.ومع ذلك، فإن التسوية هي في الأساس مجرد المنطق السليم، وستجد أنه إذا قمت بتصميم مخطط قاعدة بيانات باستخدام المنطق السليم، فسيتم عادةً تسوية ذلك بالكامل.

هناك عدد من المفاهيم الخاطئة حول التطبيع:

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

  • في بعض الأحيان يتم وصف التطبيع بأنه عملية تصميم تدريجية وعليك أن تقرر "متى تتوقف".لكن في الواقع، تصف مستويات التطبيع مشاكل محددة مختلفة.المشكلة التي تم حلها عن طريق النماذج العادية فوق 3rd NF هي مشاكل نادرة جدًا في المقام الأول، لذلك من المحتمل أن يكون مخططك موجودًا بالفعل في 5NF.

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

نصائح أخرى

قواعد تطبيع (مصدر:مجهول)

  • المفتاح (1NF)
  • المفتاح كله(2NF)
  • ولا شيء سوى المفتاح (3NF)

...اذا ساعدني كود.

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

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

ونصيحتي هي أن تبدأ مع درجة جيدة من التطبيع وإلا تفعل دي التطبيع عند الحاجة حقا

وP.S. أيضا التحقق من هذا المقال: http://en.wikipedia.org/wiki/Database_normalization لقراءة المزيد على أشكال الموضوع وحول ما يسمى <م> عادي

والتطبيع إجراء تستخدم للقضاء على التكرار وتبعيات وظيفية بين الأعمدة في الجدول.

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

والتكرار واعتماد البيانات غير مرغوب فيه لأنه يمكن أن يؤدي إلى inconsisencies عند تعديل البيانات.

الغرض منه هو تقليل تكرار البيانات.

لمزيد من المناقشة الرسمية، راجع ويكيبيديا http://en.wikipedia.org/wiki/Database_normalization

سأقدم مثالا مبسطا إلى حد ما.

افترض أن قاعدة بيانات المنظمة تحتوي عادةً على أفراد العائلة

id, name, address
214 Mr. Chris  123 Main St.
317 Mrs. Chris 123 Main St.

يمكن تطبيعها كما

id name familyID
214 Mr. Chris 27
317 Mrs. Chris 27

وطاولة عائلية

ID, address
27 123 Main St.

عادة لا يتم استخدام التسوية شبه الكاملة (BCNF) في الإنتاج، ولكنها خطوة وسيطة.بمجرد وضع قاعدة البيانات في BCNF، عادة ما تكون الخطوة التالية هي: إزالة التطبيع وذلك بطريقة منطقية لتسريع الاستعلامات وتقليل تعقيد بعض الإدخالات الشائعة.ومع ذلك، لا يمكنك القيام بذلك بشكل جيد دون تطبيعه بشكل صحيح أولاً.

والفكرة هي أن المعلومات الزائدة عن الحاجة يتم تقليلها إلى إدخال واحد.وهذا مفيد بشكل خاص في مجالات مثل العناوين، حيث يقوم السيد.يقدم كريس عنوانه باسم Unit-7 123 Main St.والسيدة.يسرد كريس Suite-7 123 Main Street، والذي سيظهر في الجدول الأصلي كعنوانين مختلفين.

عادةً ما تكون التقنية المستخدمة هي البحث عن العناصر المتكررة وعزل تلك الحقول في جدول آخر بمعرفات فريدة واستبدال العناصر المتكررة بمفتاح أساسي يشير إلى الجدول الجديد.

ونقلا عن CJ التاريخ: النظرية العملية

وسوف المغادرة من التطبيع يؤدي في بعض الحالات الشاذة في قاعدة البيانات الخاصة بك.

سوف

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

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

سوف

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

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

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

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

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

والتطبيع هو أحد المفاهيم الأساسية. وهو ما يعني أن أمرين لا تؤثر على بعضها البعض.

في قواعد البيانات يعني على وجه التحديد بأن اثنين (أو أكثر) طاولات لا تحتوي على نفس البيانات، أي لم يكن لديك أي التكرار.

في أول وهلة ما هو جيد حقا لأن فرصها لجعل بعض مشاكل التزامن هي قريبة من الصفر، وكنت دائما يعرف أين بياناتك وغيرها، ولكن على الأرجح، سوف رقمك من الجداول تنمو وسيكون لديك مشاكل ل عبور البيانات والحصول على بعض النتائج ملخص.

وهكذا، في النهاية سوف تنتهي مع تصميم قاعدة البيانات التي ليست نقية تطبيع، مع بعض التكرار (سيكون في بعض المستويات الممكنة من التطبيع).

ما هو التطبيع؟

التطبيع هو عملية رسمية حكيمة تسمح لنا بتحليل جداول قاعدة البيانات بطريقة يمكن لكليهما تكرار البيانات و تحديث الحالات الشاذة يتم تصغيرها.

عملية التطبيع
enter image description here كياسة

النموذج العادي الأول إذا وفقط إذا كان مجال كل سمة يحتوي على قيم ذرية فقط (القيمة الذرية هي قيمة لا يمكن تقسيمها)، وكانت قيمة كل سمة تحتوي على قيمة واحدة فقط من هذا المجال (مثال: - المجال لعمود الجنس هو :"م"، "ف".).

النموذج العادي الأول يفرض هذه المعايير:

  • إزالة المجموعات المكررة في الجداول الفردية.
  • قم بإنشاء جدول منفصل لكل مجموعة من البيانات ذات الصلة.
  • تحديد كل مجموعة من البيانات ذات الصلة باستخدام المفتاح الأساسي

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

النموذج العادي الثالث = 2NF + لا توجد تبعيات متعدية، أيجميع السمات غير الرئيسية تعمل بكامل طاقتها وتعتمد بشكل مباشر على المفتاح الأساسي فقط.

بويس-كود النموذج الطبيعي (أو BCNF أو 3.5NF) هو نسخة أقوى قليلاً من الشكل العادي الثالث (3NF).

ملحوظة: - النماذج العادية الثانية والثالثة وبويس-كود تهتم بالتبعيات الوظيفية.أمثلة

النموذج العادي الرابع = 3NF + إزالة التبعيات متعددة القيم

الشكل العادي الخامس = 4NF + إزالة تبعيات الانضمام

ويساعد على منع البيانات المكررة (والأسوأ من ذلك، متضاربة).

ويمكن أن يكون لها تأثير سلبي على الأداء بالرغم من ذلك.

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