किसी भी समय की जानकारी एक-से-एक होती है (प्रत्येक उपयोगकर्ता का एक नाम और पासवर्ड होता है), तो शायद इसे एक तालिका में रखना बेहतर होता है, क्योंकि इससे परिणाम प्राप्त करने के लिए डेटाबेस में शामिल होने की संख्या कम हो जाती है। मुझे लगता है कि कुछ डेटाबेस में प्रति टेबल कॉलम की संख्या की सीमा होती है, लेकिन मैं सामान्य मामलों में इसके बारे में चिंता नहीं करता, और यदि आपको आवश्यकता हो तो आप इसे बाद में विभाजित कर सकते हैं।
यदि डेटा एक-से-कई है (प्रत्येक उपयोगकर्ता के पास उपयोग की जानकारी की हजारों पंक्तियां हैं), तो इसे डुप्लिकेट डेटा को कम करने के लिए अलग-अलग तालिकाओं में विभाजित किया जाना चाहिए (डुप्लिकेट डेटा स्टोरेज स्पेस, कैश स्पेस को बर्बाद करता है, और डेटाबेस को बनाए रखने के लिए कठिन बनाता है )।
आपको विकिपीडिया लेख डेटाबेस सामान्यीकरण पर मिल सकता है। दिलचस्प है, क्योंकि इसमें इसके कारणों पर गहराई से चर्चा की गई है:
<ब्लॉकक्वॉट>डेटाबेस सामान्यीकरण अतिरेक और निर्भरता को कम करने के लिए एक रिलेशनल डेटाबेस के क्षेत्रों और तालिकाओं को व्यवस्थित करने की प्रक्रिया है। सामान्यीकरण में आमतौर पर बड़ी तालिकाओं को छोटी (और कम अनावश्यक) तालिकाओं में विभाजित करना और उनके बीच संबंधों को परिभाषित करना शामिल है। इसका उद्देश्य डेटा को अलग करना है ताकि किसी फ़ील्ड के जोड़, विलोपन और संशोधन केवल एक तालिका में किए जा सकें और फिर परिभाषित संबंधों के माध्यम से शेष डेटाबेस के माध्यम से प्रचारित किया जा सके।
Denormalization इसके बारे में जागरूक होना भी कुछ है, क्योंकि ऐसे मामले हैं जहां डेटा दोहराना बेहतर होता है (चूंकि यह डेटा पढ़ने के दौरान डेटाबेस को करने के लिए आवश्यक काम की मात्रा को कम करता है)। मैं आपके डेटा को शुरू करने के लिए जितना संभव हो सके सामान्यीकृत करने की अत्यधिक अनुशंसा करता हूं, और यदि आप विशिष्ट प्रश्नों में प्रदर्शन समस्याओं से अवगत हैं, तो केवल डीनॉर्मलाइज़ करें।