SQL सर्वर में "रिकॉर्ड" और "पंक्ति" के बीच अंतर क्या है?


56

SQL सर्वर में दिनांक और समय को जोड़ने के बजाय एक सहज प्रश्न था जो एक आकर्षक आकर्षक आर्थिक बहस को सेट करता था।

तो हम इन संबंधित शर्तों के बीच अंतर कैसे करते हैं और हम उन्हें कैसे ठीक से उपयोग करते हैं?

पंक्ति

अभिलेख


32
एक शिल्प का
प्रचार करता है

1
SO पर एक संबंधित पोस्ट स्पष्ट रूप से दिखाती है कि यह एक महत्वपूर्ण प्रश्न है।
dezso

ध्यान दें कि पोस्टग्रैज और ओरेकल में एक पंक्ति में कई रिकॉर्ड हो सकते हैं ...
a_horse_with_no_name

जवाबों:


69

जो सेल्को को उद्धृत करने के लिए (न केवल आप इस संदर्भ को पूरे वेब पर और उसकी विकिपीडिया प्रविष्टि में पा सकते हैं , लेकिन आप इसे कुछ सम्मेलनों में टी-शर्ट पर भी देखेंगे):

पंक्तियाँ रिकॉर्ड नहीं हैं।

बहुत सारे लोग उन्हें एक पंडित के रूप में इंगित करते हैं, जो सिर्फ विनम्र और मौखिक रूप से गाली-गलौज करना पसंद करते हैं, और मैं यह स्वीकार करूंगा कि वह कैसा है। लेकिन मैं उनसे व्यक्तिगत रूप से भी मिला हूं - यहां तक ​​कि उनके साथ भोजन भी साझा किया है - और मैं आपको यह नहीं बता सकता कि उनका वास्तविक जीवन व्यक्तित्व उनके ऑनलाइन मोर्चे से कितना अलग है। मैंने भी एक बार उसे पंक्तियों के रिकॉर्ड के साथ पकड़ा था, और वह बहुत शर्मिंदा था ( यहाँ पर पूरा बैकस्टोरी )।

मैंने वास्तव में 2006 में ग्रेपवाइन, टेक्सास में PASS सम्मेलन में इस शर्ट को पहना था

किसी भी मामले में, कहें कि आप लड़के के ऑनलाइन चरित्र के बारे में क्या कहेंगे, लेकिन उसने मानक लिखा है , और इस तथ्य को कि इस तरह के एक प्राधिकरण का आदेश है कि एक भेद है, आपको कुछ बताना चाहिए। और जितना वह रोता है जब कोई एक पंक्ति को रिकॉर्ड कहता है, तो मेरे कई सहयोगियों को - जो SQL सर्वर की दुनिया के विशेषज्ञ भी हैं। और उस शिविर में हम में से जो मानते हैं कि वह सही है।

उदाहरण के लिए, इत्ज़िक बेन-गण, एक स्पष्ट SQL सर्वर गुरु। यहाँ अपने प्रशिक्षण किट में बहुत पहले पाठ से एक उद्धरण है (परीक्षा 70-461): Microsoft SQL Server 2012 को छोड़ :

टी-एसक्यूएल में गलत शब्दों के उदाहरण के रूप में, लोग अक्सर टी-एसक्यूएल को "कॉलम" और "पंक्ति" के रूप में संदर्भित करने के लिए "फ़ील्ड" और "रिकॉर्ड" शब्दों का उपयोग करते हैं। फ़ील्ड और रिकॉर्ड भौतिक हैं। फ़ील्ड्स हैं जो आपके पास क्लाइंट एप्लिकेशन में उपयोगकर्ता इंटरफ़ेस में हैं, और रिकॉर्ड वे हैं जो आपके पास फ़ाइलों और कर्सर में हैं। तालिकाएँ तार्किक हैं, और उनके पास तार्किक पंक्तियाँ और स्तंभ हैं।

