स्कीमा और टेबल और डेटाबेस में क्या अंतर है?


155

यह शायद एक n00blike (या बदतर) सवाल है। लेकिन मैंने हमेशा एक डेटाबेस में एक तालिका परिभाषा के रूप में एक स्कीमा देखा है। यह गलत है या पूरी तरह से सही नहीं है। मुझे अपने डेटाबेस पाठ्यक्रमों से बहुत कुछ याद नहीं है।


3
Oracle स्कीमा में केवल एक उपयोगकर्ता को संदर्भित किया जाता है। यही कारण है कि जब हम एक उपयोगकर्ता बनाते हैं तो स्कीमा बनाया जाएगा अब हम टेबल, व्यू, इंडेक्स पैकेज आदि को जोड़ सकते हैं जैसे कि
Ali786

जवाबों:


242

स्कीमा : डेटाबेस : टेबल :: मंजिल योजना : घर : कमरा


81
थोड़ा गुप्त, लेकिन गलत नहीं; लेकिन क्या आपको लगता है कि वास्तव में एक स्वप्रेरित n00b इसे समझेगा?
स्टीन जी। स्ट्रिंडहग

6
अच्छी उपमा। मैं "फ्लोर प्लान" को "ब्लू प्रिंट" में बदल दूंगा क्योंकि स्कीमा में सिर्फ टेबल से अधिक होते हैं, और ब्लू प्रिंट में वायरिंग और हीटिंग और प्लंबिंग होते हैं।
पॉल टॉम्बलिन

4
"स्कीमा" का वास्तव में अर्थ है "योजना"। मैंने देखा है कि यह पूरे डेटाबेस, या सिर्फ एक तालिका या दृश्य को संदर्भित करता था।
मुसैनेसिस

@Paul: अच्छे अंक। मैंने मूल रूप से "ब्लूप्रिंट" लिखा था, लेकिन इसे बदल दिया क्योंकि यह वास्तव में "हाउस" (जैसा कि कम से कम मेरे लिए नहीं) है।
मुसिएनेसिस

4
हाँ, मैं ओरेकल में एक उपयोगकर्ता के रूप में एक स्कीमा देखने के लिए जाता हूं। तो परिभाषाएँ भी db से db तक भिन्न हैं: D कैसे कष्टप्रद है।
रॉबर्ट

123

एक संबंध स्कीमा तालिका की तार्किक परिभाषा है - यह परिभाषित करता है कि तालिका का नाम क्या है, और प्रत्येक स्तंभ का नाम और प्रकार क्या है। यह एक योजना या एक खाका की तरह है। एक डेटाबेस स्कीमा पूरे डेटाबेस के लिए संबंध स्कीमा का संग्रह है।

एक तालिका पंक्तियों का एक गुच्छा (उर्फ "ट्यूपल्स") के साथ एक संरचना है, जिनमें से प्रत्येक में स्कीमा द्वारा परिभाषित विशेषताएं हैं। कुछ स्तंभों पर मूल्यों को देखने में सहायता करने के लिए तालिकाओं पर भी अनुक्रमित हो सकते हैं।

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


1
एक डेटाबेस स्कीमा में अनुक्रमणिका, दृश्य आदि भी शामिल हैं
पॉल टॉम्बलिन

1
निश्चित रूप से यह सही नहीं है। डेटाबेस तालिकाओं का संग्रह नहीं है। उदाहरण के लिए एक तालिका के बिना आपके पास 30 डेटाबेस हो सकते हैं।
रॉबर्ट

@ रॉबर्ट - इसमें किसी भी टेबल के बिना डेटाबेस होने का क्या मतलब होगा?
पॉल टॉम्बलिन

16
यहां तक ​​कि अगर आपके पास कोई टेबल नहीं है, तब भी तालिकाओं का एक संग्रह है - यह तालिकाओं का एक खाली संग्रह है।
जॉन स्कीट

1
@ इयान: यह मत भूलो कि एक डेटाबेस में भी अड़चनें होंगी - रेफ़रेंशियल कंस्ट्रक्शन (प्राइमरी कीज़, फॉरेन कीज़), यूनीकनेस की कमी और चेक की कमी। इसमें ट्रिगर और प्रक्रियाएं भी शामिल हो सकती हैं।
जोनाथन लेफ्लर 14

16

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


12

इस विशेष पोस्टिंग को केवल ओरेकल से संबंधित दिखाया गया है और दूसरे डीबी के संदर्भ में स्कीमा की परिभाषा बदल जाती है।

संभवत: थोड़े से काम के लिए सिर्फ गूगल ही है लेकिन FYI शब्द उनकी परिभाषाओं में भिन्न प्रतीत होते हैं जो सबसे कष्टप्रद बात है :)

Oracle में एक डेटाबेस एक डेटाबेस है। आपके दिमाग में डेटा फ़ाइलों और रीडो लॉग के रूप में ऐसा लगता है और डेटाबेस की डिस्क पर वास्तविक भौतिक उपस्थिति (यानी उदाहरण)

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

एक तालिका एक तालिका है, डेटा युक्त पंक्तियों और स्तंभों का एक सेट और स्कीमा में निहित है।

उदाहरण के लिए SQL सर्वर में परिभाषाएँ भिन्न हो सकती हैं। मुझे इसकी जानकारी नहीं है।


11

स्कीमा व्यवहार एक मूल वस्तु की तरह लगता है जैसा ओओपी दुनिया में देखा जाता है। तो यह एक डेटाबेस ही नहीं है। शायद यह लिंक उपयोगी है।

