سؤال

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

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

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

هل الحل الوحيد للاستمرار في استخدام procs المخزنة؟ وقد أي شخص آخر حل هذا؟

وتوضيح: 25000 بواسطة العقد في شجرة أنا في اشارة الى حجم مجموعة البيانات الهرمية، وليس لأي علاقة مع الأشياء أو إطار الكيان

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

المحلول

وربما الأفضل لاستخدام نمط يسمى "مجموعة متداخلة"، والذي يسمح لك للحصول على الشجرة الفرعية التعسفية في استعلام واحد. وهذا مفيد خصوصا إذا لم يتم التلاعب بها العقد في كثير من الأحيان: <لأ href = "http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/" يختلط = "نوفولو noreferrer" عنوان = "الإداري البيانات الهرمية في الخلية "> إدارة البيانات الهرمية في الخلية .

في عالم مثالي أن إطار كيان توفر الإمكانيات لحفظ البيانات والاستعلام باستخدام هذا النمط البيانات.

نصائح أخرى

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

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

وشكرا لهذه الاقتراحات.

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

وبهذه الطريقة، وأنا على أمل الحصول على اثنين من المزايا الرئيسية:

وأ) أسرع الاستعلام ضدنا × × الأشجار الفرعية التعسفية

وب) نموذج البيانات الذي لم يعد يتطلب الاستعلام العودية - لذلك ربما جعلها في متناول اليد من إطار الكيان

!

وانها دائما للدهشة في كثير من الأحيان الجواب الصحيح لمشكلة صعبة ليست للرد عليه، ولكن أن تفعل شيئا آخر بدلا من ذلك!

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