MySQL

2011-12-07 6 views
6

के साथ दिनांक आयाम की प्राथमिक कुंजी के रूप में DATE फ़ील्ड का उपयोग करना, मैं एक MySQL डेटावेयर में दिनांक आयाम को संभालना चाहता हूं। (मैं डीडब्लू वर्ल्ड में नौसिखिया हूं)MySQL

मैंने Google के साथ कुछ खोज की और बहुत सारी तालिका संरचनाएं (अधिकांश) दिनांक आयाम देखा जहां प्राथमिक कुंजी एक साधारण UNSIGNED INTEGER है।

DATE फ़ील्ड का उपयोग प्राथमिक कुंजी के रूप में क्यों नहीं करें क्योंकि MySQL के साथ यह INTEGER के लिए 3 बाइट्स वीएस 4 बाइट्स है?

पूर्व:

CREATE TABLE dimDate 
id INTEGER UNSIGNED NOT NULL PRIMARY AUTOI_NCREMENT, 
date DATE NOT NULL, 
dayOfWeek 
... 

वी.एस.

CREATE TABLE dimDate 
date DATE NOT NULL PRIMARY, 
dayOfWeek 
... 
+2

आप एक ही तारीख के लिए कई रिकॉर्ड होने की उम्मीद नहीं है? – Mat

+1

नहीं, मैं अपनी वास्तविक तालिका में आयाम तालिका नहीं, उसी तारीख के लिए बहुत से रिकॉर्ड की उम्मीद करूंगा। – nemenems

+0

किमबाल का कहना है कि प्रत्येक आयाम पीके एक सरोगेट होना चाहिए। –

उत्तर

6

आप एक कॉलम date प्रकार का है और जहां कोई दो पंक्तियाँ कभी एक ही तिथि होगा, तो आप निश्चित रूप से यह कर सकते हैं कि के साथ एक मेज है, तो इस कॉलम का उपयोग PRIMARY KEY के रूप में करें।

आप ऐसे कई उदाहरण देखते हैं जहां प्राथमिक कुंजी एक साधारण UNSIGNED INTEGER है क्योंकि ऐसे कई मामले हैं जहां प्राथमिक कुंजी के लिए कोई आदर्श उम्मीदवार नहीं है। AUTO_INCREMENT आवेषण के दौरान इस कॉलम को डेटाबेस द्वारा स्वचालित रूप से भरने की अनुमति देता है (और अद्वितीय हो)।

14

दिनांक आयाम प्राथमिक कुंजी के लिए विशेष तिथि (2011-12-07) या दिनांक से संबंधित पूर्णांक (20111207) वास्तव में पसंद किया जाता है। यह तथ्य तालिकाओं के अच्छे विभाजन (तिथि से) के लिए अनुमति देता है।

अन्य प्रकार के आयामों के लिए, सरोगेट (पूर्णांक) कुंजी की अनुशंसा की जाती है।

एक टेम्पलेट के रूप में, प्रत्येक आयाम आमतौर पर unknown, not entered, error, ... के लिए प्रविष्टियों जो अक्सर कुंजी 0, -1, -2, ...

इस के कारण साथ मिलान किया जाता है, यह आज तक के बजाय एक प्राथमिक कुंजी के रूप पूर्णांक प्रारूपित तिथि (20,111,207) को खोजने के लिए बहुत आम बात है - डेट-टाइप कुंजी के साथ unknown, not entered, error, ... का प्रतिनिधित्व करने के लिए यह थोड़ा गन्दा है।

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