और, इत्ज़िक को जानते हुए, यदि आप उसे एक ई-मेल भेजते हैं या एक सम्मेलन में उसे कोने में भेजते हैं, तो वह खुशी से आपको वही बताएगा। यदि आप किसी पंक्ति को उसकी राय में रिकॉर्ड करते हैं, तो आप शब्दावली का सही उपयोग नहीं कर रहे हैं।

अब, सभी प्रकार के लोगों से भरा एक उद्योग होने के नाते, आपको सामग्री मिलने की संभावना है (जैसे कि एक अन्य उत्तर में पोस्ट किए गए तकनीकी लक्ष्य लेख) जो दोनों के बीच बहुत ही सूक्ष्म अंतर बनाते हैं, और आपको उद्योग में कई लोग मिलेंगे उन्हें समान मानें (मैं Microsoft के कई लोगों को जानता हूं, और अन्य लोगों जैसे ब्रेंट ओजर, जो हमेशा इसे रिकॉर्ड कहेंगे)। यह उन्हें सही नहीं बनाता है, बस इसे देखने का उनका तरीका है - वे तार्किक और शारीरिक रूप से समान (कम से कम इस संदर्भ में) देखते हैं और उनमें से कई शायद सोचते हैं कि हम में से बाकी सिर्फ बहुत समय बिताने के लिए गुदा प्रतिशोधी हैं शब्दार्थ पर।

चूँकि किसी भी विक्रेता को यह कहने की आवश्यकता नहीं है कि "आप उन्हें {रिकॉर्ड्स | पंक्तियों}" कहेंगे, हम हमेशा इस तर्क से निपटेंगे, क्योंकि हमेशा कोई ऐसा व्यक्ति होगा जो तार्किक बनाम भौतिक नहीं मिलता है, या अलग तरह से सिखाया जाता था, या एक्सेस या प्रोग्रामिंग बैकग्राउंड, आदि से आए जैसे कुछ लोग कहते हैं कि टॉम-टू और दूसरे लोग कहते हैं कि टॉमह-टू, हमेशा ऐसे लोग होंगे जो "वे एक ही हैं" से लेकर "वे पूरी तरह से अलग हैं" ”- और बीच में कई शेड्स। फिर, कि उनमें से कोई भी सही नहीं है, क्योंकि कोई भी इस पर अंतिम अधिकार हो सकता है। लेकिन SQL सर्वर स्पेस में, निश्चित रूप से बहुमत है।


उस ने कहा, IMHO, जब आप उस डेटा के बारे में बात कर रहे हैं जो एक तालिका में है, तो आप इसे एक पंक्ति कहते हैं। जब आप एक सम्मिलित प्रदर्शन कर रहे होते हैं, तो आप एक पंक्ति को एक तालिका में सम्मिलित कर रहे होते हैं। जब आप एक अद्यतन चलाते हैं, तो आप एक पंक्ति को अद्यतन कर रहे हैं जो एक तालिका में है। और जब आप एक SELECT करते हैं, तो आप तालिका से पंक्तियों को पुनः प्राप्त कर रहे हैं।

एक बार आपके आवेदन की पकड़ होने के बाद इसे रिकॉर्ड करने के लिए स्वतंत्र महसूस करें। लेकिन गुस्सा मत करो अगर तुम कहते हो, "मैंने एक रिकॉर्ड डाला," और कोई आपको सही करता है।


33

Microsoft ने अपने संगठन में कई स्थानों पर यह प्रदान किया है कि सारणी-प्रति-सारणी में सारणीबद्ध डेटा भंडारण के लिए आधिकारिक नाम (एक टैक्सीनामिक परिभाषा जो मेरे स्वयं के उद्देश्य से काम करता है) को "ROW" कहा जाता है। मैं सबूत के रूप में प्रस्तुत ROW_NUMBER, ROWCOUNT, ROWVERSIONऔर DataTable.Rowsसंपत्ति है, जहां एक DataTableएक TSQL "तालिका" वस्तु की एक सी # प्रतिनिधित्व है। इस स्थिति में, MSDN गुण एक संपूर्ण rowडेटा के उपयोग को प्रोत्साहित करते हैं जो एक तालिका में एक प्रविष्टि का डेटा संग्रह करने के लिए संदर्भित करता है। (ध्यान दें कि मैं इसे परिभाषित करने के लिए "रिकॉर्ड" या "पंक्ति" के उपयोग से बचने की कोशिश कर रहा हूं, यह प्रश्न का बिंदु है)

