मैं एक स्कूलवर्क कर रहा हूं और .."सेंसर सिस्टम" के लिए सर्वश्रेष्ठ डेटाबेस डिज़ाइन
मुझे वाहन ट्रैकर सिस्टम करना है। मैंने इन तीन डिजाइनों के बारे में सोचा। तुम क्या सोचते हो?
मेरे डेटाबेस स्कीमा
विचार?
मैं एक स्कूलवर्क कर रहा हूं और .."सेंसर सिस्टम" के लिए सर्वश्रेष्ठ डेटाबेस डिज़ाइन
मुझे वाहन ट्रैकर सिस्टम करना है। मैंने इन तीन डिजाइनों के बारे में सोचा। तुम क्या सोचते हो?
मेरे डेटाबेस स्कीमा
विचार?
आप हमेशा मापने और एक मापने सत्र के भीतर सभी मापदंडों की दुकान तो डिज़ाइन 1
के लिए जाते हैं।
गुणों को अलग-अलग तालिकाओं में स्थानांतरित करना केवल तभी समझ में आता है जब गुणों को शायद ही कभी संग्रहीत किया जाता है और/या शायद ही कभी आवश्यक हो।
यदि आपके पास स्थिति और तापमान के लिए अलग सेंसर हैं, तो 3
डिज़ाइन के लिए जाएं।
यह सबसे संभावित है, क्योंकि स्थिति GPS
ट्रैकर द्वारा मापा जाता है और तापमान और तेल स्तर वाहन सेंसर द्वारा मापा जाता है, जो अलग-अलग डिवाइस होते हैं और माप अलग-अलग समय पर किए जाते हैं।
आपको प्रत्येक सेंसर के लिए एक अलग टेबल जोड़ने की भी आवश्यकता हो सकती है (i। ई। यदि विभिन्न सेंसर विभिन्न समय पर गैस और तापमान को मापते हैं, तो उनके लिए दो टेबल बनाएं)।
एक अलग तालिका में liquid
बढ़ते (डिजाइन 2
के रूप में) समझ में आता है, तो तरल पदार्थ आपके द्वारा उपयोग की सूची (डिजाइन समय में नहीं जाना जाता है यानी किसी तीसरे तरल हाइड्रोजन या हीलियम -3 या जो कुछ भी है कि वे आविष्कार करेंगे वाहनों द्वारा उपयोग किया जाएगा और आपको डेटाबेस को फिर से डिजाइन किए बिना इसे ट्रैक करने की आवश्यकता होगी)।
यह निश्चित रूप से एक संभावित परिदृश्य नहीं है।
आपके उत्तर और विचारों के लिए बहुत बहुत धन्यवाद। कुछ अवधारणाएं अब मेरे लिए अधिक स्पष्ट हैं। – Nick
यदि आप एक ही समय में सेंसर से पढ़ रहे हैं तो दूसरा डिज़ाइन मेरे लिए एक ओवरकिल जैसा दिखता है। यदि आप उस जानकारी को अलग-अलग समय पर पढ़ते हैं तो जानकारी को अलग रखने के लिए यह समझदारी होगी।
मैं पहला डिजाइन सुझाऊंगा।
आपके उत्तर के लिए बहुत बहुत धन्यवाद। – Nick
आपका आवेदन चीजों की दो प्रकार से निपटने के लिए की जरूरत है
कुछ चीजें के बारे में सोचना है? विचार यह है कि हम डेटाबेस में कहां पाए जाते हैं, यह जानने के बजाय, हम उनके गुणों के माध्यम से सेंसर उदाहरणों की पहचान और निपट सकते हैं।
- एक "रीड" रिकॉर्ड में दिए गए टाइमस्टैम्प के लिए सभी मापों को रखने के लिए सबसे अच्छा है या प्रति पढ़ने के लिए एक सेंसर प्रति रिकॉर्ड है, भले ही कई माप सेट में आते हैं।
अंतिम प्रश्न का त्वरित उत्तर यह है कि प्रति रिकॉर्ड एकल पढ़ने की घटना अधिक लचीला लगती है; हम एक ही फैशन में, माप के दोनों समूहों को एक ही समय में व्यवस्थित रूप से मतदान कर सकते हैं, और अन्य माप जो पूर्व के लिए असुरक्षित हैं, को संभालने में सक्षम होंगे। यहां तक कि यदि अभी भी, सभी माप एक साथ आते हैं, तो सेंसर को आसानी से संभालने के लिए डेटाबेस स्कीमाऔर को बदलने के बिना, आकर्षक है।
हो सकता है कि निम्नलिखित डिजाइन के करीब होगा कि तुम क्या जरूरत है:
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
+1: सुंदर आरेख :) – Juliet