سؤال

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

عقدة خاصة:

  1. لا يمكن أن يكون لديك أي حواف تؤدي إليها.
  2. لا يمكن إزالتها.

التصميم الحالي:

الطاولات: العقد والحواف. تحتوي الحواف على أعمدة؛ from_node_id و to_node_id، كل مراجع سجل في جدول العقد.

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

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

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

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

المحلول

أرى بعض الحجج ضد استخدام NULL في هذه الحالة.

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

بمعنى آخر، أفضل أن يكون لديك صف في قاعدة البيانات للعقدة المركزية.

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