हालाँकि, समानता यह है कि एक एप्लिकेशन उपयोगकर्ता "रिकॉर्ड" से संबंधित है। एक रिकॉर्ड के बारे में कुछ अनूठा जो एक एकल भंडारण पंक्ति द्वारा सीधे प्रतिनिधित्व नहीं किया जा सकता है, यह तथ्य यह है कि एक रिकॉर्ड में सबक्रॉर्ड हो सकते हैं। सच है, एक तालिका में कई-से-एक तालिकाएँ हो सकती हैं, लेकिन वे संचित रूप से संग्रहीत नहीं हैं, लेकिन वे तार्किक रूप से संबंधित हैं।

इसलिए, एक पंक्ति एक तालिका में एक चीज है, और एक रिकॉर्ड वह चीज है जिसे डेवलपर व्यावहारिक उपयोग में काम करता है।


8
एक तर्क दे सकता है कि ROW तार्किक इकाई है, जबकि RECORD भौतिक इकाई है। ROW में कई रिकॉर्ड हो सकते हैं: क्लस्टर इंडेक्स में एक, नेकां इंडेक्स में कई। एक पंक्ति जो पृष्ठ में फिट नहीं होती है, उसे पृष्ठ में रिकॉर्ड और SLOB संग्रहण में ओवरफ्लो रिकॉर्ड के बीच विभाजित किया जा सकता है। किसी पंक्ति के फ़ील्ड का एक BLOB मान BLOB संग्रहण में कई TEXT रिकॉर्ड दर्ज कर सकता है। एक ढेर में एक पंक्ति एक स्टब रिकॉर्ड और आगे के रिकॉर्ड से मिलकर बन सकती है। आदि आदि
रेमस रुसानु १३'१३ को

तब आपने एप्लिकेशन डोमेन से शब्द रिकॉर्ड का उपयोग पूरी तरह से हटा दिया होगा, या पानी को पूरी तरह से पिघला दिया होगा और हमें निश्चित रूप से सैद्धांतिक डेटाबेस डिजाइन और कार्यान्वयन विवरण के दायरे से दूर ले जाएगा। आप अच्छे अंक जुटाते हैं, लेकिन डेटाबेस बनाम ऐप्स के कन्वेंशन से, जो कि हमारे पाठकों का 80% आरामदायक होगा, मेरा जवाब अभी भी है, मैं पकड़ लेता हूं।
jcolebrand

4
मैं आपके उत्तर का खंडन नहीं कर रहा हूँ, शायद मैं गलत-एड करता हूँ। मैंने केवल प्रस्तुत किया कि कैसे एसक्यूएल इंजन द्वारा चीजों को देखा जाता है, जहां भौतिक पहुंच परत उन्हें 'रिकॉर्ड' बनाम क्वेरी प्रोसेसिंग (भाषा) परत कहती है जो 'पंक्तियों' को संभालती है।
रेमस रूसु

समझा। मुझे अभी भी ऐसा लग रहा है कि यह पानी को पिघला देगा। कोई अपराध नहीं हुआ, मैं आपको विश्वास दिलाता हूं।
jcolebrand

31

मैंने सिर्फ दस्तावेज़ "सूचना प्रौद्योगिकी - डेटाबेस भाषाओं - एसक्यूएल भाग 2: फाउंडेशन (एसक्यूएल / फाउंडेशन)" के माध्यम से खोजा है, जो सभी प्रमुख RDBMSes द्वारा कार्यान्वित SQL के लिए ANSI मानक को परिभाषित करता है।

