2009-08-25 10 views
9

मेरे पास एक मौजूदा वेबपैप है और एक टैग सुविधा जोड़ना चाहते हैं ताकि उपयोगकर्ता मौजूदा ऑब्जेक्ट्स को टैग कर सकें। सवाल यह है कि क्या मैं प्रत्येक ऑब्जेक्ट में टैग कॉलम जोड़ूं? या मुझे इसे सामान्य बनाना चाहिए और एक टैग टेबल का उपयोग करना चाहिए जहां प्रत्येक ऑब्जेक्ट में टैग का संग्रह होगा? मैं उत्तरार्द्ध की ओर झुका रहा हूं क्योंकि यह टैग क्लाउड बनाने के लिए क्लीनर, रिपोर्ट करना आसान और आसान लगता है। लेकिन चूंकि मुझे पता है कि यह 1000 बार हल हो गया है, मैं पूछना चाहता था कि क्या मुझे कुछ याद आ रहा है?डेटाबेस में टैग कैसे मॉडल करें?

उत्तर

6

क्या आप उपयोगकर्ताओं को एक ऑब्जेक्ट के साथ एक से अधिक टैग को जोड़ने की आवश्यकता है?

यदि नहीं है, तो TAG_ID FK को OBJECT तालिका में जोड़ें। अन्यथा, आप कुल में तीन टेबल आवश्यकता होगी सही ढंग से मॉडल करने के लिए अनेक-से-अनेक संबंध:

वस्तु

  • object_id (पी)

OBJECT_TAG_XREF

  • object_id (पीके, एफके से ओबीजेईसीटी)
  • TAG_ID (पीके, टैग करने के लिए एफके)

टैग

  • TAG_ID (पी)
+0

कैसे इस परिवर्तन उपयोगकर्ताओं के लिए टैग संबद्ध करने के लिए चाहते हैं? क्या OBJECT_ID USER_ID बन जाएगा? –

+1

@ जुनीपरएश: आपको 'user_id' कॉलम' OBJECT_TAG_XREF' में जोड़ना होगा - उपयोगकर्ता तालिका में अन्य दो कॉलम, प्राथमिक कुंजी और विदेशी कुंजी के समान। –

+0

अधिक समझ में आता है! धन्यवाद! –

4

हां, आपको इसे सामान्य बनाना चाहिए। 'टैग कॉलम' या तो रिकॉर्ड प्रति केवल एक टैग का समर्थन करने जा रहा है, या इसमें भयानक खोज प्रदर्शन होगा।

2

निश्चित रूप से सामान्यीकृत करें। टैग के लिए एक टेबल, आपकी मौजूदा वस्तुओं के लिए एक टेबल, और उनके बीच लिंक की एक तालिका।

संबंधित मुद्दे