वहाँ एक मजाक है जो मैंने कुछ समय पहले सुना था:
प्रश्न 10 में एक बेसिक कोडर कैसे गिना जाता है?
एक 1,2,3,4,5,6,7,8,9,10
Q एक सी कोडर 10 तक कैसे गिना जाता है?
एक 0,1,2,3,4,5,6,7,8,9
Q DBA की गिनती 10 तक कैसे होती है?
एक 0,1, कई
इस मज़ाक के पीछे की सच्चाई यह है कि एक बार डेटाबेस संरचना (कॉलम या टेबल) में एक ही चीज़ के दो (या अधिक) होने पर आप इसे गलत कर रहे हैं।
ऐसा स्कीमा जो दिखता है:
+----------+
| id |
| name |
| phone1 |
| phone2 |
| |
+----------+
गलत है क्योंकि अगर किसी के पास तीसरा फोन नंबर होगा तो आप उसे कहां रखेंगे?
वही तालिकाओं पर लागू होता है। इसकी एक खराब चीज स्कीमा को रनटाइम पर संशोधित करने के लिए है, जो "प्रत्येक सूची के लिए नई तालिका" का अर्थ है। (संबंधित: MVC4: रन टाइम में मॉडल कैसे बनाएं? )
और इस प्रकार, समाधान एक टूडू सूची बनाना है जिसमें दो तालिकाओं का समावेश है। आपके पास दो चीजें हैं - सूचियां और आइटम।
तो, एक तालिका संरचना है कि यह दर्शाता है:
+----------+ +-------------+
| List | | Task |
+----------+ +-------------+
| id (pk) <---+ | id (pk) |
| name | +---+ listid (fk) |
| | | desc |
| | | |
+----------+ +-------------+
सूची में एक आईडी (सूची के लिए प्राथमिक कुंजी), और एक नाम है। कार्य में एक आईडी (प्राथमिक कुंजी) एक सूची (एक विदेशी कुंजी) और कार्य का विवरण है। विदेशी कुंजी किसी अन्य तालिका की प्राथमिक कुंजी से संबंधित है।
मैं यह इंगित करूंगा कि यह सॉफ्टवेयर और टेबल संरचना के लिए विभिन्न आवश्यकताओं में सभी संभावनाओं को समाहित करना शुरू नहीं करता है। पूर्ण, नियत तिथि, बार-बार, आदि ... ये सभी अतिरिक्त संरचनाएं हैं जिन्हें तालिका को डिजाइन करते समय विचार करने की आवश्यकता होगी। यदि टेबल संरचना एक है जो उचित रूप से सामान्यीकृत नहीं है (या आपके द्वारा बनाए गए ट्रेडऑफ को साकार करने के लिए, तो यह सामान्य नहीं है), आपके पास बाद में कई सिरदर्द होंगे।
अब, यह सब एक रिलेशनल डेटाबेस के रूप में इसे लिखने से संबंधित है। लेकिन वहाँ डेटाबेस का एकमात्र प्रकार नहीं है। यदि आप एक सूची को एक दस्तावेज मानते हैं तो दस्तावेज स्टाइल नोस्कल डेटाबेस भी एक दृष्टिकोण प्रदान कर सकता है जो गलत नहीं है।
जबकि मैं इसमें बहुत दूर नहीं जा रहा हूँ, वहाँ सोफे पर टूडू सूचियों के लिए कई ट्यूटोरियल हैं। एक ऐसा जो खोज के साथ आया था , काउचडीबी में एक सरल कार्य सूची है । काउचडब विकी में एक और शो: टू-डू लिस्ट के लिए प्रस्तावित स्कीम ।
एक सोफे के लिए उपयुक्त दृष्टिकोण में, प्रत्येक सूची डेटाबेस में संग्रहीत एक JSON दस्तावेज़ है। आप बस सूची को JSON ऑब्जेक्ट में रख देंगे, और डेटाबेस में डाल देंगे। और फिर आप डेटाबेस से पढ़ते हैं।
JSON ऐसा दिख सकता है:
[
{"task":"get milk","who":"Scott","dueDate":"2013-05-19","done":false},
{"task":"get broccoli","who":"Elisabeth","dueDate":"2013-05-21","done":false},
{"task":"get garlic","who":"Trish","dueDate":"2013-05-30","done":false},
{"task":"get eggs","who":"Josh","dueDate":"2013-05-15","done":true}
]
( स्टैक ओवरफ्लो पर एक json फ़ाइल के साथ खरीदारी सूची बनाने से )।
या कि कुछ आ रहा है। कुछ अन्य रिकॉर्ड है कि सोफे दस्तावेज़ के हिस्से के रूप में है।
बात यह है, इसका तरीका गलत नहीं है और दस्तावेज़ डेटाबेस में टूडू सूची पूरी तरह से अनुकूल हो सकती है कि आप इसे कैसे करना है, इसके लिए कम अवधारणा ओवरहेड के साथ क्या करने की कोशिश कर रहे हैं ।