रनटाइम पर अपना डीबी डिज़ाइन न बदलें, लेकिन इसे इस तरह डिज़ाइन करें कि आप डेटा को संरचना नहीं बदलेंगे।
आपके पास दो टेबल हो सकते हैं। एक नाम Student
कॉलम के साथ rollno
और name
, शायद PK rollno
. पर अगर यह अद्वितीय है।
उसके बाद Thing
. नामक एक और तालिका है (कोई भी उपयुक्त नाम, लेकिन मुझे नहीं पता कि आपका डेटा किस बारे में है) तीन कॉलमों के साथ when
(डेटाटाइम), value
(कोई भी उपयुक्त नाम) (CHAR(1)) और Student
(rollno
के समान टाइप करें )।
PK को when
दोनों पर परिभाषित करें और value
यह सुनिश्चित करने के लिए कि प्रत्येक छात्र के पास प्रति दिनांक केवल एक मान है। FK को Thing.student
. से परिभाषित करें करने के लिए Student.rollno
. अब आपका DB आपके डेटा (ज्यादातर) को लगातार बनाए रखने का ध्यान रखता है।
अलग-अलग कॉलम पर अपनी पसंद, इंसर्ट और अपडेट की जरूरतों के आधार पर इंडेक्स को परिभाषित करें।
फिर पूछताछ के लिए वांछित परिणाम प्राप्त करने के लिए दोनों तालिकाओं में शामिल हों, उदा.
select s.name, t.value
from Student s
left join Thing t on t.student = s.rollno
where t.when == 'whenever'
(मैं mysql बोली के बारे में निश्चित नहीं हूं, इसलिए शायद कुछ और उद्धरणों की आवश्यकता है। कृपया बेझिझक संपादित करें।)