इस शब्द rowका उपयोग मुख्य रूप से दस्तावेज़ में कई सौ बार किया जाता है, जैसा कि अपेक्षित था।

इस शब्द recordका उपयोग केवल एक रिकॉर्ड का वर्णन करने के लिए किया गया था जो कि Oracle PL / SQL (विशेष रूप से ADA रिकॉर्ड डेटाटिप्स का वर्णन करते हुए) में उपयोग किए गए रिकॉर्ड के समान है। दस्तावेज में 6 उल्लेख हैं।

मुझे लगता है कि यह इस सवाल को साफ करता है, और दोनों पक्षों के विभिन्न तर्कों का जवाब देता है।


अतिरिक्त जानकारी

एसक्यूएल मानक, जो कि wiscorp.com (पेज एसक्यूएल स्टैंडर्ड्स के कई अन्य पुराने संस्करण और संशोधन हैं) पर पाया जा सकता है।

7-21WD2-02-Foundation-2011-12.pdf की खोज में , 2011-12-21 की तारीख से पता चलता है कि दस्तावेज़ में शब्द पंक्ति 2277 बार दिखाई देती है, जबकि शब्द रिकॉर्ड केवल 21 बार दिखाई देता है, या तो क्रिया "रिकॉर्ड" के रूप में या अंत में कुछ परिशिष्टों में, SQL डेटा प्रकार और होस्ट भाषा प्रकार (Ada, पास्कल) के लिए डेटा प्रकार पत्राचार के विनिर्देशों में।

इसके अलावा, एक ही दस्तावेज़ में पृष्ठ 57 (जोर मेरा) है:

4.15.1 तालिकाओं का परिचय

इस उप-धारा को उप-खंड 4.10.1 द्वारा संशोधित किया गया है, "तालिकाओं का परिचय", आईएसओ / आईईसी 9075-9 में।

एक तालिका शून्य या अधिक पंक्तियों का एक संग्रह है जहां प्रत्येक पंक्ति एक या एक से अधिक स्तंभ मानों का अनुक्रम है। पंक्ति का सबसे विशिष्ट प्रकार एक पंक्ति प्रकार है। दी गई तालिका की प्रत्येक पंक्ति में एक ही पंक्ति प्रकार होता है, जिसे उस तालिका की पंक्ति प्रकार कहा जाता है। किसी तालिका में प्रत्येक पंक्ति के i-th फ़ील्ड का मान तालिका में उस पंक्ति के i-th स्तंभ का मान है । पंक्ति डेटा की सबसे छोटी इकाई है जिसे तालिका में डाला जा सकता है और तालिका से हटाया जा सकता है।

एक तालिका की डिग्री, और इसकी प्रत्येक पंक्तियों की डिग्री , उस तालिका के स्तंभों की संख्या है। किसी तालिका में पंक्तियों की संख्या इसकी कार्डिनैलिटी है। एक मेज जिसकी कार्डिनैलिटी 0 है (शून्य) को खाली कहा जाता है।

एक तालिका या तो एक आधार तालिका , एक व्युत्पन्न तालिका , या एक क्षणिक तालिका है


जहाँ तक SQL का उपयोग करने वाले DBMS का संबंध है:

पंक्तियाँ रिकॉर्ड नहीं हैं , फ़ील्ड कॉलम नहीं हैं, टेबल फाइलें नहीं हैं!


14

क्योंकि रिलेशनल डेटाबेस को अलगाव में शायद ही कभी उपयोग किया जाता है, सिस्टम के अन्य भागों के बीच भ्रम से बचने के लिए, मैं हमेशा टेबल और पंक्तियों और स्तंभों का संदर्भ देता हूं। एक क्लाइंट एप्लिकेशन में, हमारे पास आमतौर पर अन्य निर्माण होते हैं, जिसमें डेटारेडर्स, डेटासेट, डेटारो, डेटाटेबल्स, आदि शामिल हैं - उदाहरण के लिए "फ़ील्ड" अक्सर ऑन-स्क्रीन डेटा प्रविष्टि के लिए उपयोग किया जाता है और पास्कल में एक रिकॉर्ड डेटाटाइप होता है जो सी में एक संरचना के समान होता है। ।

