এসকিউএল ব্যবহার করে একটি সম্পর্কিত ডেটাবেজে গাছের মতো ডেটা ট্র্যাভার করে


16

এসকিউএলে ট্রি ডেটা ট্র্যাভার করার কোনও উপায় আছে? আমি connect byওরাকল সম্পর্কে জানি , তবে অন্যান্য এসকিউএল বাস্তবায়নে এটি করার অন্য কোনও উপায় আছে কি? আমি জিজ্ঞাসা করছি কারণ connect byপ্রতিটি ফলাফলের জন্য কোয়েরি চালানোর জন্য লুপ বা পুনরাবৃত্ত ফাংশন লেখার চেয়ে ব্যবহার করা সহজ।

যেহেতু কিছু লোক "ট্রি ডেটা" বাক্যটি দ্বারা বিভ্রান্ত বলে মনে হচ্ছে আমি আরও ব্যাখ্যা করব: আমি যা বলতে চাইছি তা হচ্ছে টেবিলগুলির সাথে সম্পর্কিত যাগুলির সাথে parent_idএকই বা একই ক্ষেত্র রয়েছে যা একই টেবিলে অন্য সারির প্রাথমিক কী রয়েছে।

প্রশ্নটি এমন অভিজ্ঞতা থেকে আসে যেখানে আমি ওরাকল ডাটাবেসে এইভাবে সঞ্চিত ডেটা নিয়ে কাজ করতাম এবং জানতাম যে এটি connect byঅন্যান্য ডিবিএমএসে প্রয়োগ করা হয়নি। যদি কেউ স্ট্যান্ডার্ড এসকিউএল ব্যবহার করে থাকে তবে প্রত্যেকের পিতা-মাতার জন্য একটি নতুন টেবিলের ওরফে তৈরি করতে হবে যার উপরে যেতে চাইবে। এটি সহজেই হাতছাড়া হতে পারে।


আপনার কাছে জো সেলকের সমাধান রয়েছে। কয়েক নমুনা: SQL এর যে গাছ , গাছ ও Oracle এ শ্রেণীবিন্যাসের , নেস্টেড সেট মডেল । সিনট্যাক্স চিনি থাকা দরকার নেই ;-)।
মারিয়ান

উত্তর:


14

সেলকোর বইটি একটি ভাল সংস্থান - যদি কিছু সময় অতিরিক্ত মাত্রায় "একাডেমিক" হয়।

মোটামুটি ভালভাবে কাজ করার জন্য 'ক্লোজার টেবিল' নামে পরিচিত এই পদ্ধতিটি আমি সত্যিই পেয়েছি ।

আপনি যদি এমন একটি ডাটাবেস ব্যবহার করছেন যা পুনরাবৃত্ত সিটিইগুলিকে (যেমন পোস্টগ্র্রেএসকিউএল ৮.৪ বা আরও নতুন বা এসকিউএল সার্ভার ২০০৫ বা আরও নতুন ) মঞ্জুরি দেয় , তবে তারা সত্যিই সবচেয়ে ভাল উপায়। আপনি যদি ওরাকল এ থাকেন তবে সবসময়ে সম্মানজনক "বাই বাই কানেক্ট" থাকে

এটি আমার অভিজ্ঞতা যে "নিষ্পাপ গাছ" স্কিমায় টেবিলের একটি সেট হস্তান্তর করা আরও সাধারণ বিষয়, এবং ক্লিনারটি তৈরি করার সুযোগ পাওয়ার চেয়ে সেই সঞ্চয়স্থান থেকে কীভাবে সঠিক গাছ বের করতে হবে তা নির্ধারণ করতে হবে "ক্লোজার টেবিল" কাঠামো।


9

একটি পুনরাবৃত্তি সিটিই আপনার সহজ সমাধান হতে চলেছে। এসকিউএল সার্ভার 2005 এবং পোস্টগ্র্রেএসকিউএলের বর্তমান সংস্করণগুলি সিটিই সমর্থন করে। আপনি যদি এসকিউএল সার্ভার ২০০৮ বা তার চেয়েও নতুন ব্যবহার করেন তবে আপনি HIERARCHYIDডেটা টাইপ ব্যবহার করতে পারেন । আপনি হায়ারার্কায়আইডিতে এর একটি ভাল উদাহরণ খুঁজে পেতে পারেন : এসকিউএল সার্ভার ২০০৮ এর সাথে আপনার ডেটা হায়ারারচিগুলি মডেল করুন

অতিরিক্ত সম্পদ:


5

এসকিউএল সার্ভারে (২০০৫ এবং পরবর্তী সংস্করণগুলি) আপনি শ্রেণিবিন্যাস পড়ার জন্য সাধারণ সারণী এক্সপ্রেশন ব্যবহার করতে পারেন, মাইক্রোসফ্ট এসকিউএল সার্ভার ২০০ C - সিটিই উদাহরণ হিসাবে বেশ কয়েকটি উদাহরণের জন্য একটি সাধারণ শ্রেণিবদ্ধের উদাহরণ।

আমাকে এই বিষয়ে আরও একটি বইয়ের জন্য সুপারিশ করা হয়েছে যা জো সেলকো দ্বারা রচনা "এসকিউএল জন্য এসকিউএল ইন ট্রি এবং হায়ারার্কিজ" - যদিও আমি নিজে এখনও বইটি দেখিনি।


1

স্ট্যান্ডার্ড এসকিউএল পদ্ধতিটি হ'ল "পুনরাবৃত্তি কোয়েরি" যা পুনরাবৃত্ত সিটিই সরবরাহ করে এবং কোয়েরিতে যেমন মনোনীত WITH [ RECURSIVE ]হয়েছে। প্রয়োগটি নির্দিষ্টকরণে নির্দিষ্ট করা হয়নি, কেবল পুনরুক্তিযুক্ত কাঠামোগুলি অনুসন্ধানের জন্য উপলব্ধ পদ্ধতিগুলি উপলভ্য। ডেটা কাঠামোর সহজতম ক্ষেত্রে প্রয়োগের জন্য কেবল একটি সারিতে একটি আইডি এবং প্যারেন্ট আইডি প্রয়োজন।

এছাড়াও অনেকগুলি আরডিবিএমএস-নির্দিষ্ট সমাধান রয়েছে: উদাহরণস্বরূপ, পোস্টগ্রেএসকিউএল রিকার্সিভ সিটিই সমর্থন করে, তবে এটি ltreeবাস্তবায়নের ক্ষেত্রে বিভিন্ন সুযোগ-সুবিধা এবং অসুবিধাগুলি সরবরাহ করে।

ট্যাগের মাধ্যমে অনুসন্ধান করে আপনি এই সাইটে আরও তথ্য পেতে পারেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.