كيفية تصميم نموذج لشبكة النظرية الافتراضية أو بصورة أعم، رسم بياني المرجح موجهة، في SQL؟

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

سؤال

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

هل هناك أفضل / الطريقة القياسية لعمل هذا؟ تفكيري الحالي هو شيء من هذا القبيل:

create table node (
  id int not null auto_increment,
  name TEXT
)

create table edge (
  from_node int not null,
  to_node int not null,  
  weight float
) 

هل هناك أي شيء خطأ في ذلك؟ أحد يعرف ل(أكثر قوة، ربما) طريقة أفضل؟

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

المحلول

وهذا من شأنه أن يكون تماما نهجا معقولا. SQL لا حقا هياكل متكررة بشكل جيد، على الرغم من أن بعض الأنظمة مثل أوراكل أو SQL Server لها وظيفة الاستعلام متكررة.

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

وكشبكة النظرية الافتراضية هي إخراج حلقية الرسم البياني (DAG)، أحد الوالدين عودي بحتة العلاقة -child ليست كافية لوضع نموذج لشبكة (أي عقدة يمكن أن يكون الوالدين أكثر من واحد)، وذلك على M: M علاقة من النوع الذي وصفته سيكون ضروريا

ومختلف من 'SQL للسمارتيز "الكتب التي كتبها <وأ href =" http://www.amazon.com/s/ref=nb_ss_gw؟url=search-alias٪3Daps&field-keywords=joe+celko&x=0&y= 0 "يختلط =" نوفولو noreferrer "> جو كيلكو إعطاء لمحة جيدة من التقنيات لتنفيذ والاستعلام عن الهياكل الهرمية والرسم البياني في SQL. هذه هي حتى الآن أفضل الموارد حول هذا الموضوع أن أعرف. موصى به للغاية.

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