"श्रेणियों" के लिए एक से अधिक तालिका रखने का कोई कारण नहीं है, चाहे वह शीर्ष-स्तरीय श्रेणी हो या उप-श्रेणी। वे सभी केवल "श्रेणियां" हैं।
तो, एक parent_id
. के साथ "श्रेणियों" नामक एक एकल तालिका है फ़ील्ड:
// categories table
id
name
user_id
parent_id
जब आप सभी शीर्ष स्तरीय श्रेणियों को खींचना चाहते हैं, तो बस अपनी क्वेरी को categories
. के विरुद्ध चलाएँ इस शर्त के साथ तालिका कि parent_id
शून्य है।
फिर, जब आप उपश्रेणियों को खींचना चाहते हैं, तो बस categories
के विरुद्ध क्वेरी चलाएँ इस शर्त के साथ तालिका कि parent_id = 123
(या जो कुछ भी)।
यह न केवल सब कुछ बहुत साफ रखता है, बल्कि यदि आप उप-उप-उप-उप श्रेणियों को जोड़ना जारी रखना चाहते हैं तो यह विस्तार की अनुमति भी देता है...आदि।
एक अन्य विकल्प KakePHP's TreeBehavior का उपयोग करना है। ।
मैं व्यक्तिगत रूप से ऊपर सुझाए गए तरीके का उपयोग करता हूं, लेकिन ऐसा इसलिए हो सकता है क्योंकि मैंने इस व्यवहार को वास्तव में पर्याप्त रूप से समझने के लिए समय नहीं लिया है।