ماذا يفعل بالضبط التسوية قاعدة البيانات أفعل ؟

StackOverflow https://stackoverflow.com/questions/1102590

  •  12-09-2019
  •  | 
  •  

سؤال

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

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

المحلول

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

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

نصائح أخرى

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

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

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

قاعدة بيانات تطبيع, في أبسط وسيلة للحد من تكرار البيانات.ولتحقيق ذلك ، بعض أشكال تطبيع الوجود.

أول نموذج عادي يمكن تلخيصها كما يلي:

  • لا تكرار الجماعات في الجداول واحدة.
  • جداول منفصلة عن المعلومات ذات الصلة.
  • جميع البنود المدرجة في جدول ذات الصلة المفتاح الأساسي.

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

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

علما أنه سبق تفسيرات تتناسب مع اتجاه سؤالك بدلا من قاعدة بيانات المنظرين ، لذلك الوصف بالضرورة المبسطة (لقد استخدمت عبارات مثل "تلخيص" و "الأساس").

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

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

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

و أن ندرك أن هناك أيضا "أعلى" مستويات تطبيع مثل (الواضح) الرابع والخامس والسادس ، ولكن أيضا بويس-كود والبعض الآخر لا أستطيع أن أتذكر من أعلى رأسي.في الغالبية العظمى من الحالات ، 3NF يجب أن تكون أكثر من كافية.


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

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

هناك الكثير من المواد على الإنترنت لذلك لن تكرر الأشياء هنا مرة أخرى. ولكن يمكنك إلقاء نظرة علىقواعد التطبيع الحالات الشاذة(آخرون aswell)

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

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

ثم ماذا لو كنت ترغب أيضا في تسجيل عدد الكلاب لديهم؟ نفس الجدول مع الكثير من dups مربكة؟ طاولة أخرى مع المنطق المخصص الخاص بك لإدارة المستخدمين الفريدين؟

التطبيع يبقيك بعيدا عن الكثير من هذه المشاكل ...

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