2011-06-15 12 views
9

में समय अवधि का प्रतिनिधित्व करते हुए मैंने हाल ही में एक परियोजना को Employee मॉडल के साथ अपनाया है जिसमें व्यक्ति के उपलब्ध घंटों को एक विशेषता के रूप में शामिल करने की आवश्यकता है।यूआई और डेटाबेस

मौजूदा प्रपत्र सप्ताह में प्रत्येक घंटे का प्रतिनिधित्व करने के 168 चेक बॉक्स का उपयोग करता है, और सात डेटाबेस में 24 बिट द्विआधारी तार, प्रत्येक बिट एक बूलियन सच है या उस दिन उसके संगत घंटे के लिए झूठे के रूप में कार्य के रूप में जानकारी संग्रहीत करता है।

मैं वास्तव में कुछ और अधिक सुरुचिपूर्ण और प्रबंधनीय में बदलाव करना चाहता हूं, लेकिन मैं मौजूदा कार्यान्वयन की लचीलापन से मेल खाने वाले किसी भी सरल समाधान के साथ आने में सक्षम नहीं हूं। प्रारंभ और समाप्ति समय के रूप में

भंडारण समय अवधि के बस के रूप में इनपुट करने के लिए कठिन है जब वहाँ प्रतिदिन कई हो सकता है हो सकता है, और संभावना एक विशेष समय और अधिक जटिल पर उपलब्धता के लिए क्वेरी होगा।

क्या उपयोगकर्ता इंटरफ़ेस और डेटाबेस संरचना दोनों में इस प्रकार की जानकारी से निपटने के लिए सबसे अच्छा अभ्यास है?

+0

PostgreSQL मूल रूप से डेटा अंतराल के रूप में समय अंतराल का समर्थन करता है। – Pointy

+0

यह जानना निश्चित रूप से अच्छा है, लेकिन मुझे यकीन नहीं है कि यह वास्तव में समस्या हल करता है। अगर मुझे गलत नहीं लगता है, तो अंतराल एक विशिष्ट प्रारंभ या समाप्ति समय से बंधे नहीं हैं, इसलिए उन्हें सभी आवश्यक जानकारी का प्रतिनिधित्व करने के लिए एक अधिक जटिल डेटा संरचना के हिस्से के रूप में उपयोग करना होगा। मुझे लगता है कि मैं वास्तव में जो खोज रहा हूं वह 168 बूलियन इनपुट, स्टोर और क्वेरी करने का एक साफ, प्रबंधनीय तरीका है। या सप्ताह में प्रत्येक घंटे का प्रतिनिधित्व करने का एक बेहतर तरीका। – Luke

+0

ठीक है आप एक तिथि क्षेत्र के साथ एक अंतराल क्षेत्र जोड़ सकते हैं, जैसे कि दिनांक फ़ील्ड प्रारंभ समय और अंतराल की अवधि प्रदान करेगा। यह नहीं पता कि यह केवल दो तारीख क्षेत्रों से बेहतर या बदतर होगा; यह अर्थशास्त्र और उन प्रश्नों पर निर्भर करेगा जिन्हें आप चलाना चाहते हैं। – Pointy

उत्तर

1

मैं इस तरह डेटाबेस में डेटा का मॉडल करूंगा।

Employee/Day/Hour Relationship

सप्ताह के प्रत्येक दिन के लिए कर्मचारियों और घंटे के बीच कई रिश्ते के लिए कई नहीं है।

यूआई पक्ष पर, आप दिन के लिए चेकबॉक्स का उपयोग कर सकते हैं और दिए गए दिन के घंटे निर्धारित करने के लिए मल्टीसेलेक्ट सूची बॉक्स का उपयोग कर सकते हैं।

+0

यह अब तक का सबसे आशाजनक दृष्टिकोण जैसा दिखता है। मैं शुरुआत में सप्ताह के मॉडल के दिनों और संख्या 0 से 23 के बीच संकोच कर रहा था, लेकिन यह वास्तव में उपलब्धता के लिए पूछने के लिए एक बहुत आसान तरीका है। – Luke

+0