कभी-कभी एक सिस्टम डिज़ाइन में, एक "रिकॉर्ड" के विचार का उपयोग किसी एकल पंक्ति की तुलना में कुछ व्यापक करने के लिए किया जा सकता है। यह एक पंक्ति हो सकती है और यह इतिहास है। जिस तरह जब हम एक डिलीट की गई पंक्ति के बारे में बात करते हैं, तो हमारा मतलब एक ऐसी पंक्ति से हो सकता है, जिसे एक कॉलम के साथ डिलीट किया गया हो या हटाए गए टेबल पर "मूव" किया गया हो (न कि केवल एक पंक्ति की अनुपस्थिति, जो मौजूदा नहीं है, बल्कि कठिन है) बाँधना)। रिकॉर्ड शब्द के बस अधिक विविध उपयोग हैं।

टेबल्स, पंक्तियों और स्तंभों को आम तौर पर संबंधपरक डेटाबेस में इन संस्थाओं के संदर्भ के लिए स्वीकार कर लिया जाता है, जिसमें कागजात और कोड और तिथि के अनुसार कार्य शामिल हैं, और अधिकांश डेटाबेस पेशेवर इस शब्दावली को पसंद करते हैं क्योंकि यह अधिक अस्पष्ट है।

जब कोई व्यक्ति पंक्तियों और स्तंभों के बारे में बात करता है, तो आमतौर पर कोई अस्पष्टता नहीं होती है - दूसरे लोग समझते हैं कि आप अंतर्निहित डेटाबेस भौतिक डिजाइन के बारे में बात कर रहे हैं और भौतिक डिजाइन से पहले तार्किक डिजाइन से किसी भी अन्य प्रकार की कलाकृतियां नहीं हैं या किसी भी बाद के क्षेत्रों की तरह उभरती हुई सिस्टम इकाइयाँ स्क्रीन।


9

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

इन शब्दों का परस्पर प्रयोग होता है।

 1          2         3              4 
--------------------------------------------------------------------
Row    =  Record  =  Tuple        =  Entity 

Column =  Field   =  Attribute    =  Attribute

table  =  File    =  Relation     =  Entity Types(or Entity Set)
  • जब हम ईआर-मॉड्यूल सीखते हैं तो 4 शब्दावली का उपयोग करना अच्छा होता है
  • 3 रिलेशनल मॉडल का उपयोग करें
  • 2- सामान्य दृश्य, DataBase books start with these terminologyक्योंकि ये आम तौर पर वास्तविक जीवन में लोगों द्वारा उपयोग किए जाते हैं, फाइल-सिस्टम में भी।

भंडारण प्रणाली में रिकॉर्ड एक बुनियादी इकाई है जिसका निहित अर्थ है। DBMS recordमें अध्याय में शब्द का उपयोग वर्णन करता है कि कैसे डेटाबेस तालिकाओं को डिस्क ब्लॉक पर संग्रहीत किया जाता है। DBMS record-oriented file-systemमें एक फाइल सिस्टम है जहां फाइलों को रिकॉर्ड के संग्रह के रूप में संग्रहीत किया जाता है।


9

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

तो आइए हम इसे आसान लेते हैं - पंक्तियों और रिकॉर्ड के बीच के अंतर को जानने के लिए डेटाबेस को विकसित करने और बनाए रखने की हमारी क्षमता में कुछ भी नहीं जोड़ता है। कई उत्कृष्ट पेशेवर पंक्तियों और रिकॉर्डों का परस्पर उपयोग करते हैं, फिर भी भयानक प्रणाली विकसित करते हैं। जैसे, ओकाम के रेजर को अंततः भेद को खत्म करना चाहिए, और अगली पीढ़ी को एक कम बेकार तथ्य सीखना होगा। यदि, निश्चित रूप से, SQL उस समय भी प्रासंगिक है।


