2009-10-09 14 views
6

मैं एक स्कूलवर्क कर रहा हूं और .."सेंसर सिस्टम" के लिए सर्वश्रेष्ठ डेटाबेस डिज़ाइन

मुझे वाहन ट्रैकर सिस्टम करना है। मैंने इन तीन डिजाइनों के बारे में सोचा। तुम क्या सोचते हो?

मेरे डेटाबेस स्कीमा

(png at ImageShack ~99KB)

विचार?

+0

+1: सुंदर आरेख :) – Juliet

उत्तर

3
  • आप हमेशा मापने और एक मापने सत्र के भीतर सभी मापदंडों की दुकान तो डिज़ाइन 1 के लिए जाते हैं।

    गुणों को अलग-अलग तालिकाओं में स्थानांतरित करना केवल तभी समझ में आता है जब गुणों को शायद ही कभी संग्रहीत किया जाता है और/या शायद ही कभी आवश्यक हो।

  • यदि आपके पास स्थिति और तापमान के लिए अलग सेंसर हैं, तो 3 डिज़ाइन के लिए जाएं।

    यह सबसे संभावित है, क्योंकि स्थिति GPS ट्रैकर द्वारा मापा जाता है और तापमान और तेल स्तर वाहन सेंसर द्वारा मापा जाता है, जो अलग-अलग डिवाइस होते हैं और माप अलग-अलग समय पर किए जाते हैं।

    आपको प्रत्येक सेंसर के लिए एक अलग टेबल जोड़ने की भी आवश्यकता हो सकती है (i। ई। यदि विभिन्न सेंसर विभिन्न समय पर गैस और तापमान को मापते हैं, तो उनके लिए दो टेबल बनाएं)।

  • एक अलग तालिका में liquid बढ़ते (डिजाइन 2 के रूप में) समझ में आता है, तो तरल पदार्थ आपके द्वारा उपयोग की सूची (डिजाइन समय में नहीं जाना जाता है यानी किसी तीसरे तरल हाइड्रोजन या हीलियम -3 या जो कुछ भी है कि वे आविष्कार करेंगे वाहनों द्वारा उपयोग किया जाएगा और आपको डेटाबेस को फिर से डिजाइन किए बिना इसे ट्रैक करने की आवश्यकता होगी)।

    यह निश्चित रूप से एक संभावित परिदृश्य नहीं है।

+0

आपके उत्तर और विचारों के लिए बहुत बहुत धन्यवाद। कुछ अवधारणाएं अब मेरे लिए अधिक स्पष्ट हैं। – Nick

1

यदि आप एक ही समय में सेंसर से पढ़ रहे हैं तो दूसरा डिज़ाइन मेरे लिए एक ओवरकिल जैसा दिखता है। यदि आप उस जानकारी को अलग-अलग समय पर पढ़ते हैं तो जानकारी को अलग रखने के लिए यह समझदारी होगी।

मैं पहला डिजाइन सुझाऊंगा।

+0

आपके उत्तर के लिए बहुत बहुत धन्यवाद। – Nick

0

आपका आवेदन चीजों की दो प्रकार से निपटने के लिए की जरूरत है

  • सेंसर = किस प्रकार, जहां इंजन में, और यहां तक ​​कि इस तरह के मतदान आवृत्ति और जैसे मानकों ..
  • = एक (या कई?) सेंसर से अलग-अलग समय-मुद्रित रिकॉर्डिंग पढ़ता है। हम कैसे सेंसर अवधारणा सार संक्षेप के तरीके ढूँढ सकते हैं -
    :

कुछ चीजें के बारे में सोचना है? विचार यह है कि हम डेटाबेस में कहां पाए जाते हैं, यह जानने के बजाय, हम उनके गुणों के माध्यम से सेंसर उदाहरणों की पहचान और निपट सकते हैं।
- एक "रीड" रिकॉर्ड में दिए गए टाइमस्टैम्प के लिए सभी मापों को रखने के लिए सबसे अच्छा है या प्रति पढ़ने के लिए एक सेंसर प्रति रिकॉर्ड है, भले ही कई माप सेट में आते हैं।

अंतिम प्रश्न का त्वरित उत्तर यह है कि प्रति रिकॉर्ड एकल पढ़ने की घटना अधिक लचीला लगती है; हम एक ही फैशन में, माप के दोनों समूहों को एक ही समय में व्यवस्थित रूप से मतदान कर सकते हैं, और अन्य माप जो पूर्व के लिए असुरक्षित हैं, को संभालने में सक्षम होंगे। यहां तक ​​कि यदि अभी भी, सभी माप एक साथ आते हैं, तो सेंसर को आसानी से संभालने के लिए डेटाबेस स्कीमाऔर को बदलने के बिना, आकर्षक है।

हो सकता है कि निम्नलिखित डिजाइन के करीब होगा कि तुम क्या जरूरत है:

 
tblSensors 
    SensorId PK 
    Name  clear text description of the sensor ("Oil Temp.") 
    LongName longer description ("Oil Temperarure, Sensor TH-B14 in crankshaft") 
    SensorType enumeration ("TEMP", "PRESSURE", "VELOCITY"...) 
    SensorSubType enumeration ("OIL", "AIR"...) 
    Location enumeration ("ENGINE", "GENERAL", "EXHAUST"...) 
    OtherCrit other crietrias which may be used to identify/seach for the sensor. 


tblReads 
    Readid PK 
    DateTime 
    SensorId FK to tblSensors 
    Measurment INTeger value 
    Measurement2 optional extra meassurement (maybe to handle say, all 
        of a GPS sensor read as one "value" 
    Measurement3 ... also may have multiple columns for different types of 
       variables (real-valued ?) 

करने के लिए आप से कुछ ही टेबल जहां सेंसर के विभिन्न प्रकार के लिए "enumerations" परिभाषित कर रहे हैं होगा इसके अलावा, और एप्लिकेशन तर्क में टाई-इन इन गणनाओं की नींबू जैसी "चाबियाँ" के माध्यम से होगा। जैसे।

SELECT S.Name, R.DateTime, R.Measurement 
FROM tblReads R 
JOIN tblSensors S ON S.SensorId = R.SensorID 
WHERE S.SensorType IN ('Temp', 'Pres') 
    AND S.Location = "ENG" 
    AND R.DateTime > '04/07/2009' 
ORDER BY R.DateTime 

यह रोका जा सके न आप भी अपने आईडी द्वारा सेंसर कॉल करने के लिए, और समूह के लिए एक ही परिणाम लाइन पर पढ़ता है। जैसे।

SELECT R1.DateTime, R1.Measurement AS OilTemp, R2.Measurement AS OilPress, 
     R3.Measurement AS MotorRpms 
FROM tblReads R1 
LEFT OUTER JOIN tblReads R2 ON R1.DateTime = R2.DateTime 
LEFT OUTER JOIN tblReads R3 ON R1.DateTime = R3.DateTime 
WHERE R1.SensorId = 17 
    AND R2.SensorId = 11 
    AND R3.SensorId = 44 
    AND R1.DateTime > '04/07/2009' AND R1.DateTime < '04/08/2009' 
ORDER BY R3.Measurement DESC -- Sorte by Speed, fastest first 
संबंधित मुद्दे