दूसरे विचार पर, क्या इस तरह की अपनी टेबल पर घंटे और दिन निकालने का कोई फायदा है? आप 'घंटा_आईडी' और 'day_id' को' घंटा 'पूर्णांक और' दिन' स्ट्रिंग 'के साथ क्यों नहीं बदल सकते? उचित सत्यापन के साथ, उन्हें कभी भी अप्रत्याशित मूल्य नहीं लेना चाहिए, और मुझे नहीं लगता कि यह दृष्टिकोण से दूर कोई लचीलापन लेगा। – Luke

+1

मैंने उचित सामान्यीकरण मॉडल करने के लिए ऐसा किया। यदि आपको कभी भी घंटे और दिनों के बारे में अतिरिक्त वर्णनकर्ताओं को स्टोर करने की आवश्यकता होती है, तो इसे स्टोर करने के लिए एक कमरा होगा। उदाहरण के लिए, डॉव टेबल में संख्यात्मक दिन, सोम, मंगलवार, बुध आदि के साथ शॉर्ट_Day, सोमवार, मंगलवार, बुधवार आदि के साथ एक लांग_Day का प्रतिनिधित्व करने वाला एक int हो सकता है। घंटे में घंटे का समय हो सकता है, फिर 12:00, 1am आदि वाला एक char हो सकता है। या 12-1am, 1-2am इत्यादि। यह मानवीय पठनीयता के लिए विभिन्न प्रकार के वर्णनकर्ताओं को प्रदान करके आपके इंटरफ़ेस की सहायता करेगा। –

1

क्या आप समय अवधि ब्लॉक बना सकते हैं?

Employee 
    Availability 
    7AM -> 12PM 
     Monday 
     Tuesday 
     Wednesday 
    1PM -> 4PM 
     Monday 
     Tuesday 
    1PM -> 5PM 
     Wednesday 

प्रत्येक उपयोगकर्ता के पास समय-समय पर एक या अधिक घंटे का प्रतिनिधित्व करने वाले समय ब्लॉक की एक सूची होगी। प्रत्येक बार ब्लॉक सप्ताह के एक या अधिक दिनों का प्रतिनिधित्व भी कर सकता है। उपयोगकर्ताओं की उपलब्धता कितनी जटिल है इस पर निर्भर करता है कि बहुत कम डेटा या बहुत कुछ हो सकता है।

यूआई वास्तव में बदलना नहीं होगा यदि आप नहीं चाहते थे क्योंकि आप यह पता लगा सकते हैं कि चेक बॉक्स चेक किए गए हैं और समय अवधि ब्लॉक बनाते हैं। यदि समय के बीच एक या अधिक घंटों का अंतर होता है तो यह सिर्फ एक और समय अवधि बन जाएगा।

शिफ्ट यूआई जोड़ा जा रहा है :: http://imm.io/6vGk

प्रदर्शित कर्मचारी परिवर्तन :: http://imm.io/6vGv

+0

तो इस मामले में, उपलब्धियों की एक अलग तालिका होगी जिसमें 'घंटा शुरू करें', 'अंत घंटा', 'दिन' और' user_id' कॉलम हों? इससे डेटाबेस को देखने में थोड़ा आसान हो सकता है, लेकिन मुझे विश्वास नहीं है कि यह इनपुट या क्वेरी को आसान बना देगा। – Luke

+0

हाँ जो डेटाबेस के लिए काम कर सकता है। प्रश्नों के लिए यह केवल उस प्रकार पर निर्भर करता है जिसकी आपको आवश्यकता होगी, जितना कठिन होगा उतना जटिल होगा जितना कठिन होगा। यूआई जो भी आप वास्तव में चाहते हैं ... उदाहरण के लिए मैं उपरोक्त मेरे उत्तर में कुछ छवियां जोड़ूंगा जो मैंने बदलावों को जोड़ने/प्रदर्शित करने के लिए किया था – CraigW

0

हम कर्मचारी कार्यक्रम और दो अलग-अलग तालिकाओं में गैर उपलब्ध घंटे की दुकान। खोज उपलब्ध घंटों का निर्माण कर रही है और फिर उपलब्ध नहीं है। कर्मचारी कार्यक्रमों के लिए डेटा संरचना काफी जटिल है क्योंकि प्रत्येक दिन के लिए शेड्यूल संग्रहीत करने से हमारी खोज बहुत धीमी हो जाती है और टेबल बड़ी होती है।

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