2010-03-18 9 views
19

व्यवस्थापक सेटिंग्स को संग्रहीत करने के लिए एक MySQL तालिका को संरचित करने का सबसे अच्छा तरीका क्या है?मैं अपनी सेटिंग्स तालिका को MySQL के साथ कैसे ढूढ़ूं?

इस तरह?

Setting _|_ Value 
setting1 | a 
setting2 | b 
setting3 | c 
setting4 | d 
setting5 | e 

या इस तरह?

|--------|_setting1_|_setting2_|_setting3_|_setting4_|_setting5_| 
Settings | a  | b  | c  | d  | e  | 

या शायद कुछ और तरीका?

उत्तर

20

तालिका नाम = 'सेटिंग'

name | varchar <-- primary key 
value | varchar 

तो फिर तुम इस तरह क्वेरी कर सकते हैं:

SELECT * FROM settings WHERE name = 'default_printer'; 

यह विकल्प अच्छा और आसान है और यह 10, या 10,000 सेटिंग्स के साथ अच्छी तरह से काम करेगा। दूसरे विकल्प के साथ आपको एक नया कॉलम जोड़ना होगा, जो समय की पूरी तरह से व्यर्थ अपशिष्ट होगा।

संपादित

अपने 1 टिप्पणी के बाद आप इस तरह से अधिक मान चुन सकते हैं:

SELECT * FROM settings WHERE name IN ('default_printer','default_page_size'); 

:-)

+0

+1 स्पष्ट रूप से उनका कहना है कि मैं एक प्राथमिक जरूरत के लिए जोड़ने पर विचार करें कुंजी, क्योंकि मैं इसे अपने मूल पोस्ट में भूल गया;) ... बहुत अच्छा लग रहा है। मुझे विशेष रूप से यह पसंद है, इस सेटअप का उपयोग करके, मैं एक फ़ंक्शन कर सकता हूं जो मुझे एक सेटिंग (या एक समय में एकाधिक सेटिंग्स) चुनने की अनुमति देगा, जो बहुत आसान होगा। – Cam

+2

मैं सहमत हूं, मैंने एक और संभावित SQL कथन जोड़ा है, हम इस विधि का उपयोग हमारे ईआरपी सिस्टम पर करते हैं, जिसमें कई सेटिंग्स हैं। :-) –

+0

क्या होगा यदि आप "वैल्यू" में विभिन्न प्रकारों को स्टोर करना चाहते हैं, तो क्या यह बाद में आपके कोड में डालने के लिए स्वीकार्य है? यदि आपके पास बहुत कम सेटिंग्स हैं और वे सभी अलग-अलग प्रकार हैं I.e. स्ट्रिंग, int, float, क्या यह दूसरी स्कीमा का उपयोग करने के लिए और अधिक समझ में आएगा? – radtek

0

हमेशा की तरह, यह निर्भर करता है। समाधान 1 आसान है। सोल # 2 आसानी से ओआरएम के साथ एकीकृत करता है, लेकिन डीबी पंक्ति आकार सीमाओं को मार सकता है। ओटीएलटी के लिए Google (जैसा कि एक ट्रू लुकअप टेबल समस्या में है) आपके पास कितनी सेटिंग्स हैं (कुछ? दर्जन? सैकड़ों?) आपको उन्हें कितनी बार आवश्यकता होगी?

+0

Dozens क्वेरी साझा कर सकते हैं। मुझे उनमें से कुछ को अक्सर प्रत्येक पृष्ठदृश्य के रूप में आवश्यकता हो सकती है। यही है, एक व्यवस्थापक सेटिंग प्रत्येक बार प्रदर्शित होने पर कुछ पृष्ठों के दृश्य को प्रभावित कर सकती है। एक उदाहरण के रूप में, सेटिंग्स में से एक एक विशेष रुप से प्रदर्शित उत्पाद का नाम होगा, और एक और सेटिंग कहा गया उत्पाद की gif छवि के लिए फ़ाइल नाम होगा। – Cam

1

आपका पहला उदाहरण, नाम-मूल्य जोड़े या ईएवी, एक अच्छा सौदा अधिक लचीलापन की अनुमति देता है।

wiki page about EAV modelling in databases देखें।

3

कॉलम के रूप में पहले विकल्प (Setting, Value) पर विचार करें। लेकिन यह भी अतिरिक्त, मेटा स्तंभों के रूप में अच्छी तरह से इस तरह के रूप Description (काम में आते हैं आप अस्पष्ट सेटिंग्स के बहुत पास है तो), PreviousValue, LastUpdated, UpdatedBy, आदि

+1

मेटा कॉलम जोड़ने में अच्छी युक्तियां – afarazit

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