बहुत से लोग अपने दिन की योजना बनाने के लिए मोबाइल मौसम ऐप का उपयोग करते हैं - या कम से कम यह तय करते हैं कि उन्हें छाता ले जाने की आवश्यकता है या नहीं! इन लोकप्रिय कार्यक्रमों के नीचे किस प्रकार का डेटा मॉडल निहित है?
हम सभी जानना चाहते हैं कि बाहर कदम रखने से पहले मौसम कितना खराब है। विंडोज, आईओएस और एंड्रॉइड ऐप हमें वर्तमान मौसम की स्थिति के बारे में सटीक और विश्वसनीय जानकारी देते हैं। यह लेख एक विस्तृत डेटा मॉडल की व्याख्या करता है जिसका उपयोग ऐसे ऐप्स के लिए किया जा सकता है।
मौसम ऐप के लिए किन कार्यात्मकताओं की आवश्यकता होती है?
स्मार्टफोन रखने वाले लगभग सभी लोगों के पास कम से कम एक मौसम ऐप भी होता है। ये ऐप मौसम की विस्तृत जानकारी प्रदान करते हैं, जो उनके उपयोगकर्ताओं को दिन के दौरान होने वाले किसी भी मौसम परिवर्तन के लिए तैयार करने में मदद करता है।
मौसम ऐप को क्या करना चाहिए?
- वर्तमान मौसम की स्थिति की रिपोर्ट करें, जिसमें समग्र स्थिति (यानी धूप, आंशिक रूप से बादल, बादल, आदि) हवा का तापमान, आर्द्रता, हवा की गति और दिशा, एक "महसूस जैसा" तापमान, बैरोमीटर का दबाव और दृश्यता शामिल है। इसे सूर्योदय और सूर्यास्त के समय और दिन के उच्च और निम्न तापमान जैसी सामान्य जानकारी भी देनी चाहिए।
- अगले 24 घंटों के लिए प्रति घंटा विवरण (तापमान, आर्द्रता, वर्षा, समग्र मौसम की स्थिति) प्रदर्शित करें।
- अगले या दो सप्ताह में प्रत्येक दिन के लिए एक बुनियादी पूर्वानुमान (दैनिक उच्च और निम्न तापमान, मौसम की स्थिति, और सूर्योदय/सूर्यास्त समय) दिखाएं।
- उपयोगकर्ताओं को अपने स्थानीय शहर और अन्य शहरों को सेट करने की अनुमति दें जहां वे मौसम देखना चाहते हैं।
- उपयोगकर्ताओं को उनकी पसंद की माप इकाइयों में डेटा देखने दें। उदाहरण के लिए, यू.एस. उपयोगकर्ता शायद मील प्रति घंटे में दिखाए गए फ़ारेनहाइट तापमान और हवा की गति पसंद करेंगे, लेकिन कनाडा और यूरोपीय उपयोगकर्ता सेल्सियस और किलोमीटर प्रति घंटे पसंद करेंगे।
याद रखें, ऐप केवल दिखा रहा है मौसम पूर्वानुमान और (सेटिंग्स के आधार पर) माप इकाइयों को परिवर्तित करना। यह वास्तविक पूर्वानुमान नहीं करता है; यह केवल किसी अन्य स्रोत (जैसे सरकारी सेवा या मौसम पूर्वानुमान एजेंसी) से पूर्वानुमान डेटा प्राप्त करता है और इसे उपयोगकर्ता के पसंदीदा तरीके से प्रदर्शित करता है।
मौसम ऐप डेटा मॉडल
मैंने मॉडल को तीन विषय क्षेत्रों में विभाजित किया है:
Weather Logs
User Preferences
User Profiles
हम सूचीबद्ध क्रम में प्रत्येक क्षेत्र पर चर्चा करेंगे।
मौसम लॉग
यह सबसे महत्वपूर्ण विषय क्षेत्र है। किसी भी मौसम ऐप को इन बुनियादी विवरणों को कैप्चर करना चाहिए:
- वर्तमान वास्तविक तापमान
- वर्तमान "ऐसा लगता है" तापमान, जो अतिरिक्त मौसम कारकों के कारण वास्तविक तापमान से भिन्न हो सकता है (उदाहरण के लिए उच्च आर्द्रता गर्म दिन को गर्म महसूस कर सकती है या ठंडा दिन ठंडा महसूस कर सकता है)।
- दैनिक उच्च और निम्न तापमान
- ओस बिंदु और/या सापेक्ष आर्द्रता डेटा
- हवा की गति
- हवा की दिशा
- बैरोमीटर का दबाव
- दृश्यता (अर्थात धुंध वाले दिन में स्पष्ट दिन की तुलना में कम दृश्यता होगी)
- सूर्योदय और सूर्यास्त का समय
साथ में, ये वर्तमान मौसम की स्थिति का समग्र दृष्टिकोण देते हैं। यह वह जानकारी है जो उपयोगकर्ताओं को आमतौर पर एक या अधिक सहज स्क्रीन के माध्यम से प्रस्तुत की जाएगी।
किसी भी मौसम पूर्वानुमान में दो तरह की विशेषताएं होती हैं:एक जो हर दिन बदलती हैं और दूसरी जो पूरे में बदलती हैं हर दिन। सूर्योदय और सूर्यास्त के समय जैसे गुण दिन में एक बार होने वाली घटनाओं पर आधारित होते हैं, इसलिए यह जानकारी प्रत्येक दिन के लिए एक बार कैप्चर की जाती है। जब लंबी दूरी के पूर्वानुमान (7 से 15 दिन पहले) की बात आती है, तो उपयोगकर्ताओं के पास पर्याप्त जानकारी होनी चाहिए, यदि आप प्रत्येक दिन के उच्च और निम्न तापमान, आर्द्रता स्तर और समग्र मौसम की स्थिति (यानी धूप, बादल, आदि) को शामिल करते हैं।
वर्तमान तापमान, "ऐसा लगता है" तापमान, हवा की गति और दिशा, बैरोमीटर का दबाव और दृश्यता सीमा जैसे गुण पूरे दिन बदल सकते हैं। इन्हें एक विशिष्ट समय अंतराल, जैसे हर घंटे या हर तीन घंटे में कैद किया जाना चाहिए। इस मॉडल के प्रयोजनों के लिए, हम एक घंटे की समय-सीमा मानेंगे।
चूँकि हमारे पास दो प्रकार की विशेषताएँ हैं, इसलिए मैंने इस विषय क्षेत्र में दो तालिकाएँ रखी हैं। पहला, weather_daily_forecast_log
, दैनिक गुण रखता है। इसमें ये कॉलम हैं:
city_id
- संदर्भcity
तालिका और उस शहर को दर्शाता है जिस पर यह डेटा लागू होता है।calendar_date
- इस डेटा के लिए कैलेंडर की तारीख। चूंकि इस तालिका में प्रति शहर प्रति तिथि एक रिकॉर्ड है, इसलिए ये कॉलम (city_id
औरcalendar_date
) इस तालिका के लिए समग्र प्राथमिक कुंजी बनाएं।weather_status_id
- संदर्भweather_status
तालिका और मौसम की स्थिति (यानी बरसात, बादल, आंशिक रूप से बादल, या धूप) को दर्शाता है।min_temperature
- उस दिन का न्यूनतम (न्यूनतम) तापमान।max_temperature
- उस दिन का अधिकतम (उच्चतम) तापमान।avg_humidity_in_percentage
- औसत उस दिन हवा में सापेक्षिक आर्द्रता। (वायु द्वारा धारण किए जाने वाले जल की मात्रा उसके तापमान के सापेक्ष होती है।)sunrise_time
- एक टाइमस्टैम्प कॉलम जो सूर्योदय के समय को संग्रहीत करता है।sunset_time
- एक टाइमस्टैम्प कॉलम जो सूर्यास्त के समय को संग्रहीत करता है।last_updated_at
- दिनांक और समय (टाइमस्टैम्प के रूप में) रखता है जब रिकॉर्ड अंतिम बार अपडेट किया गया था।source_system
- हमारे मौसम पूर्वानुमान के स्रोत का नाम। ये अंतिम दो कॉलम ऑडिट के उद्देश्य से रखे गए हैं।
weather_hourly_forecast_log
तालिका में वे सभी गुण होते हैं जो पूरे दिन बदल सकते हैं। हम इन विशेषताओं को एक विशिष्ट समय सीमा के लिए एक रिकॉर्ड के रूप में मानते हैं। कॉलम हैं:
id
- टेबल के लिए सरोगेट कुंजी।city_id
- प्रासंगिक शहर।start_timestamp
- एक टाइमस्टैम्प कॉलम जो दर्शाता है कि यह समय सीमा कब शुरू हुई।end_timestamp
- एक टाइमस्टैम्प कॉलम जो दर्शाता है कि यह समय सीमा कब समाप्त हुई।weather_status_id
- समय सीमा के लिए समग्र मौसम की स्थिति।temperature
- समय सीमा के लिए वर्तमान तापमान।feels_like_temperature
- समय सीमा के लिए "महसूस जैसा" तापमान। यह हवा, बारिश और उच्च या निम्न आर्द्रता सहित कई कारकों से प्रभावित हो सकता है। यह जानकारी वर्तमान मौसम की स्थिति का अधिक यथार्थवादी प्रभाव देती है।humidity_in_percentage
-इस कॉलम में हवा में नमी की मात्रा (प्रतिशत के रूप में) होती है।wind_speed_in_mph
- हवा की गति मील प्रति घंटे (मील प्रति घंटा) में रखती है।wind_direction
- यह टेक्स्ट कॉलम एक या दो वर्णों को संग्रहीत करता है जो हवा की दिशा (N, NW, NE, S, W, SW, आदि) को दर्शाते हैं।pressure_in_mmhg
- वायुदाब मान को mmHg में संग्रहित करता है।visibility_in_mph
- दृश्यता सीमा मानों को मीलों में संग्रहीत करता है।
इन तालिकाओं में एक विशेष समय सीमा के लिए नवीनतम डेटा होगा। कभी-कभी, भविष्य का पूर्वानुमान जारी किया जा सकता है और फिर बाद में बदला जा सकता है। ऐसे मामलों में, प्रासंगिक दिन या समय-सीमा के मौजूदा रिकॉर्ड को नवीनतम रिकॉर्ड से अधिलेखित कर दिया जाएगा। साथ ही, आप देखेंगे कि हमने प्रति विशेषता केवल एक माप इकाई (उदा. मील प्रति घंटे) में विशेषताओं को संग्रहीत किया है। भंडारण को बचाने के लिए, हम प्रत्येक विशेषता के लिए केवल एक रिकॉर्ड संग्रहीत करेंगे और आवश्यकता पड़ने पर फ्रंट एंड को उपयोगकर्ता की पसंदीदा इकाइयों में परिवर्तित करने देंगे।
उपयोगकर्ता वरीयताएँ
यह विषय क्षेत्र मुख्य रूप से इकाइयों को मापने के लिए उपयोगकर्ता की प्राथमिकताओं को संभालता है। अधिकांश कॉलम स्व-व्याख्यात्मक हैं, इसलिए हम प्रत्येक तालिका के उद्देश्य के बारे में संक्षेप में बताएंगे।
users
तालिका में उपयोगकर्ताओं के बारे में बुनियादी जानकारी होती है, जैसे ईमेल पता और फ़ोन नंबर। id
कॉलम आवेदन के साथ पंजीकरण करने वाले प्रत्येक उपयोगकर्ता को एक अद्वितीय संख्या प्रदान करता है।
attribute
तालिका तापमान, हवा की गति, हवा की दिशा, बैरोमीटर का दबाव, आदि जैसी विशेषताओं की एक सूची संग्रहीत करती है।
measuring_units
तालिका सभी माप इकाइयों की एक सूची संग्रहीत करती है, उनके संबंधित नाम, विवरण और attribute_id
के साथ .
user_preferences
तालिका उपयोगकर्ताओं और माप इकाई प्राथमिकताओं के बीच संबंध को मैप करती है। ध्यान दें कि हम प्रत्येक व्यक्तिगत विशेषता के लिए उपयोगकर्ताओं की प्राथमिकताओं के बारे में जानकारी संग्रहीत कर सकते हैं। चूंकि उपयोगकर्ता किसी विशेषता के लिए दिए गए विकल्पों में से किसी एक को मापने वाली इकाई चुन सकते हैं, इसलिए हमने users_id
का उपयोग करके एक समग्र प्राथमिक कुंजी बनाई है। और attribute_id
कॉलम।
उपयोगकर्ता प्रोफ़ाइल
चूंकि एप्लिकेशन उपयोगकर्ताओं को जितने चाहें उतने शहरों में मौसम की निगरानी करने की अनुमति देता है, यह विषय क्षेत्र प्रत्येक उपयोगकर्ता प्रोफ़ाइल के साथ एक या अधिक शहरों को जोड़ता है।
city
तालिका शहरों और उनके स्थान विवरण (डाक कोड, देश, मानचित्र निर्देशांक) की एक सूची संग्रहीत करती है। इस तालिका में कॉलम स्व-व्याख्यात्मक हैं, लेकिन यह जानना अच्छा है कि city_longitude
और city_latitude
कॉलम सकारात्मक या नकारात्मक मान रख सकते हैं।
user_city
तालिका शहरों को उपयोगकर्ता प्रोफाइल से जोड़ती है। चूंकि उपयोगकर्ता अपनी प्रोफ़ाइल में केवल एक बार शहर जोड़ सकते हैं, इसलिए हमने users_id
का उपयोग करके एक समग्र प्राथमिक कुंजी बनाई है और city_id
कॉलम।
आप इस डेटा मॉडल में क्या जोड़ेंगे?
अब हम उस अनुभाग पर आते हैं जहां आप हमें बताते हैं कि आप किसी मॉडल में क्या जोड़ेंगे, बदलेंगे या हटाएंगे। हम क्या जोड़ सकते हैं? खैर, ग्लोबल वार्मिंग एक बड़ी चिंता का विषय बन गया है। अनुसंधान स्पष्ट रूप से दर्शाता है कि यह प्राकृतिक परिवर्तनों की तुलना में मानवीय गतिविधियों के कारण अधिक होता है। हालांकि, अपेक्षाकृत कम लोगों को इसका एहसास होता है। हम लोगों को जलवायु परिवर्तन और ग्लोबल वार्मिंग के प्रति कैसे जागरूक कर सकते हैं? हम ऐप पर पर्यावरणीय परिवर्तनों और उनके कारणों के बारे में तथ्य शामिल कर सकते हैं। या हो सकता है कि हम जागरूकता बढ़ाने के लिए स्थानीय क्षेत्र में वृक्षारोपण का प्रतिशत शामिल कर सकें।
तुम क्या सोचते हो? कृपया नीचे कमेंट करके हमें अपने विचार बताएं।