2011-09-01 11 views
6

मैं स्टोर के लिए ऑपरेशन के घंटों को स्टोर करने के लिए एक एसक्यूएल टेबल डिज़ाइन कर रहा हूं। प्रधानमंत्रीऑपरेशन के डिजाइन घंटे एसक्यूएल टेबल

दूसरों छोटे से अधिक जटिल हैं 10:00 को 9:30 बजे से सोमवार से रविवार तक:

कुछ दुकानों बहुत सरल घंटे की है। कृपया निम्नलिखित परिदृश्य पर विचार करें:

Monday: Open All Day 
Tuesday: 7:30AM – 2:30PM & 4:15PM – 11:00 PM 
Wednesday: 7:00PM – 12:30 AM (technically closing on Thursday morning) 
Thursday: 9:00AM – 6:00PM 
Friday: closed. 

आप तालिका कैसे डिजाइन करेंगे?

संपादित

घंटे दिखा यदि एक दुकान एक उपयोगकर्ता चयनित समय पर खुला है का उपयोग किया जाएगा।

एक अलग तालिका शायद छुट्टियों जैसे किसी अपवाद को संभाल सकती है।

स्टोर का समय सप्ताह से सप्ताह तक नहीं बदलेगा।

उत्तर

6

इस तरह एक तालिका दोनों उत्पादन के लिए आसान होगा तुम सिर्फ एक बिट वापस (? खुला हाँ/नहीं) फायरिंग के रूप में तैनात है, साथ ही:

Store | Day | Open | Closed 
--------------------------- 
1  | 1 | 0000 | 2400 
1  | 2 | 0730 | 1430 
1  | 2 | 1615 | 2300 
... 

विशेषताएं:

  1. 24-घंटे का उपयोग करना आवश्यक नहीं है, लेकिन गणित आसान बना देता है।
  2. स्टोर आईडी संभावित रूप से एक लुकअप टेबल में शामिल हो जाएगी जहां आपने संग्रहीत स्टोर जानकारी
  3. डे आईडी सप्ताह के दिन (1 = रविवार, 2 = सोमवार, आदि) का अनुवाद करेगी।)

आपके डेटासेट के लिए क्वेरी के लिए, बस: SELECT Day, Open, Close... (आप खुला/बंद फ़ॉर्मेट करने के लिए स्पष्ट रूप से)

IsOpen क्वेरी करना चाहते हैं चाहते हैं ?, बस:

SELECT CASE WHEN @desiredtime BETWEEN Open AND Closed THEN 1 ELSE 0 END 
FROM table 
WHERE store = @Store 
2

क्या आपको बस स्टोर करने और प्रदर्शित करने से अधिक कुछ करना है?

मुझे लगता है कि एक डिज़ाइन जो किसी विशेष समय पर एक दुकान खुला है, उसे सभी संभावनाओं से सूचित किया जाना चाहिए, अन्यथा, आप कुछ समायोजित करने में सक्षम नहीं होंगे।

अवकाश अपवादों के बारे में क्या?

मैं आधार आधार के आधार पर अंतराल के रूप में संग्रहीत करने पर विचार करता हूं (सप्ताह के समय से 0 मिनट के बाद)।

तो 0 सोमवार को मध्यरात्रि है।

अंतराल 1 हो 0 - 1440

अंतराल 2 होगा - 2310

आदि

आप आसानी से एक मिनट ऑफसेट, जो उपयोगकर्ता को चयनित समय बदलने और निर्धारित करता है, तो एक दुकान थी सकता है खुला।

आपका समस्या सिर्फ समय में शेष (असंभव शायद कुछ व्यापक तर्क है, लेकिन नहीं) अनुकूल प्रदर्शन के लिए प्रदर्शन में व्याख्या और ओवरलैप होगा 10080 -> 0.

+0

हम छुट्टियों के अपवादों को एक अलग तालिका में स्टोर करेंगे। – Emil

+0

हम यह देखने के लिए घंटों का उपयोग करेंगे कि उपयोगकर्ता द्वारा चुने गए समय पर एक स्टोर खुला है या नहीं, इसलिए यह स्क्रीन पर वापस प्रदर्शित करने के लिए नहीं है। – Emil

+1

@Emil संपादित अवधारणा देखें। –

3

इसके बारे में Think समय सीमा को परिभाषित करने के रूप में अधिक, दिन/सप्ताह अधिक जटिल होते हैं, क्योंकि उनके पास नियम हैं और परिभाषित प्रारंभ और बंद हो जाते हैं।

आप समय सीमा को कैसे परिभाषित करेंगे?

एक बाधा (प्रारंभ [समय और दिन]), एक संदर्भ 'अवधि' (घंटे, मिनट, .. काल की) *। अब बदलाव (टाइमफ्रेम) कई दिनों तक फैल सकता है और गणना में डेटा निकालने और उपयोग करने के लिए आपको जटिल तर्क नहीं करना पड़ता है।

**Store_Hours** 

Store | Day | Open | DURATION 
--------------------------- 
1  | 1 | 0000 | 24 
1  | 2 | 0730 | 7 
1  | 2 | 1615 | 6.75 
... 
1  | 3 | 1900 | 5.5 
+0

मैं अवधि पर भी विचार कर रहा था, लेकिन यह निर्धारित करना मुश्किल हो सकता है कि सोमवार को 1:00 बजे एक स्टोर खुला है या नहीं। हमें रविवार और सोमवार – Emil

+0

दोनों की जांच करने की आवश्यकता है, जब खुला और दिनांक जोड़ें (एचएच, अवधि, ओपन) के बाद @Desiredtime जब तालिका से 1 ईएलएसई 0 अंत स्टोर = @ स्टोर 'मुश्किल नहीं है? –

+0

कथन थोड़ा अधिक जटिल है। हमें दिन की भी आवश्यकता है, इसलिए हमें वांछित दिन, और पिछले दिन की अवधि की जांच करने की आवश्यकता है। इसलिए यदि हम दिन = 1 की जांच कर रहे हैं, तो हमें यह भी जांचने की आवश्यकता है कि क्या दिन = 7 में ओपन + अवधि> 24 है। – Emil

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