MySQL में स्कीमा / डेटाबेस के बीच अंतर


290

क्या MySQL में स्कीमा और डेटाबेस के बीच अंतर है? SQL सर्वर में, एक स्कीमा के संबंध में एक डेटाबेस एक उच्च स्तरीय कंटेनर है।

मैं पढ़ता हूं Create Schemaऔर Create Databaseअनिवार्य रूप से MySQL में वही काम करता हूं, जो मुझे विश्वास दिलाता है कि स्कीमा और डेटाबेस एक ही ऑब्जेक्ट के लिए अलग-अलग शब्द हैं।


वास्तव में मैं कहूंगा कि इससे schemaबेहतर है database, क्योंकि MySQL एक तरह का डेटाबेस है, और इसमें कई शामिल हैं database, और कभी-कभी आप usea database, जो लक्ष्य को चूकने के लिए कई खोज करते हैं।
theaws.blog

जवाबों:


335

जैसा कि MySQL शब्दावली में परिभाषित किया गया है :

MySQL में, शारीरिक रूप से, एक स्कीमा एक डेटाबेस का पर्याय है । आप MySQL SQL सिंटैक्स के SCHEMAबजाय कीवर्ड को स्थानापन्न कर सकते हैं DATABASE, उदाहरण के लिए CREATE SCHEMAइसके बजाय का उपयोग कर CREATE DATABASE

कुछ अन्य डेटाबेस उत्पाद एक अंतर आकर्षित करते हैं। उदाहरण के लिए, ओरेकल डेटाबेस उत्पाद में, एक स्कीमा डेटाबेस के केवल एक भाग का प्रतिनिधित्व करता है: एकल उपयोगकर्ता के स्वामित्व वाली तालिकाएँ और अन्य वस्तुएँ।


74
मुझे लगता है कि "कुछ अन्य डेटाबेस उत्पाद" वास्तव में बहुत अधिक हर दूसरे डेटाबेस के लिए एक व्यंजना है (शायद SQLite को छोड़कर, लेकिन यह समझ में आता है)।
स्टीफन स्टीगर

5
स्कीमा को डेटाबेस का पर्याय बनाना दिलचस्प है - मैंने इसे हमेशा उपयोगकर्ता ऑब्जेक्ट्स के साथ जोड़ा था .. और SQLServer का एक दोस्ताना उल्लेख जिसने उपयोगकर्ता / स्कीमा अवधारणा को लचीलेपन के एक बोटलोड के लिए अनुमति दी और गतिशील प्रश्नों को करने के लिए कुछ दिलचस्प तरीके से अलग किया।
गेरार्ड ओनली

डेटाबेस ऑब्जेक्ट्स के समूह के रूप में "स्कीमा" को परिभाषित करने के बारे में कष्टप्रद बात यह है कि यह शब्द के पुराने अर्थ को ओवरलोड करता है, जैसे कि en.wikipedia.org/wiki/Database_schema
मार्क ई। हासे

1
@ शेमस दोनों शब्द का पुराना अर्थ है। SQL 3 (1999) से पहले ओरेकल के पास स्कीमा था, हालांकि यह उन्हें अन्य डेटाबेस के रूप में मानता था जो पूर्ण-विकसित डेटाबेस को प्रसारित करेगा। वास्तव में, ओरेकल "डेटाबेस" को कॉल करता है जिसे अन्य लोग सर्वर या सर्वर उदाहरण कहते हैं - विभिन्न बायनेरिज़, विभिन्न निष्पादन योग्य, विभिन्न पोर्ट।
पनियागोटिस कानावोस

61

डेटाबेस सर्वर पर निर्भर करता है। MySQLपरवाह नहीं है, मूल रूप से एक ही बात है।

Oracle, DB2और अन्य उद्यम स्तर डेटाबेस समाधान एक अंतर बनाते हैं। आमतौर पर एक स्कीमा टेबल का एक संग्रह है और एक डेटाबेस स्कीमा का एक संग्रह है।


6
यहां तक ​​कि Microsoft SQL सर्वर में भी Oracleऔर DB2इस मामले के लिए बहुत समान अंतर है ।
आरबीटी

2
MySQL में "डेटाबेस" और "स्कीमा" मूल रूप से एक ही बात नहीं है; यह वास्तव में एक ही बात है (उदाहरण के लिए, create databaseऔर create schemaसमानार्थक शब्द हैं)। ओरेकल स्कीमा उपयोगकर्ता का पर्याय है (शायद अधिक सटीक रूप से, स्कीमा उपयोगकर्ता के तहत बनाई गई सभी वस्तुओं की एक सूची है)। MSSQL तीनों को अलग करता है (और नतीजतन, जब एक अलग डेटाबेस से एक टेबल एक्सेस करते हैं, तो नाम डेटाबेस और स्कीमा दोनों द्वारा योग्य होना चाहिए, जैसे database1.dbo.table2)
माइक रोसॉफ्ट

17

MySql प्रलेखन का संदर्भ लेते हुए ,

निर्मित DATABASE दिए गए नाम के साथ एक डेटाबेस बनाता है। इस कथन का उपयोग करने के लिए, आपको डेटाबेस के लिए CREATE विशेषाधिकार की आवश्यकता है। क्रिएट स्कीमा MySQL 5.0.2 के रूप में क्रिएट डेटा के लिए एक पर्याय है।


7

PostgreSQL स्कीमा का समर्थन करता है, जो एक डेटाबेस का सबसेट है: https://www.postgresql.org/docs/current/static/ddl-schemas.html