लेकिन, MySQL में, दोनों बराबर हैं। कीवर्ड DATABASE या DATABASES को SCHEMA या SCHEMAS के साथ प्रतिस्थापित किया जा सकता है जहाँ भी यह दिखाई देता है। उदाहरण:

  • DATEABASE बनाएं <=> बनाएं SCHEMA
  • शो DATABASES <=> शोमेव्स

MySQL का प्रलेखन

SCHEMA और DATABASE शब्द कुछ DBMS निर्भर हैं।

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


बहुमूल्य उत्तर
sofs1

2

स्कीमा पर अधिक:

SQL 2005 में एक स्कीमा समूह ऑब्जेक्ट्स का एक तरीका है। यह एक कंटेनर है जिसमें आप वस्तुओं को डाल सकते हैं। लोग इस वस्तु के मालिक हो सकते हैं। आप स्कीमा पर अधिकार प्रदान कर सकते हैं।

2000 में एक स्कीमा एक उपयोगकर्ता के बराबर थी। अब यह मुक्त हो गया है और काफी उपयोगी है। आप अपने सभी उपयोगकर्ता procs को एक निश्चित स्कीमा में फेंक सकते हैं और आपका व्यवस्थापक दूसरे में procs कर सकता है। उपयुक्त उपयोगकर्ता / भूमिका को पूरा करें और आप विशिष्ट प्रक्रियाओं पर EXECUTE देने के साथ हैं। अच्छा लगा।

डॉट नोटेशन इस तरह जाएगा:

Server.Database.Schema.Object

या

myserver01.Adventureworks.Accounting.Beans


2

Schemaडेटाबेस ऑब्जेक्ट्स का एक संग्रह है जिसमें तार्किक संरचनाएं भी शामिल हैं। इसमें उस उपयोगकर्ता का नाम है जो इसका मालिक है। A databaseमें स्कीमा की कोई भी संख्या हो सकती है। एक डेटाबेस से एक तालिका एक ही नाम के दो अलग-अलग स्कीमा में दिखाई दे सकती है। एक उपयोगकर्ता किसी भी स्कीमा को देख सकता है जिसके लिए उन्हें चुनिंदा विशेषाधिकार दिए गए हैं।


2

जैसा कि मुसिनेसिस ने अधिकांश डेटाबेस में इतनी अच्छी तरह से रखा:

स्कीमा: डेटाबेस: टेबल :: मंजिल योजना: घर: कमरा

लेकिन, ओरेकल में यह सोचना आसान हो सकता है:

स्कीमा: डेटाबेस: टेबल :: मालिक: घर: कमरा


2

उपरोक्त कुछ उत्तरों के विपरीत, यहां मेरी समझ उनमें से प्रत्येक के साथ अनुभव पर आधारित है:

  • माई एसक्यूएल: database/schema :: table
  • एस क्यू एल सर्वर: database :: (schema/namespace ::) table
  • आकाशवाणी: database/schema/user :: (tablespace ::) table

कृपया मुझे इस पर सही करें कि क्या टेबलस्पेस वैकल्पिक है या ओरेकल के साथ नहीं है, यह एक लंबा समय है जब से मुझे उनका उपयोग करना याद है।


1

Oracle स्कीमा में एक डेटाबेस के तहत एक उपयोगकर्ता है, उदाहरण के लिए scott डेटाबेस orcl में एक स्कीमा है। एक डेटाबेस में हमारे पास कई स्कीमा जैसे स्काउट हो सकते हैं


1

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

स्कीमा का उपयोग करने के लिए कई कारण हो सकते हैं:

कई उपयोगकर्ताओं को एक दूसरे के साथ हस्तक्षेप किए बिना एक डेटाबेस का उपयोग करने की अनुमति देने के लिए।

डेटाबेस समूहों को तार्किक समूहों में व्यवस्थित करने के लिए उन्हें अधिक प्रबंधनीय बनाने के लिए।

तृतीय-पक्ष अनुप्रयोगों को अलग-अलग स्कीमा में रखा जा सकता है ताकि वे अन्य वस्तुओं के नाम से न टकराएं।

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

आधिकारिक दस्तावेज को https://www.postgresql.org/docs/9.1/ddl-schemas.html कहा जा सकता है


0

स्कीमा में डेटाबेस होते हैं।

डेटाबेस स्कीमा का हिस्सा हैं।

तो, स्कीमा> डेटाबेस।

स्कीमा में दृश्य, संग्रहीत कार्यविधि (एस), डेटाबेस (एस), ट्रिगर (एस) आदि शामिल हैं।


0

एक स्कीमा पूरे डेटाबेस के लिए कोई योजना नहीं है। यह एक डेटाबेस के अंदर वस्तुओं (पूर्व वस्तुओं) के सबसेट के लिए एक योजना / कंटेनर है।

यह कहने के लिए जाता है कि आपके पास एक डेटाबेस के अंदर कई ऑब्जेक्ट्स (एक्स टेबल) हो सकते हैं जो एक ही कार्यात्मक श्रेणी के अंतर्गत नहीं आते हैं। तो आप उन्हें विभिन्न स्कीमाओं के तहत समूहित कर सकते हैं और उन्हें अलग-अलग उपयोगकर्ता पहुँच अनुमतियाँ दे सकते हैं।

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


0

एक डेटाबेस स्कीमा तार्किक रूप से समूह ऑब्जेक्ट्स जैसे टेबल, व्यू, संग्रहीत कार्यविधियाँ आदि है। स्कीमा को ऑब्जेक्ट के कंटेनर के रूप में सोचें। और टेबल पंक्तियों और स्तंभों के संग्रह हैं। सभी तालिकाओं का संयोजन एक db बनाता है।


1
वे पहले वाक्य ठीक वैसा ही हैं .... stackoverflow.com/a/29042133/2308683
OneCricketeer
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.