2011-12-21 6 views
10

मैं उपयोगकर्ताओं/ग्राहकों के लिए एक नई प्रणाली तैयार कर रहा हूं और मेरे सिस्टम उपयोगकर्ता प्राथमिकताओं में है। कोड और डेटाबेस बनाने से पहले मैं यह सुनिश्चित करना चाहता हूं कि मैं सही काम करता हूं।डेटा को सरणी या व्यक्तिगत फ़ील्ड (php/MySQL) के रूप में सहेजना

  • फ़ॉन्ट आकार
  • फ़ॉन्ट फ़ेस
  • फ़ॉन्ट रंग
  • विषय
  • मुख पृष्ठ
  • डैशबोर्ड विकल्पों
  • कुछ सही/गलत जैसे विकल्प:

    मैं इन प्राथमिकताएं होती हैं साझाकरण आदि सक्षम करें ...

और अधिक।

मेरा विचार प्रत्येक प्राथमिकता के लिए प्रत्येक फ़ील्ड बनाना था, लेकिन शायद मैं एक ब्लॉब में ऑब्जेक्ट या सरणी को सहेज सकता हूं।

क्या यह एक अच्छा विचार है?

उत्तर

12

आप संपत्ति नामों के संदर्भ रखने के लिए सहायक तालिका बना सकते हैं। फिर आप उपयोगकर्ता आईडी और गुणों में से किसी एक आईडी के बीच उस तालिका को मर्ज तालिका — से लिंक कर सकते हैं। ऐसा करने से, आप हमेशा गुणों को बदल सकते हैं।

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

के मान लें कि:

CREATE TABLE user_preferences_headers 
(
    `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    `name` VARCHAR(255) NOT NULL 
); 

CREATE TABLE `users` 
(
    `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    `name` VARCHAR(255) NOT NULL, 
    `pass` VARCHAR(255) NOT NULL 
); 

CREATE TABLE `user_preferences` 
(
    `id_user` INT NOT NULL, 
    `id_preference_entity` INT NOT NULL, 
    `value` VARCHAR(255) 
); 

ALTER TABLE `user_preferences` ADD INDEX (`id_user`); 
ALTER TABLE `user_preferences` ADD INDEX (`id_preference_entity`); 

ALTER TABLE `user_preferences` ADD FOREIGN KEY (`id_user`) REFERENCES `users` (
`id` 
) ON DELETE CASCADE ON UPDATE CASCADE ; 
ALTER TABLE `user_preferences` ADD FOREIGN KEY (`id_preference_entity`) REFERENCES `user_preferences_headers` (
`id` 
) ON DELETE CASCADE ON UPDATE CASCADE ; 

अब आप पहले नाम से user_preferences_headers से सभी हेडर का चयन करें, या नहीं, और आप इच्छित वरीयता एक उपयोगकर्ता के मान से (आईडी से भी पहचान) का चयन करने के आईडी का उपयोग user_preferences। ध्यान दें कि जब आप user_preferences_headers में कोई प्रविष्टि हटाते हैं, तो हटाए गए पंक्ति की आईडी से लिंक करने वाली सभी प्रविष्टियां भी हटा दी जाएंगी।

+0

+1। यह आईएमओ का एक बहुत अच्छा विचार है। – Herbert

3

व्यक्तिगत रूप से उन्हें सहेजने से प्रत्येक फ़ील्ड पर खोज आदि संभव हो जाएगा। यदि आप उन्हें क्रमबद्ध करते हैं, तो खोज कठिन/असंभव हो जाएगी।
आपको अब इसकी आवश्यकता नहीं हो सकती है, लेकिन इसे लाइन के आगे की आवश्यकता हो सकती है। सामान्यीकरण के लिए

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