5

सीजे डेट की पुस्तक "एन इंट्रोडक्शन टू डेटाबेस सिस्टम्स" को उद्धृत करने के लिए " ऐसी तालिका की पंक्तियों को फाइल के रिकॉर्ड के रूप में सोचा जा सकता है। "

इसलिए, डेटाबेस के लिए, यह रो है।


4

संक्षिप्त उत्तर :

  • एक रिकॉर्ड संग्रहीत (या एकत्र) डेटा का एक टुकड़ा है।
  • एक पंक्ति रैखिक रूप से संग्रहीत एक रिकॉर्ड है।
  • जहां कभी संभव हो, अधिक विशिष्ट शब्द का उपयोग करें।

नोट: तालिकाएँ रिकॉर्ड को रैखिक रूप से संग्रहीत करती हैं और क्वेरीज़ रैखिक रूप से परिणाम लौटाती हैं

समर्थन :

वेब से अतिरिक्त परिभाषाएँ:

  • SQL "पंक्ति" ( 1 , 2 )
  • SQL "रिकॉर्ड" ( 1 , 2 )
  • "रिकॉर्ड" ( 1 , 2 , 3 , 4 )
  • "पंक्ति" ( 1 , 2 , 3 , 4 भी देखें )
  • StackOverflow पर पंक्ति बनाम रिकॉर्ड ( 1 , 2 )

यह उल्लेखनीय है कि SQL परिभाषा आम तौर पर अंग्रेजी परिभाषा का पालन करती है।

यदि आपके पास एक परिभाषा है जो आपको लगता है कि यहां होना चाहिए, तो कृपया इसे टिप्पणियों में जोड़ें।
मैं विशेष रूप से SQL मानक या कार्यान्वयन के प्रलेखन से परिभाषाओं में दिलचस्पी रखता हूं।

उद्धरण लाया गया है "पंक्तियाँ रिकॉर्ड नहीं हैं।" संदर्भ से बाहर यह मेरे पिछले दावे (और कई डेटाबेस पेशेवरों के) के विपरीत प्रतीत होगा। लेकिन, अगर आप पूरी पोस्ट पढ़ें ( 1 जो सेलको (उर्फ --CELKO--) द्वारा बोली के लिए खोज) यह स्पष्ट है कि जो सेलको एक व्यक्ति जो जो सेलको का मानना है कि व्यक्ति के "से उत्पन्न होती हैं की एक गलत धारणा को दूर करने के प्रयास कर रहा है हो जाता है ... पारंपरिक फ़ाइल सिस्टम के साथ डेटा प्रोसेसिंग में पृष्ठभूमि ... "। संक्षेप में जो सेल्को कह रहा है कि SQL पंक्तियाँ अन्य प्रणालियों में रिकॉर्ड के समान काम नहीं करती हैं। जो सेल्को एक शब्द को परिभाषित करने के अधिकार / विशेषाधिकार का दावा नहीं कर रहा है, वह गलत तरीके से सिद्धांतों को एक भंडारण मॉडल को दूसरे पर लागू करने के लिए लाया गया एक मिस समझ को साफ करने की कोशिश कर रहा है।


3
मैं काम की सराहना करता हूं और सोचा था कि आप इस पर ध्यान देंगे। मैं ध्यान दूंगा कि सेल्को की विभेदीकरण RDBMS और RDBMS से पहले वाली फ्लैट फाइल-COBOL प्रणालियों के बीच अंतर निकालने का इरादा है। एर्गो, वह आरडीबीएमएस स्कीमा के हिस्से के रूप में "पंक्ति" और एक फ्लैट फ़ाइल के घटक भाग के रूप में "रिकॉर्ड" पर जोर दे रहा है।
स्वैसेक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.