2013-02-21 105 views
19

मैं फेसबुक की तरह एक अधिसूचना प्रणाली तैयार करने की कोशिश कर रहा हूं और मैं एक ईंट की दीवार तक पहुंच गया हूं। मेरी आवश्यकता एक अधिसूचना प्रकारों की असीमित संख्या का समर्थन करने में सक्षम होना है जिसमें विभिन्न प्रकार के मेटा डेटा को प्रस्तुत करने की आवश्यकता हो सकती है।सूचना प्रणाली के लिए डेटाबेस स्कीमा फेसबुक के समान

मैं सोच रहा हूँ कि मैं स्कीमा इस प्रकार डिजाइन करेंगे:

**Notification** 
Id (int) 
TypeId (int) 
RecipientId (int) 
SenderId (int) 
SendDateTime (DateTime) 
Read (bool) 
MessageData (...Blob?) 
Deleted (bool) 

**NotificationType** 
Id 
Name 
Description 

मैं वास्तव में, मेरे डेटाबेस में एचटीएमएल तार भंडारण से बचने की कोशिश करना चाहते हैं हालांकि, मैं भी नहीं धब्बे के भंडारण के लिए विशेष रूप से शौकीन या तो कर रहा हूँ ।

यह संभव है कि मैं अधिसूचना टाइप तालिका पर एक नज़र डाल सकूं और उस तालिका के लिए विशिष्ट डेटा को संदर्भित करता हूं, जिसका मतलब यह होगा कि हर बार जब मैंने एक नई अधिसूचना बनाई है तो मुझे एक नया निर्माण करने की आवश्यकता होगी तालिका। मेरा मानना ​​है कि मैं डेटा प्राप्त करने के लिए गतिशील एसक्यूएल लिखने की दुनिया में भी खुद को प्राप्त कर रहा हूं।

क्या किसी के पास मेरे लिए कोई सुझाव है?

+0

मैं इसी समस्या पर काम कर रहा हूं। मेरे पास आपके जैसी ही संरचना है, लेकिन एचटीएमएल रूट के साथ चला गया। विवरण कॉलम में, मेरे पास जैसा कुछ है। फिर मैं user_id के माध्यम से अधिसूचना पूछता हूं और स्पैन आईडी के आधार पर संदेश को पॉप्युलेट करने के लिए जावास्क्रिप्ट का उपयोग करता हूं। –

+0

@mcottingham मैं एक ही तरह की समस्या से निपट रहा हूं, मैंने कुछ ऐसा करने के बारे में सोचा जो इसे केवल एक्सएमएल के रूप में संग्रहीत करता है, लेकिन यह सही नहीं दिखता है ... काश मैं यह देखने के लिए एक झलक ले सकता हूं कि एफबी ने यह कैसे किया .. – formatc

उत्तर

26

यहां इस समस्या को हल करने का तरीका बताया गया है।

Notifications Schema

मैं डेटा है कि प्रत्येक सूचना प्रकार के अद्वितीय है स्टोर करने के लिए एक शब्दकोश का उपयोग करने का फैसला किया। मैं फिर उस ऑब्जेक्ट ऑब्जेक्ट को बाइनरी स्ट्रिंग में संग्रहीत करता हूं और प्रत्येक अधिसूचना के साथ डेटाबेस में स्टोर करता हूं। मेरे पास प्रत्येक अधिसूचना प्रकार को असाइन किया गया एक टेम्पलेट है जिसमें प्लेसहोल्डर यानी शामिल हैं। '{song-title}' कि मैं अपने शब्दकोश ऑब्जेक्ट से मूल्यों के साथ त्वरित रूप से प्रतिस्थापित कर सकता हूं।

+5

क्या आपने समस्या हल की है "उपयोगकर्ता ने कुछ सामग्री हटा दी है और मुझे सभी संबंधित नोटफोकेशन को हटाना है"? – Backs