2011-06-03 14 views
6

मैं एक SQL सर्वर डेटाबेस, जहां कई टेबल प्रकार numeric(18,0) के एक प्राथमिक कुंजी है विरासत में मिला।प्राथमिक कुंजी डेटाप्रकार सांख्यिक चुनने (18,0)

कोई कारण क्या है (ऐतिहासिक शायद?) क्या कोई प्राथमिक कुंजी के लिए इस डेटाटाइप को चुनता है?

उत्तर

6

मुझे लगता है कि होता है कि SQL सर्वर डाटाबेस मूल रूप से एसक्यूएल सर्वर 2000 के पहले संस्करण में डिजाइन किया गया था, और इस एक ही रास्ता है कि वे एक 'पूर्णांक' मानक पूर्णांक से भी बड़ा हो सकता है किया गया था। तब से, एक बड़ा हिस्सा अधिक उपयुक्त होता।

0

संभावित रूप से एक पूर्णांक के लिए अधिकतम सटीकता। मैं निश्चित रूप से प्राथमिक कुंजी के लिए इस समय उपयोग करता हूं, जो डेटाबेस जनरेटर से आपूर्ति की जाती है जो 64 बिट संख्या उत्पन्न करती है।

मैं वास्तव में SQL-सर्वर का उपयोग नहीं करता, लेकिन मेरे डेटाबेस पर पूर्णांक 32 बिट संख्या है, 64 बिट नहीं। जैसा कि दूसरे उत्तर में सुझाव दिया गया है, यह संभव है कि यह एक डेटाबेस में शुरू हुआ जहां इस प्रकार की सीमा जगह पर थी।

+0

हालांकि यह एक पूर्णांक नहीं है। यदि आप पूर्णांक चाहते हैं तो 'int' का उपयोग क्यों न करें? – JoelFan

1

कुंजी के लिए कोई सही या गलत प्रकार नहीं है। आपको उन विशेषताओं और प्रकारों का चयन करना चाहिए जो व्यापार डोमेन का सटीक रूप से प्रतिनिधित्व करते हैं या इनपुट डेटा से मेल खाते हैं। यदि आप जो डेटा रिकॉर्ड कर रहे हैं वह संख्यात्मक प्रकार का है तो आप इसे संख्यात्मक के रूप में क्यों नहीं स्टोर करेंगे?

+1

प्राथमिक कुंजी व्यावसायिक डेटा नहीं होना चाहिए! – JoelFan

+1

हो सकता है कि अपने पूर्ववर्ती बेहतर जानता था – sqlvogel

+0

http://rapidapplicationdevelopment.blogspot.com/2007/08/in-case-youre-new-to-series-ive.html – JoelFan

0

आप हाइबरनेट अपने स्कीमा उत्पन्न करने के लिए अनुमति देते हैं, तो यह एक लंबे समय डेटा प्रकार संख्यात्मक (19,0) को jtds साथ परिवर्तित कर देंगे। आपके मामले में कुछ ऐसा ही हो सकता है।

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