एक डेटाबेस में एक या अधिक नामित स्कीमा होते हैं, जो बदले में टेबल होते हैं। स्कीमा में डेटा प्रकार, फ़ंक्शंस और ऑपरेटरों सहित अन्य प्रकार की नामित वस्तुएँ भी होती हैं। एक ही ऑब्जेक्ट नाम का उपयोग विभिन्न स्कीमाओं में बिना संघर्ष के किया जा सकता है; उदाहरण के लिए, स्कीमा 1 और मायस्केमा दोनों में मायटेबेल नाम की टेबल हो सकती है। डेटाबेस के विपरीत, स्कीमा कठोर रूप से अलग नहीं होते हैं: उपयोगकर्ता डेटाबेस में किसी भी स्कीमा में उन वस्तुओं तक पहुंच सकता है जो वे जुड़े हुए हैं, यदि उनके पास ऐसा करने के लिए विशेषाधिकार हैं।

स्कीमा ऑपरेटिंग सिस्टम स्तर पर निर्देशिकाओं के अनुरूप हैं, सिवाय इसके कि स्कीमा को नस्ट नहीं किया जा सकता है।

मेरी विनम्र राय में, MySQL एक संदर्भ डेटाबेस नहीं है। आपको स्पष्टीकरण के लिए MySQL का उद्धरण कभी नहीं देना चाहिए। MySQL गैर-मानक SQL को लागू करता है और कभी-कभी सुविधाओं का दावा करता है कि यह समर्थन नहीं करता है। उदाहरण के लिए, MySQL में, CREATE स्कीमा केवल DATABASE बनाएगा। यह उपयोगकर्ताओं को गुमराह करने वाला है।

DBA द्वारा इस तरह की शब्दावली को "MySQLism" कहा जाता है।


2
और फिर शुरुआती लोगों के लिए भ्रम को जोड़ने के लिए "स्कीमाटा" है :)
Zeni

@Zeni MySQL में वास्तव में एक स्कीमाटा क्या है? सभी मुझे मिल सकते हैं सूचनाओं के संदर्भ में
हैं_शेमा स्कीमाता

@ Alf47 "स्कीमाटा" शब्द "स्कीमा" का बहुवचन रूप है। "स्कीमा" भी स्वीकार्य है, लेकिन फैंसी के रूप में नहीं :)
jobo3208

6

MySQL स्कीमा में डेटाबेस का पर्याय है । शुरुआत करने वाले लोगों के लिए यह काफी भ्रामक है जो MySQL में कूदते हैं और पहले दिन स्कीमा शब्द पाते हैं , इसलिए लोग चिंता करने की कोई बात नहीं है क्योंकि दोनों समान हैं।

जब आप पहली बार MySQL शुरू कर रहे हैं तो आपको काम करने के लिए एक डेटाबेस (किसी भी अन्य डेटाबेस सिस्टम की तरह) बनाने की आवश्यकता है ताकि आप SCHEMA को क्रिएट कर सकें जो कुछ भी नहीं है, लेकिन DATABASE बनाएं

कुछ अन्य डेटाबेस सिस्टम में स्कीमा डेटाबेस के एक भाग या टेबल्स के संग्रह का प्रतिनिधित्व करता है, और स्कीमा का संग्रह एक डेटाबेस है।


3

हां, लोग MySQL के संबंध में इन शब्दों का प्रयोग परस्पर करते हैं। हालांकि, अक्सर आप लोगों को अनुचित रूप से पूरे डेटाबेस सर्वर को डेटाबेस के रूप में संदर्भित करते हुए सुनेंगे।


0

उदाहरण के लिए, Microsoft SQL सर्वर, स्कीमा एकल उपयोगकर्ता को संदर्भित करता है और सर्वर, डेटाबेस, स्कीमा, तालिकाओं और वस्तुओं को इंगित करने के क्रम में एक कंटेनर का दूसरा स्तर होता है।

उदाहरण के लिए, जब आप dbo.table_a को अद्यतन करने का इरादा कर रहे हैं और वाक्यविन्यास पूर्ण योग्य नहीं है जैसे कि UPDATE table.a DBMS इच्छित तालिका का उपयोग करने का निर्णय नहीं ले सकता है। डिफ़ॉल्ट रूप से अनिवार्य रूप से DBMS myuser.table_a का उपयोग करेगा


स्कीमा एकल उपयोगकर्ता के स्वामित्व में हैं । डिफ़ॉल्ट रूप से, डेटाबेस में बनाया गया उपयोगकर्ता dbo स्कीमा का उपयोग उनके डिफ़ॉल्ट स्कीमा के रूप में करता है। एक पूरी तरह से योग्य तालिका संदर्भ के लिए उपयोग किया जाने वाला डिफ़ॉल्ट स्कीमा उस उपयोगकर्ता के लिए निर्धारित है।
गेरार्ड ओनील

SQL सर्वर के पुराने संस्करणों में, उपयोगकर्ता को हटाने से उस स्कीमा को प्रस्तुत किया जाएगा जो इसके साथ अनुपयोगी था। इन दिनों उपयोगकर्ता और स्कीमा के बीच मानचित्रण कम सख्त है। इसके अलावा, डेटाबेस के मालिक और सभी स्कीमाओं के लिए एक एकल नकली खाता बनाना सबसे अच्छा अभ्यास माना जाता है।
जोनाथन एलन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.