2013-08-02 7 views
12

में खाली (कोई पंक्तियां, कोई स्तंभ नहीं) तालिका क्यों बनाएं this प्रश्न के उत्तर में मैंने सीखा है कि आप PostgreSQL में खाली तालिका बना सकते हैं।PostgreSQL

create table t(); 

क्या इसके लिए कोई वास्तविक उपयोग केस है? आप खाली टेबल क्यों बनायेंगे? क्योंकि आप नहीं जानते कि इसमें कौन से कॉलम होंगे?

उत्तर

7

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

1. एक व्यावहारिक उपयोग है कि यह आप तेजी से पुनरावृति करने के लिए जब एक नई प्रणाली बनाने या सिर्फ सामान्य रूप में तेजी से देव पुनरावृत्तियों कर अनुमति देता है।

2. 1 के और अधिक की तरह है, लेकिन आप टेबल, जो आपके ऐप्लिकेशन तर्क या प्रक्रिया भी संदर्भ बना सकते हैं बाहर ठूंठ, भले ही कॉलम अभी तक के लिए जगह में रखा जाना देता है।

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

ये सभी आसान हैं और जब मैं PostgreSQL में काम नहीं कर रहा हूं तो मुझे याद आती है।

4

यह खाली तालिका नहीं है - केवल खाली परिणाम। PostgreSQL पंक्तियों में कुछ अदृश्य (डिफ़ॉल्ट रूप से) कॉलम होते हैं। मुझे यकीन नहीं है, लेकिन यह अंधेरे युग से आर्टिफैक्ट हो सकता है, जब पोस्टग्रेस का उद्देश्य संबंधित डेटाबेस था - और पीजी समर्थित भाषा पोस्टस्टेल। यह खाली तालिका कक्षा पदानुक्रम में अमूर्त पूर्वजों के रूप में काम कर सकती है।

List of system columns

+0

पोस्टस्टेल की वजह से अंधेरे उम्र या ऑब्जेक्ट रिलेशनल भाग के कारण? पोस्टग्रेस अभी भी एक ऑब्जेक्ट रिलेशनल डेटाबेस है और कई सोचते हैं कि यह एक अच्छी बात है। –

+0

@Adam यदि आप ऑब्जेक्ट की ऑब्जेक्ट ओरिएंटेड अवधारणा के बारे में सोच रहे हैं तो पोस्टग्रेस्क्ल ऑब्जेक्ट रिलेशनल –

+0

@AdamGent "डार्क एज" मेरे लिए नकारात्मक नहीं है। स्टोनब्रकर की अवधारणाओं के बहुत सारे वास्तव में शानदार थे, हालांकि मैं वर्तमान PostgreSQL में QUEL या कुछ अजनबी अवधारणाओं (विरासत की तरह) के प्रशंसक नहीं हूं। –

4

मुझे पोस्टग्रेएसक्यूएल में शामिल करने के लिए सटीक कारण नहीं पता है, लेकिन शून्य-कॉलम तालिका - या बल्कि शून्य-विशेषता संबंध - संबंधपरक बीजगणित के सिद्धांत में एक भूमिका निभाता है, जिस पर SQL (व्यापक रूप से) आधारित।

विशेष रूप से, कोई टुपल्स के साथ शून्य-विशेषता संबंध (एसक्यूएल शब्दों में, कोई कॉलम और कोई पंक्ति वाली तालिका नहीं) शून्य या झूठी के संबंधपरक समकक्ष है, जबकि कोई विशेषताओं के साथ संबंध नहीं है लेकिन एक tuple (SQL: no कॉलम, लेकिन एक पंक्ति, जो पोस्टग्रेएसक्यूएल में जितनी दूर तक मुझे संभव नहीं है) सच है या एक है। एसएचएल के रिलेशनल सिद्धांत और आलोचक के एक स्पष्ट समर्थक ह्यूग डार्वेन ने क्रमशः इन "टेबल डम" और "टेबल डी" को संबोधित किया।

सामान्य बीजगणित x + 0 == x और x * 0 == 0, जबकि x * 1 == x; विचार यह है कि संबंध बीजगणित में, टेबल डम और टेबल डी का उपयोग जुड़ने, यूनियनों आदि के लिए समान प्राइमेटिव के रूप में किया जा सकता है।

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

2

मुझे नहीं लगता कि मेरा इरादा उपयोग है, हालांकि हाल ही में मैंने एक खाली तालिका को एक दृश्य के रूप में उपयोग किया है जिसे मैं बना देता हूं और गतिशील रूप से निष्पादित करता हूं। फ़ंक्शन जो दृश्य को बनाता/प्रतिस्थापित करता है, उसमें रिक्त तालिका पर अतिरिक्त पहुंच होती है और दृश्यों का उपयोग करने वाले अन्य कार्यों में पहुंच होती है।