>> ठीक है.
तो, आगे की हलचल के बिना, एसक्यूएल, संरचित क्वेरी भाषा.
तो, आप शायद इस का इस्तेमाल शायद CS165 में CS50, में कम से कम,
शायद अपने खुद में निजी परियोजनाओं.
और क्या एसक्यूएल, आप करते हैं करता है अधिक आम तौर पर एक एसक्यूएल सर्वर में?
हाँ?
[अश्रव्य टिप्पणी]
ठीक है, यह बहुत था यह कहने का सुरक्षित तरीका है.
हां. इसलिए यह अनुमति देता है आप डेटा स्टोर करने के लिए
और अधिक महत्वपूर्ण बात की अनुमति देता है आप डेटा के लिए क्वेरी करने के लिए.
और यह एक कदम आगे है
कुछ का उपयोग करने से एक सीएसवी की तरह सरल, सही है.
कॉमा चर अलग कर दिया.
समान मूल्यों.
इसी प्रकार आप को बचाने जानकारी एक पंक्ति
एक पाठ फ़ाइल में.
लेकिन एक के नकारात्मक पक्ष क्या है सीएसवी अपने डेटा भंडारण के लिए फाइल,
भले ही आप को प्रभावी ढंग से यह से पंक्तियों और स्तंभों मिलता है?
हाँ.
>> आप 'नहीं है एक ही संगठन
दक्षता [सुनाई].
>> आप एक ही नहीं है संगठन दक्षता.
तुम्हारा क्या मतलब है?
>> खैर, जैसे [सुनाई] [सुनाई] प्राथमिक की तरह है.
>> ठीक है. हाँ.
>> यह एक संबंधपरक डेटाबेस है आप एकाधिक डेटाबेस हो सकता है
एक दूसरे से जुड़े बहुत विशिष्ट तरीके में.
>> ठीक है. अच्छा.
>> यह है [सुनाई] एक सीएसवी स्थापित करने के लिए.
>> और मुझे tweak जाने एक छोटी सी शब्दावली.
तो एकाधिक तालिकाओं एक डेटाबेस के भीतर, यकीन,
और उस से परे चला जाता है आप सिर्फ एक सीएसवी के साथ क्या कर सकते हैं.
लेकिन वास्तव में सीमा सीएसवी के साथ मैं है बहस होगी
कि यह सभी की अक्षमता.
यह लेआउट के लिए बहुत आसान है.
लेकिन अगर आप एक करना चाहते हैं क्वेरी, चलने का समय क्या है
किसी का चयन क्वेरी की एक सीएसवी फाइल पर?
मैं यह बड़ी पुरानी [सुनाई] का मतलब ठीक है, सबसे खराब स्थिति में 'कारण,
वे बहुत नीचे गुलाब.
आप पूरे क्रमबद्ध किया था यहां तक ​​कि अगर सीएसवी फाइल, आप नहीं जानते कि अगर
कि अग्रिम, अच्छी तरह से, आप अभी भी किया जा रहे हैं
पूरी बात खोज करने के लिए.
तो, बातों के अलावा हम ले जा रहे हैं
एक वास्तविक उपयोग करने से एक भाषा का उपयोग कर डेटाबेस
एसक्यूएल हम क्वेरी कर सकते है जैसे यह और हम पहले से कर सकते हैं
डेटाबेस डिजाइनर के रूप में क्षेत्रों रहे हैं निर्दिष्ट
संभावना है करने के लिए जा रहे थे कि के बारे में सवाल तो यह है कि लोग
MySQL या माइक्रोसॉफ्ट या ओरेकल, पर
जो कोई भी डेटाबेस बनाया गया है आप उपयोग कर रहे हैं सब कर सकते हैं
की कड़ी मेहनत का बाहर लगाना, ठीक है,
इन आईडी की एक करोड़ दिए गए.
कैसे हम लेआउट कर सकते हैं - स्मृति में उन्हें बाहर?
पेड़ के कुछ प्रकार शायद संरचना,
इतना है कि जब आप ऐसा करेंगे वास्तव में, का चयन करें अमल
यह है कि कुछ है लघुगणक या लघुगणक
समय में लघुगणक बल्कि की वास्तव में devolving से
रेखीय कुछ में.
तो हम में से एक बहुत कुछ मिल गया प्रदर्शन है कि जिस तरह से.
और हम भी एक बहुत अधिक स्टोर कर सकते हैं डेटा और अधिक आसानी से 'एसक्यूएल कारण
सर्वर आम तौर पर संग्रहीत किया जाता है राम में भले ही भागों
की यह डिस्क पर संग्रहित किया जा सकता है और जैसा कि आप शायद अब तक पता
कि रैम आम तौर पर है डिस्क की तुलना में तेजी,
इतना है कि एक अच्छी बात है.
और हम भी संभाल कर सकते हैं ज्यादा बेहतर संगामिति.
आप 165 या 161, ले लिया है आपको पता है कि दो लोगों की कोशिश अगर
एक ही बात करना एक बार एक प्रणाली पर पर,
बुरी बातें आम तौर पर हो सकता है.
अन्य सुविधाओं के बीच तो हम हम हमारे टेबल डिजाइन प्राप्त कर सकते हैं
सही तरीका है में बेहतर समर्थन और सुरक्षा
यह संगामिति के लिए आता है.
तो, दो भागों में दो लोग
उसी का उपयोग कर दुनिया की वेबसाइट, वे दोनों की कोशिश अगर
उसी में कुछ खरीदने के लिए समय, उस आदेश नहीं जा रहा है
एक साथ में जाने के लिए.
किसी तरह वे धारावाहिक की जाएगी हमारे खुद के अलावा अन्य किसी के द्वारा -
खुद के अलावा अन्य किसी को.
डेटाबेस इच्छा हमारे लिए ऐसा करते हो.
तो यह सबसे सरल रूप है जब,
एसक्यूएल हमें इस प्रश्न को एक देता है रिलेशनल डेटाबेस.
एक संबंधपरक डेटाबेस एक है कि एक है
आम तौर पर यह या अधिक तालिकाओं.
और अगर यह छोटे से अपरिचित,
आप वास्तव में सिर्फ सोच सकते हैं इस एक्सेल या संख्याओं के रूप में
या गूगल स्प्रेडशीट्स.
यह सिर्फ पंक्तियाँ और स्तंभ हैं और आम तौर पर प्रत्येक के ऊपर
उन पंक्तियों की इसके लिए एक नाम है.
तो इस आईडी हो सकता है स्तंभ, नाम स्तंभ,
इसके आगे पता स्तंभ और.
और फिर आप कई हो सकते हैं ऐसे तालिकाओं अगर आप चाहते हैं
बाहर बिछाने शुरू करने के लिए डेटा के विभिन्न प्रकार के.
लेकिन आप याद कर सकते हैं कम से कम हम कोशिश की कि CS50 से
आप एक जीयूआई आधारित देने के लिए उपकरण [सुनाई]
अपने डेटाबेस का प्रबंधन करने के लिए.
यह phpMyAdmin बुलाया गया था.
इसलिए यह सिर्फ एक संयोग है कि यह PHP में लिखा गया था, वास्तव में,
लेकिन यह सिर्फ एक वेब आधारित था सामने एक डेटाबेस को खत्म होता है.
और विभिन्न टैब्स के माध्यम से और लिंक, आप शुरू हो सकता है
एक डेटाबेस विन्यस्त करने के लिए खुद के लिए.
लेकिन एक अच्छा उपकरण को शुरू करने के लिए एक छोटे से अधिक आराम मिलता है
भी है साथ कमांड लाइन ग्राहक.
तो, CS50 उपकरण का उपयोग अगर या वास्तव में किसी भी मैक्रो पीसी का उपयोग
कि एक कमांड लाइन MySQL है ग्राहक, आप भी सॉर्ट यह कर सकते हैं
इस तरह के पुराने स्कूल,.
एक तरफ MySQL परियोजना के रूप में कम से कम खुला स्रोत संस्करण
की यह अब के लिए MariaDB कहा जाता है आप पढ़ सकते हैं विभिन्न कारणों
विकिपीडिया पर लेकिन यह एक ही सॉफ्टवेयर है,
यह एक ही वाक्य रचना है और बहुत आगे है,
बहुत ज्यादा एक ही कोड बेस.
और इसलिए मैं इस पर जब हूँ मैं अब बातचीत कर सकते हैं का संकेत
अपने डेटाबेस के साथ और अधिक मैन्युअल रूप से.
बात में तो मामला, मुझे आगे चलते हैं
और सिर्फ ऊपर खुला एक टर्मिनल विंडो.
मैं CS50 का उपयोग किया हुआ उपकरण, लेकिन आप यह कर सकते हैं
सबसे अधिक किसी भी प्रणाली में पर आप का अधिकार मिल गया है, जो
सॉफ्टवेयर स्थापित.
और मैं mysql-u क्या करने जा रहा हूँ यूजर का नाम जॉन हार्वर्ड के लिए
इस विशेष प्रणाली पर,-P मैं टाइप करेंगे कि एक पासवर्ड के लिए
एक छोटे से अधिक में सुरक्षित मार से दर्ज करें.
अब मैं संकेत मिले हूँ.
मैं क्रिमसन टाइप करने के लिए जा रहा हूँ CS50 उपकरण में
और अब मैं अनिवार्य रूप से देखना एक ही स्क्रीन कि.
लेकिन आदेशों अब वहाँ हम टाइपिंग शुरू कर सकते हैं
जैसे डेटाबेस दिखाने के लिए, और कि मुझे यह सब दिखाने के लिए जा रहा है
मुझे लगता है कि डेटाबेस की पहले से ही सिस्टम में बनाया
बहुत ज्यादा एक ही सूची आप phpMyAdmin में देखना होगा.
अन्य लोगों की तरह का एक जोड़ा है जानकारी स्कीमा और परीक्षण,
जो आप के आसपास प्रहार अगर CS50 उपकरण, हम कुछ छिपाना
इन निचले स्तर तालिकाओं की
लेकिन वे किया गया है वहाँ यह सब समय.
MySQL वास्तव में कम स्तर पर है उपयोगकर्ता नाम की तरह गुण
और डेटाबेस के लिए पासवर्ड खुद नहीं, आपके आवेदन के लिए
आप हो सकता है कि यह की चोटी पर चल रहा है.
तो अग्रिम में, आज, मैं एक जोड़े डेटाबेस बनाया,
जिनमें से एक कहा जाता है courses50.
बाधाओं आप में से कुछ का इस्तेमाल किया है रहे हैं CS50 पाठ्यक्रम खरीदारी उपकरण,
के लिए एक बड़ा इंटरफेस है जो रजिस्ट्रार के पाठ्यक्रम सूची.
और यह वास्तव में एक अच्छा है कारण 'के बारे में बात करने के लिए डाटासेट,
एक, हम की तरह सभी कर रहे हैं पाठ्यक्रमों के साथ स्पष्ट रूप से परिचित
और प्रशिक्षकों और बैठक स्थानों और सभी प्रकार
साधारण चीजों की विश्वविद्यालय की,
लेकिन यह भी कुछ मिल गया है दिलचस्प अवसरों
डिजाइन के लिए.
इसलिए हम उपयोग हम लगा एक पाठ्यक्रम सूची की धारणा
और एक के रूप में एक शॉपिंग उपकरण उदाहरण सॉर्ट करने के लिए आज पूरे
की डिजाइन के कुछ फ्रेम हम करना है निर्णय.
तो चलो वहाँ शुरू करते हैं.
मैं वास्तव में चाहता था कि मान लीजिए सुपर सरलतम प्रतिनिधित्व करने के लिए
बेशक उपकरण खरीदारी.
और सरल दुनिया मैं कल्पना कर सकते हैं और एक है
कोर्स हैं, जिनमें और प्रशिक्षकों रहे हैं.
और के लिए मान लें चर्चा की खातिर
कि हर कोर्स कम से कम एक नाम है.
तो चलिए शुरू करते हैं चलो इस स्केच.
मैं phpMyAdmin का उपयोग करने के लिए जा रहा हूँ बस एक सुविधा के रूप में,
इसलिए हम बाहर टाइप करने के लिए नहीं है मैन्युअल रूप से प्रश्नों के सभी.
लेकिन यहाँ मैं में हूँ मेरी courses50 डेटाबेस.
इस के साथ अपरिचित हैं, तो यह हूँ आप गोता एक बार बहुत आसान हो
अपनी खुद की परियोजना में आप इसका इस्तेमाल करना चाहते हैं.
मैं बनाने के लिए जा रहा हूँ एक पाठ्यक्रम बुलाया तालिका
और मैं ही सोच सकते हैं एक क्षेत्र की
अभी के लिए, एक पाठ्यक्रम का नाम.
मैं आगे जाने के लिए जा रहा हूँ कहते हैं मुझे एक स्तंभ दे.
आपको याद के रूप में अब, आप मिल एक सा है कि एक इंटरफेस
इस तरह से.
और अन्य उल्टा स्पष्ट phpMyAdmin की है कि यह की तरह
आत्म - निर्देश के और है कि लटकता के माध्यम से, आप की तरह कर सकते हैं
किस अपने संभव देखना डिजाइन निर्णय कर रहे हैं.
तो मैं देने जा रहा हूँ हर कोर्स एक नाम.
इस स्तंभ का नाम है.
और कैसे अपने डेटा प्रकार के बारे में?
आप में से अधिकांश में पता होना चाहिए कम से कम इन डेटा प्रकार के कुछ
पूर्व के अनुभव से.
उचित है क्या कोर्स का नाम लिए?
शेरोन?
>> Varchar.
>> ठीक है, varchar जो चर चार है.
और क्या करता है कि अधिक तकनीकी रूप से मतलब है?
[अश्रव्य टिप्पणी]
ठीक है. तो यह एक स्ट्रिंग है.
और var पहलू की यह क्या तात्पर्य है?
चर. लेकिन क्या कि मतलब है?
हाँ?
[अश्रव्य टिप्पणी]
बिल्कुल सही. तो यह एक चर वर्णों की संख्या
स्ट्रिंग में कुछ अधिकतम करने के लिए.
यहाँ तो हमारा पहला है डिजाइन निर्णय.
हम वास्तव में फैसला करना है कितने बाइट्स ज़्यादा से ज़्यादा
ऐसे प्रत्येक स्ट्रिंग के लिए आवंटित करने के लिए.
सामान्य शब्दों में, आप करना चाहते हैं एक तरह से, यह बहुत छोटा नहीं बना
यह बहुत बड़ा नहीं बना 'स्पष्ट कारण
बहुत छोटा है अगर आप बस रहे हैं डेटा को काटे शुरू करने जा रहा
और आपको जानकारी खो देंगे.
यह बहुत बड़ा है, तो आप सिर्फ रहे हैं एक तरह से डेटाबेस कह रही
उम्मीद और करने के लिए अधिक डेटा के लिए अनुकूलन
यह वास्तव में कभी भी मिल सकती है.
तो एक उचित लग रहा है क्या है एक कोर्स के नाम के लिए नंबर?
60? ठीक है, तो 60.
यह बहुत उचित लगता है
के रूप में लंबे समय है कि वहाँ कोई उस के लिए अपवाद.
कोई सच नहीं है कठिन, नियम.
के लिए ईमानदारी से, ऐतिहासिक कारणों से एक बहुत
के लोगों को 255 का चयन करेंगे 'प्रकार का था कि साल के लिए कारण
8 का उपयोग कर डिफ़ॉल्ट अधिकतम की बैट - अपने काउंटर के रूप में 8 बिट.
मैं होता अधिक [सुनाई] 2 की शक्तियों का उपयोग हो सकता है
लेकिन यह एक तरह से अप्रासंगिक है.
इसलिए हम 60 के साथ जा सकते हैं.
यही उचित इतने लंबे समय लगता है
हम अंत में यह अफसोस नहीं है के रूप में 'कि एक ऊपरी बाध्य है कारण.
अब, विपरीत लगता है निर्णय लिया गया था,
चर नहीं घर का काम है, लेकिन सिर्फ चार क्षेत्र.
तो सी और सी + +, चार के विपरीत एक चार मतलब यह नहीं है
और डेटाबेस है कि आम तौर पर एक निश्चित संख्या का मतलब
एक स्ट्रिंग में वर्णों की.
क्या उल्टा और / या होगा मेरे 60 को चुनने के नकारात्मक पक्ष
एक चार क्षेत्र के लिए, बजाय varchar की?
यह वास्तव में पहली तरह है निर्णय के लिए आपको करना होगा
बाहर [ध्वन्यात्मक] निरीक्षण जब के अपने सहयोगियों के साथ परियोजना.
हाँ, शेरोन फिर से.
[अश्रव्य टिप्पणी]
अच्छा. इसलिए नाम कम है अगर
60 से अधिक है तो आप बर्बाद कर रहे हैं कि डेल्टा है जो कुछ भी
60 और के बीच वास्तविक लंबाई.
तो यह है कि बस, बेकार लगता है आप जरूरत से ज्यादा बाइट्स.
लेकिन क्यों यह मौजूद है?
निश्चित रूप से कुछ उल्टा नहीं है.
हाँ?
[अश्रव्य टिप्पणी]
ज़रूर. तो कभी कभी आप निश्चित संख्या पता कर सकते हैं
10 अंकों की तरह वर्णों की उदाहरण के लिए एक फोन नंबर के लिए.
लेकिन जो क्यों की तरह, परवाह करता है अभी भी 11 कहना नहीं
या क्यों नहीं कह 60 वैसे भी varchar के साथ?
क्या लाभ हम मिलता है जानने और डिजाइन द्वारा
एक निश्चित संख्या के लिए पात्रों की?
[अश्रव्य टिप्पणी]
आप सही रास्ते पर हैं.
तो यह अनुकूलन है लेकिन हाँ - यह वास्तव में है?
[अश्रव्य टिप्पणी]
ठीक है. अच्छा. चलो फोकस कि पिछले भाग पर.
तो अनुक्रमण.
तुम तो अगर यह पता चला है पहले से पता है कि सभी
अपने खेतों की जा रहे हैं 60 अक्षरों का होना,
आप वास्तव में इस के बारे में सोच सकते हैं एक्सेल डेटाबेस में स्तंभ
, बहुत सीधे होने के रूप में जायज छोड़ा
और सही उचित किनारों
क्योंकि हर स्तंभ 60 वर्णों विस्तृत है.
इसका मतलब है कि इस स्ट्रिंग 60 वर्ण दूर है
इस स्ट्रिंग से, 60 दूर यह एक से अक्षर
और यह एक और इस एक.
जब आप तो बस पीछे की तरह सी सीखा, आप यादृच्छिक उपयोग किया था
सरणियों की दुनिया में, यहां एक ही विचार है.
अपने स्तंभ प्रतिनिधित्व किया है केवल लंबाई निर्धारित वर्ण का उपयोग कर,
आप प्रभावी रूप से सूचकांक कर सकते हैं बेतरतीब ढंग से करने के लिए 60 या 120 या 180
और आप पर व्यक्तिगत रूप से प्राप्त कर सकते हैं ज्यादा जल्दी तार.
फिर अगर इसके बजाय, अपने कॉलम था इतनी बात करने के लिए एक सीधे बाएँ किनारे
लेकिन एक बहुत बीहड़ सही कॉलम को बढ़त
आप हो सकता है क्योंकि 10 अक्षर है,
15 अक्षर, 5 अक्षर.
तो यह भी एक tradeoff है.
और कभी कभी ही परीक्षण और त्रुटि के माध्यम से
और प्रयोग आप समझ सकते हैं
क्या वास्तव में सही कॉल बाहर है लेकिन इन तरह के होते हैं
सवालों की कि चलना चाहिए
अपने मन और / या के माध्यम से टेबल जब यह समय आता है
अपने डेटाबेस डिजाइन करने के लिए.
इसलिए, यह जरूरी सही नहीं जवाब लेकिन तुम चाहिए
कम से कम कुछ है मन में वाक्य या दो
बैकअप के लिए जो कुछ भी आप कर निर्णय.
ठीक है.
तो चलो स्क्रॉल रखना यहाँ संकेतों का में
कि phpMyAdmin के यूआई हैं.
तो, के लिए डिफ़ॉल्ट मान एक नाम, मैं निर्दिष्ट करना चाहिए
यह किया जाना चाहिए कि नल का कोई डिफ़ॉल्ट मान?
आप क्या सोचते हैं?
एक कोर्स एक अशक्त नाम हो सकता है?
बस सही, अजीब लगता है?
मैं किसी की सोच भी नहीं सकते हार्वर्ड में बेनाम पाठ्यक्रमों.
और शायद कुछ नहीं है अस्पष्ट कोने मामला
एक कोर्स एक नंबर दिया जाता है, जहां
और प्रोफेसर नहीं है इसके लिए एक नाम चुना लेकिन -
मैं उस के साथ बिल्ली के लिए, मेरा मतलब है,
तरह के नहीं भी करते हैं कि समर्थन कर परेशान.
मैं हित में कहेंगे एक अच्छा साफ डेटाबेस की,
के निर्दिष्ट करते हैं कि आप नहीं कर सकते हैं कि नल का कोई डिफ़ॉल्ट मान है.
वैकल्पिक रूप से, हम कर सकते थे शीर्षकहीन कोर्स की तरह कुछ
साथ विपरीत नहीं है जो मैक ओएस और Windows करना
जब आप कोई उदाहरण के लिए फ़ोल्डर,
लेकिन लगता है कि वहाँ बनाता है एक छोटे से अधिक भावना
मानव कुछ देख सकें.
हम एक के बारे में बात कर रहे हैं पीठ के अंत डेटाबेस संभवतः
पाठ्यक्रम सूची के लिए.
इसलिए मैं वास्तव में नहीं भी करते हैं यह देने का विचार पसंद
शीर्षकहीन कोर्स के नाम में
कि वास्तव में नहीं है, क्योंकि किसी को भी मदद के लिए जा रहा.
तो चलो कोई नहीं के रूप में इस छोड़ दें, जो आप सम्मिलित करते हैं इसका मतलब है कि
इस डेटाबेस में, आपके पास हर कोर्स एक नाम देने के लिए
एक छोटे से लगता है जो मेरे लिए क्लीनर.
ठीक है.
तो, आगे कोलेशन स्क्रॉल.
इस बस के साथ नहीं है चरित्र सेट और whatnot
क्या तुमने कभी देखा है स्विडिश का उल्लेख
phpMyAdmin में है कि 'लोगों का कारण
जो phpMyAdmin लिखा स्वीडिश थे.
कि PHP है या यह MySQL है?
दो में से एक, मैं बेतकल्लुफ़ भूल गया.
लेकिन यह ऐतिहासिक कारणों के लिए है
लेकिन आप हर व्यक्त कर सकते हैं अंग्रेजी में चरित्र
आप स्विडिश साथ सकता है कि इसलिए यह काफी हद तक एक गैर मुद्दा है.
CS50 उपकरण यद्यपि है इस्तेमाल किया - UTF-8 के रूप में विन्यस्त,
इसलिए कि आम तौर पर होना चाहिए आप के लिए पॉप नहीं.
गुण.
तो इनमें से कोई भी कर रहे हैं यहाँ वास्तव में प्रासंगिक.
मैं द्विआधारी, अहस्ताक्षरित, देखना अहस्ताक्षरित zerofill,
और अद्यतन मौजूदा टाइमस्टैम्प पर.
यही कारण है कि क्षेत्र ही लागू होता है कुछ सांख्यिक फ़ील्ड के लिए
या कुछ समय के खेतों.
इसलिए हम पर छोड़ देंगे कि पूरी तरह से.
अशक्त. इस क्षेत्र अशक्त हो सकता है?
तो कोई. हम पहले से ही है बातचीत का है कि तरह.
इसलिए हम नहीं चाहते एक डिफ़ॉल्ट मूल्य.
हम यह शून्य होने के लिए नहीं करना चाहती.
क्या सूचकांक के बारे में?
यहाँ चार विकल्प नहीं है.
हम निर्दिष्ट अगर इसका क्या मतलब है
इस पंक्ति जा रहा है कि एक प्राथमिक कुंजी हो सकता है?
वापस CS50 के लिए या सोच आप इसे ले लिया है CS165.
[अश्रव्य टिप्पणी]
बिल्कुल सही. तो एक प्राथमिक कुंजी परिभाषा के अनुसार क्षेत्र है
जो विशिष्ट पहचान करता है इस तालिका में प्रत्येक पंक्ति.
और आप क्या करना है उस पर भरोसा कर सकते हैं कि अद्वितीय पहचान.
तो, इसका मतलब क्या है तो सिर्फ अद्वितीय हो सकता है?
खैर, की तरह इन दो प्रकार का है
के निहितार्थ के तहत हुड के नीचे.
लेकिन आम तौर पर, प्राथमिक कुंजी है आप कर एक अनुबंध के आधार पर क्रमबद्ध
डेटाबेस बात के साथ.
मैं प्रश्नों करते हैं एक कोर्स की तलाश में,
मैं इस का उपयोग करने के लिए जा रहा हूँ विशेष क्षेत्र.
और हम करने के लिए वापस आ गया हूँ हम क्यों हो रही दो
यहां इस तरह के विकल्प हैं, प्राथमिक या अद्वितीय.
अद्वितीय सिर्फ यह कहते हैं क्षेत्र अनूठा होने जा रहा है
लेकिन मैं वास्तव में कोई नहीं कर रहा हूँ यहाँ मौखिक प्रतिबद्धता की तरह
उस क्षेत्र का उपयोग करने के लिए मेरी खोज करने के लिए
हम करेंगे कारणों के लिए बस एक पल में देखते हैं.
हम बजाय सूचकांक निर्दिष्ट करते हैं, क्या यह निर्दिष्ट करने के लिए मतलब है
एक क्षेत्र पर एक सूचकांक है कि?
हाँ?
[अश्रव्य टिप्पणी]
बिल्कुल सही. यह हो गया है क्वेरी के लिए अनुकूलित.
तो आप - डाटाबेस सर्वर, Oracle, MySQL, जो भी हो,
आम तौर पर अपने जादू काम करेंगे पर्दे के पीछे क्लिक करने के बाद
तब उस विकल्प को क्लिक करें सहेजें और यह निर्माण होगा
ऊपर आम तौर पर एक वृक्ष संरचना, बी पेड़ों तुम्हें देखा है अगर
या है जो बंद सुना एक बहुत कम दिखने पेड़
कि तुम बहुत अच्छा देता है लघुगणक गुण
आंकड़ों पर खोज करते समय.
आप एक सूचकांक निर्दिष्ट नहीं करते हैं एक क्षेत्र पर, क्या हो रहा है
चल रहे हो खोज का समय
एक मनमाना लिए [ध्वन्यात्मक] पाठ्यक्रम का नाम?
वह क्या है?
[अश्रव्य टिप्पणी]
ओह, [सुनाई], रैखिक, सही?
यह कोई अनुकूलन अगर वहाँ डेटाबेस के लिए afforded
और तुम सोचा नहीं है डेटाबेस किस तरह
उम्मीद करने के लिए डेटा की.
अच्छा तुम कर सकते चेक है आप देख रहे हैं जब सब कुछ
कुछ मूल्य के लिए, विशेष रूप से अगर वहाँ सका
वास्तव में डुप्लिकेट हो.
पूर्ण पाठ इस बीच, हम करेंगे अब के लिए हमारे हाथ की लहर.
लेकिन आम तौर पर, यह है एक आपको अनुमति देता है कि सूचकांक के प्रकार
कीवर्ड के लिए अनुकूलन करने के लिए एक क्षेत्र पर खोज करता है.
तो यह हो सकता है एक अच्छे उम्मीदवार
के लिए एक पाठ्यक्रम विवरण की तरह आप एक जोड़ी हो सकता है, जहां
पैराग्राफ और तुम हो सकता है की substring मैचों में करना चाहते हैं.
पूर्ण पाठ आम तौर पर देना होगा आप काफी कुशलता से करते हैं.
ऐ, यह एक भयानक तरह है स्पष्टीकरण की लेकिन हम मंडराना
इस पर आप देखेंगे ऑटो वेतन वृद्धि.
लागू नहीं दोनों यहाँ लेकिन ऑटो वेतन वृद्धि उपयोगी है
एक पूर्णांक के क्षेत्र की तरह है क्योंकि के लिए डेटाबेस ख्याल रखना होगा
प्लस plusing की प्रक्रिया की यह आपको एक डालने करने के लिए हर समय.
तो यह है कि भले ही दो लोग सचमुच सबमिट क्लिक करें
एक ही समय में और कोशिश किसी तरह एक पंक्ति बनाने के लिए
डेटाबेस में से एक उन्हें, संख्या मैं मिलेगा
अन्य मिलेगा संख्या मैं प्लस 1.
आपको चिंता करने की जरूरत नहीं है
के बारे में दो नंबर की जा रही है अगर तुम थे हूबहू सौंपा
कोड में यह अपने आप करना.
ठीक है.
तो मैं एक तरह से पसंद है, जहां हम होना एक नाम मिल गया है.
तो चलो सहेजें क्लिक करते हैं.
यह एक अच्छा डिजाइन है एक डेटाबेस तालिका के लिए?
और एक अलग रूप में अगर एसक्यूएल पर जंग खाए या आप प्रकार
की बस हमेशा एक अंधा बारी क्या हो रहा था के लिए आंख,
मैं टाइप कर सकते ठीक है कि -
उस पर उन तीन लाइनों काले और सफेद शीघ्र
आदेश पंक्ति में ग्राहक या मैं कर सकता था
कोड में प्रोग्राम कि.
इतना सब phpMyAdmin के लिए कर रही है मुझे, सिर्फ मेरे प्रयास की बचत है
कभी कभी को याद करने का वाक्यविन्यास और के लिए बाहर टाइपिंग
थकाऊ आदेशों की तरह.
ठीक है.
तो इस तरह महसूस नहीं करता सर्वश्रेष्ठ डिजाइन, एक एक क्षेत्र तालिका.
अब हम कर सकते थे प्रोफेसरों की तरह बातें
और स्थानों और विवरण.
लेकिन फिर भी, केवल नाम का उपयोग
पाठ्यक्रमों की पहचान करने के लिए आदर्श महसूस नहीं करता है.
आम तौर पर क्या है हम अतीत में किया
आप डेटाबेस का उपयोग किया है विशिष्ट रूप से पंक्तियों के लिए?
आम तौर पर varchars का उपयोग नहीं.
हाँ?
[अश्रव्य टिप्पणी]
हाँ. तो आम तौर पर एक पाठ्यक्रम आईडी.
तो, सबसे आम यहाँ दृष्टिकोण विशेष रूप से
एक रूपरेखा का उपयोग करते समय बस वास्तव में है
कोई पूर्णांक की तरह एक नंबर का उपयोग करने के लिए.
तो मुझे आगे जाना है और यह करते हैं.
और हम कुछ ऐसा कर सकते हैं मैं ज़ूम तरीके, लेकिन नोटिस
यहाँ तल पर में.
मैं एक जोड़ने कहने जा रहा हूँ तालिका के अंत में कॉलम,
आम तौर पर सिर्फ दृश्य के लिए सुविधा आप ID को डाल
तालिका की शुरुआत में यह कोई असली है, भले ही
कार्यात्मक प्रभाव.
तो मैं कहने जा रहा हूँ एक स्तंभ जोड़
तालिका की शुरुआत में.
मैं जाता हूँ, कि क्लिक करने के लिए जा रहा हूँ यहाँ मुझे इस यूआई वापस देता है.
चलो इस आईडी फोन करते हैं.
हम हमारे पास करने के लिए जा रहे हैं तो कोई अधिक 4 लाख कोर्स किया
एक पूर्णांक के क्षेत्र ठीक है.
हम भी यह नीचे सिकुड़ सकता है
लेकिन अंतरिक्ष सस्ता है तो जो वास्तव में परवाह नहीं है.
लेकिन, हम कोशिश कर रहे हैं अब फेसबुक लिखना
एक बुरी बात नहीं हो सकता है बड़ा ints पूर्वानुमान करने के लिए
हमें 64 बिट ints देना होगा
लेकिन तब तुम सचमुच हो बिट्स की संख्या दोगुनी
आप उपयोग कर रहे हैं, इतनी मामूली tradeoff
लेकिन कुछ विचार करने के लिए.
अब, यह एक भ्रामक है विरासत बात.
आप याद कर सकते हैं MySQL का उपयोग कर से
आप एक पूर्णांक की घोषणा है कि किसी भी समय क्षेत्र आप अक्सर एक संख्या देखेंगे
10 नंबर की तरह यह करने के लिए अगले.
इसके साथ कुछ नहीं करना है संख्या का आकार
या बिट्स की संख्या.
उस नंबर के साथ क्या करना है उपयोग किया जाता है कि पात्रों की
प्रदर्शन नेत्रहीन कि INT क्षेत्र
एक टर्मिनल विंडो का उपयोग करते समय.
तो हम एक पल में देख सकते हैं.
तो, गुमराह नहीं कर सकता संख्या टाइप करके
वहाँ यह है कि भले ही में प्रभावी रूप से हमें पूछ
यहाँ एक के लिए.
यहाँ पर, मैं जा रहा हूँ आगे बढ़ो और अहस्ताक्षरित कहना.
कचरे के लिए कोई कारण नहीं है हमारे नकारात्मक संख्या के सभी
बाद डेटाबेस आम तौर पर हो रहा है
सकारात्मक कल्पना करने के लिए मानों या अशक्त.
आईडी निश्चित रूप से अशक्त नहीं होना चाहिए.
और आप के बारे में क्या सोचते हैं इस आईडी क्षेत्र के सूचकांक में?
चलो यह प्राथमिक बनाते हैं.
तो, क्या हैं, हालांकि, जैसे मैं कर सकता हूँ केवल एक CS164 कोर्स के बारे में सोच
हार्वर्ड में और केवल एक ही हार्वर्ड में CS50 कोर्स
और वह सुंदर है इतना सच समग्र
अपवाद हो सकता है कि वहाँ [सुनाई] सेमेस्टरों दोनों
या ऐसा कुछ अजीब.
लेकिन और अधिक मौलिक, यही कारण है कि यह बेहतर है
करने के लिए एक संख्यात्मक अभिन्न आईडी का उपयोग करने के लिए अनोखे पाठ्यक्रमों की पहचान नहीं बल्कि
सिर्फ एक अद्वितीय स्ट्रिंग से?
हाँ?
[अश्रव्य टिप्पणी]
ठीक है, दिलचस्प.
हम की तरह था तो अगर पाठ्यक्रम पार सूचीबद्ध.
तो यह है कि एक अच्छा उदाहरण है.
मैं मैं होगा यकीन नहीं कि हालांकि हल
उन्हें एक ही देकर आईडी नंबर कि अगर
तुम उस के साथ जा रहे थे जहां.
नहीं? ठीक है. लेकिन निश्चित रूप से एक विचार करने के लिए कोने मामला.
की तरह है, तो - हम किसी तरह की जरूरत
के संभावित aliasing.
[अश्रव्य टिप्पणी]
ज़रूर.
[अश्रव्य टिप्पणी]
यह एक अच्छा उदाहरण है.
नाम के साथ बदल सकता है समय, पूरी तरह से उचित है.
और क्या?
[अश्रव्य टिप्पणी]
क्षमा करें, फिर कहना.
[अश्रव्य टिप्पणी]
हाँ, बिल्कुल.
तो सच में, कि है असली अग्निपरीक्षा है
एक 32 बिट INT उपयोग कर रहा है शायद तेजी से होने जा रहा
कुछ चर से लंबाई चार क्षेत्र.
पहले मामले, सकते में सचमुच, एक रजिस्टर में फिट
ज्यादा उल्लेख नहीं छोटे स्मृति पदचिह्न.
उत्तरार्द्ध मामले में, आप जा रहे हैं सहारा करना है [ध्वन्यात्मक]
स्ट्रिंग तुलना करने के लिए जो स्वयं में रैखिक साथ
के आकार में संभावित स्ट्रिंग.
इसलिए, यह सिर्फ एक अच्छा है अनुकूलन,
और विशेष रूप से यह हो रहा है
हमें कहा जाता है कि क्या करना है यह बताने के लिए और अधिक कुशलता से जुड़ती
बस एक पल में.
तो चलो करते हैं.
हम निर्दिष्ट करता हूँ कि इस प्राथमिक है
मैं विशेष रूप से करते हैं क्योंकि परवाह करने या सोचने के लिए चाहते हैं
क्या संख्या के बारे में एक पाठ्यक्रम की है.
उन पर ले लो जो वे चाहते हैं मानों.
मैं ऑटो वेतन वृद्धि कहने जा रहा हूँ इसलिए मुझे लगता है कि विस्तार आउटसोर्स कर सकता है.
आप हो सकता है एक तरफ के रूप में पता है कि हार्वर्ड
कम से कम अद्वितीय है पाठ्यक्रमों के लिए संख्या.
मैं कोई याद है इस पाठ्यक्रम में क्या है.
मुझे पता है CS50 की कि सूची संख्या, 4949 है
पूरी तरह से मनमाना.
लेकिन अजीब नहीं है उस में कोने मामलों और भी
registrarial डंप में बेशक सूची डेटा,
पुराने कभी कभी पाठ्यक्रमों, पाठ्यक्रम 4 की तरह एक नंबर है.
लेकिन तकनीकी रूप से यह है कि क्षेत्र एक चार क्षेत्र है
कि बस 0004 के साथ शुरू होता है.
तो यहाँ भी, आप होना जरूरी भेद के बारे में सावधान
एक तरह चीजों के बीच पाठ्यक्रम सूची संख्या
कुछ मानव हो सकता है जो निश्चित लंबाई, 0004 की धारणा,
और आप की दुकान नहीं होनी चाहिए कि एक ints में उदाहरण के लिए.
क्षेत्र के उस तरह होना चाहिए कहीं संग्रहीत किया जा.
तो हार्वर्ड में, हम थे वास्तव में एक कोर्स कर रही है
खरीदारी उपकरण, यह है शायद पर्याप्त नहीं
संख्या पाठ्यक्रमों के लिए सिर्फ 1, 2, 3, 4 के साथ.
हम शायद किया जा रहे हैं
एक अन्य क्षेत्र है सूची संख्या कहा जाता है,
वह भी माना जाता है आधार अद्वितीय होना
यहां मानव सम्मेलनों पर लेकिन यह सबसे अच्छा विकल्प नहीं है
एक अद्वितीय पहचानकर्ता के लिए क्योंकि यह चर लंबाई हो सकता है.
यह चार नहीं हो सकता घर का काम, यह पांच हो सकता है.
वास्तव में, मुझे लगता है कि कुछ साल पहले वे चाल
वहाँ पाँच 'अक्षर कारण करने के लिए 999 से अधिक पाठ्यक्रमों थे
में कुल या कुछ और की तरह कि, या 9,999 पाठ्यक्रमों.
तो, एक उदाहरण है कि हो सकता है क्षेत्र के प्राथमिक नहीं है जहां
लेकिन यह अद्वितीय होना चाहिए.
और ईमेल पता एक और एक है.
आप यह अद्वितीय होना चाहते हो सकता है
लेकिन जरूरी नहीं अपनी प्राथमिक कुंजी.
ठीक है.
तो मुझे एक और बाहर धमाका करते हैं यह एक की तुलना में बहुत तेजी से मेज.
इसलिए मैं इस कॉल करने के लिए जा रहा हूँ एक प्रशिक्षक और मैं जा रहा हूँ
यह एक कुल देने के लिए दो के स्तंभों की संख्या.
मैं जानने के लिए जा रहा हूँ मेरे पिछली बार से सबक.
मैं फोन करने के लिए जा रहा हूँ पहले कॉलम आईडी.
मैं फोन करने के लिए जा रहा हूँ दूसरे स्तंभ का नाम.
मैं भी varchar क्या करने जा रहा हूँ.
मैं कोई मान जा रहा हूँ प्रोफेसर अब एक नाम है
60 वर्णों से अधिक है, हालांकि अब यह यह धक्का किया जा सकता है
कुछ देर के नाम, विशेष के साथ मध्य नाम के साथ लोगों को.
यह आज के लिए ठीक है.
तो चलो यहाँ पर स्क्रॉल करते हैं.
चलो फिर से इस अहस्ताक्षरित कर दूं.
चलो इस प्राथमिक बनाते हैं.
और हम नकली नामों की अनुमति देंगे
मामले में दो जॉन है स्मिथ की तरह या कुछ और.
और अब हम दो टेबल है.
तो अब, यह भी जन्म देती है मैं संबद्ध कैसे सवाल
कोर्स के साथ प्रशिक्षक में?
मैं मैं की तरह की तरह लग रहा है अपने आप से आगे मिला
क्योंकि अगर एक प्रशिक्षक एक पाठ्यक्रम सिखाता है,
मेरी पहली वृत्ति होगा वास्तव में वापस जाने के लिए हो
पाठ्यक्रम, यह महसूस करने के लिए एक अच्छा विचार नहीं था.
मुझे वास्तव में एक स्तंभ जोड़ दें तालिका के अंत में,
जाएँ क्लिक करें, और मैं हूँ इस प्रशिक्षक कहते हैं.
और मैं इस varchar कर दूँगा और मैं यह 60 बना देंगे.
और शायद मैं अब अशक्त इसे छोड़ देंगे
मामले में बिल्कुल नहीं है प्रशिक्षक में अहस्ताक्षरित गया
कभी कभी से पहले जो होता है अवधि सहेजें शुरू होता है और क्लिक करें.
इन डिजाइनों में से कौन सा आप पसंद करते हैं?
हम हैं जहां पहले एक एक अलग प्रशिक्षक की तालिका
या दूसरी जहां हम बस कोर्स करने के लिए एक क्षेत्र को जोड़ने?
तो यह एक बारीकी कड़ी है कोर्स के साथ प्रशिक्षक.
[अश्रव्य टिप्पणी]
ठीक है. अच्छा. लेकिन मुझे वापस धक्का.
यह जैसे मैं कर सकता हूँ बस इतना आसान है सिर्फ व्यक्ति के नाम में टाइप करें
इस तालिका में, निश्चित रूप से की तरह कि कुछ मूल्य है या -?
[अश्रव्य टिप्पणी]
ठीक है.
खैर, मुझे यहाँ मुश्किल हो.
तो मुझे कहने दो कि इस कोर्स CS51 है
और मैं यह सिखाया है पता दो लोगों ने इस वर्ष.
तो, हेनरी Leitner और जेसी टव लेकिन -
तो मैं सिर्फ एक अल्पविराम डाल देता हूँ दो के बीच, सही.
मैं वास्तव में अच्छा कर रहा हूँ पहल साल से सीएसवी.
[अश्रव्य टिप्पणी]
वास्तव में, सही है.
जैसे ही आप उपाय के रूप में इस तरह से कुछ करने के लिए,
जो महसूस हो सकता है उचित और आप महसूस कर सकते हैं
की तरह इस तरह के स्मार्ट है.
मैं एक तरह से एक उधार रहा हूँ अच्छी तरह से काम करने के लिए है जो विचार,
एक नए विचार के उधार लेने और एक तरह से उन्हें गठबंधन.
आप की तरह पूरी तरह से हराने रहे डेटाबेस के उपयोग की बात
पहली जगह 'कारण में अगर मूल्यों में से एक
का उपयोग करने का यह तेजी से खोजों है क्योंकि विभिन्न अनुक्रमित
और टेबल कि कर सकते हैं आप के लिए बनाया जा
डेटाबेस इंजन अपने आप में.
अब, आप खोज करना चाहते हैं पाठ्यक्रम के सभी के लिए
जेसी सिखाता है कि, अब आपके पास सब पर मिलान substring है करने के लिए
प्रशिक्षक क्षेत्रों की,
जो प्रभावी रूप से रेखीय का मतलब आपके पास 'कारण फिर से खोज
इस मनमाने ढंग से सेट को खोजने के लिए तीन अक्षर कहीं भी की
पहले प्रशिक्षक क्षेत्र में
शायद पीछा भीतर एक अल्पविराम से.
तो यह निश्चित रूप से शुभ नहीं है.
तो मुझे वापस मेज पर चलते हैं.
मेरे लिए आगे चलते हैं पाठ्यक्रम, कि पूर्ववत.
मैं बस जाने के लिए जा रहा हूँ आगे और उस मैदान छोड़.
और अगर तुम चाहते हो मैन्युअल रूप से ऐसा करते हैं,
वाक्यविन्यास परिवर्तन तालिका है पाठ्यक्रम प्रशिक्षक ड्रॉप.
तो चलो आगे चलते हैं और उस के लिए हाँ कहते हैं.
और यह पहले विचार करने के लिए वापस जाओ
मैं एक अलग है, जहां प्रशिक्षकों के लिए मेज.
लेकिन अब यह एक छोटे से लगता है जैसे मैं एक पाठ्यक्रम डाल सकते हैं
पाठ्यक्रम की तालिका में और प्रशिक्षक
प्रशिक्षक की तालिका में लेकिन मैं किसी तरह दो लिंक करने की जरूरत है.
और आप कैसे होगा हम ऐसा प्रस्ताव?
[अश्रव्य टिप्पणी]
अच्छा. तो चलो करते हैं.
और तुम इस कह सकते हैं सिद्धांत में कुछ भी तालिका.
मैं जान - बूझकर करने के लिए जा रहा हूँ क्या एक बहुत इसे कहते हैं
चौखटे का होगा इसे कहते हैं, उन के बीच में,
आप एक बिट में देखेंगे Laravel.
मैं निश्चित रूप से यह कॉल करने के लिए जा रहा हूँ प्रशिक्षक को रेखांकित.
इस में एकवचन का प्रयोग शब्दों में से प्रत्येक के लिए मामले
और सब कम मामले फिर से, और भी साथ -
तब वर्णानुक्रम बाएँ से सही करने के लिए हल.
यह पूरी तरह से मनमाना लेकिन है यह एक सम्मेलन हो जाता है
इन चौखटे के एक बहुत में अन्य भाषाओं में PHP में.
मैं में कितने कॉलम की जरूरत है यह क्या हम एक तालिका में शामिल होने के कॉल,
दो अन्य शामिल होने के लिए एक साथ टेबल?
तीन स्तंभों?
जो एक - वे क्या होगा?
[अश्रव्य टिप्पणी]
ठीक है. अच्छा. यह काम करता है.
और हम तकनीकी रूप से कर सकता है यहाँ एक कोने लेकिन एक बहुत कटौती
विशेष रूप से व्यवस्थाएं की अभी भी इन पंक्तियों को देना होगा
अद्वितीय आईडी भले ही शब्दार्थ पंक्ति
हम वास्तव में देखभाल के बारे में या कि हम वास्तव में परवाह है कि कॉलम
के बारे में के बाद के दो हैं तुम क्या कहा, बेशक आईडी
और प्रशिक्षक आईडी.
तो चलो यह करते हैं.
मैं इस पंक्ति सिर्फ आईडी फोन करता हूँ हम पहले किया था बस की तरह.
लेकिन मैं जा रहा हूँ यह एक पाठ्यक्रम आईडी फोन करने के लिए.
मैं जा रहा हूँ यह एक प्रशिक्षक आईडी कहते हैं.
और मैं जा रहा हूँ कि सभी निर्दिष्ट
उनमें से अहस्ताक्षरित हैं 'मैं चाहता हूँ कारण
अपने 4 अधिकतम करने के लिए अरब INT रेंज.
उनमें से कोई भी अशक्त होना चाहिए.
मैं निर्दिष्ट करने के लिए जा रहा हूँ कि आईडी अभी भी प्राथमिक होना चाहिए.
और फिर, यह है सिर्फ एक सम्मेलन,
चौखटे के एक बहुत आप सॉर्ट नहीं है, भले ही
के मौलिक एक की जरूरत पंक्ति के लिए अद्वितीय पहचानकर्ता,
यह इसके लिए सुविधाजनक है पता चला है कोड, जा रहा है कि एसक्यूएल
स्वतः ही हमारे लिए उत्पन्न.
इसलिए मैं प्राथमिक रूप है कि छोड़ देंगे.
लेकिन अब, मैं एक तरह से एक डिजाइन निर्णय है,
पाठ्यक्रम आईडी और प्रशिक्षक आईडी.
क्या अनुक्रमित यदि कोई हो वे मिलना चाहिए?
मैं कोई अनुक्रमित छोड़ देंगे, तो निहितार्थ क्या है?
एक निहितार्थ क्या है?
पहले के रूप में प्रदर्शन, सही?
कोई सूचकांक नहीं है, तो आप कर सकते हैं सबसे अच्छी तरह है
की [सुनाई] के माध्यम से नंबर की तलाश पूरी बात.
इसलिए कि स्मार्ट नहीं लगता.
यह प्राथमिक होना चाहिए?
तो क्यों नहीं?
क्यों नहीं प्राथमिक?
[अश्रव्य टिप्पणी]
बिल्कुल सही. इसलिए हम रोल बाहर [ध्वन्यात्मक] प्राथमिक.
हम पहले से ही है कि चुना है.
इसलिए, यह अद्वितीय होना चाहिए?
[अश्रव्य टिप्पणी]
अच्छा. तो, अगर आप मान कोर्स के प्रति एक प्रशिक्षक,
पूरी तरह से ठीक है.
और कहा कि निश्चित रूप से है आम का मामला
लेकिन हम पहले से ही एक बंद रखा शायद परिचित उदाहरण.
CS51 दो प्रशिक्षकों मिला तो हम एक तरह से हो
अब उस मामले में खराब कर दिया है.
हम अनुमति नहीं हैं केवल एक प्रशिक्षक,
हम वास्तव में एक तरह से कर सकता है कुल मिलाकर तालिका में शामिल होने के साथ
पहले दृष्टिकोण के लिए वापस जाओ
और उस व्यक्ति का नाम नहीं डाला शायद लेकिन प्रशिक्षक आईडी.
तुम बस के रूप में हर कोर्स जानते हैं एक प्रशिक्षक तुम हो सकता है अभी
एक स्तंभ.
लेकिन परिवर्तनशीलता है क्या मुसीबत में हमें मिला.
ठीक है.
इसलिए, यह अद्वितीय होना चाहिए?
सं पूर्ण पाठ नहीं करता लागू लग रहा है.
उस से पहले जैसा कि हमने कहा
जैसे substring के लिए विवरण के लिए मिलान.
तो क्या सूचकांक के बारे में?
खैर, सूचकांक शायद है हमारी सर्वश्रेष्ठ उम्मीदवार
MySQL अनुकूलन, जो बताता है इस पर खोजों के लिए
या मुझे विस्तार से बताएं, खोजों के लिए अनुकूलन या मिलती है
हम सिर्फ एक पल में देखेंगे
वे एक कर रहे हैं तो थोड़ा और अधिक कुशल
विशुद्ध रूप से रेखीय कुछ से.
मैं ऑटो के लिए चाहते हैं इस क्षेत्र वेतन वृद्धि?
इतना नहीं, क्योंकि सच माता पिता के तत्व मौजूद है
पाठ्यक्रम 'तालिका में.
यह है कि जहां प्लस मिल रहा है,
प्लस यह वास्तव में जब डाला.
यहां, यह सब हो रहा है मैन्युअल रूप से सम्मिलित करने के लिए
हमें संभवतः कोड में से.
तो चलो बस को निर्दिष्ट करते हैं जाहिर है कि आईडी दोनों
और प्रशिक्षक आईडी अनुक्रमण करता है.
अब हम आगे जाना है और बचा लेंगे.
और अब, सिर्फ दिखाने के लिए आप पत्राचार
एक अच्छा है क्या के बीच जीयूआई अनुकूल इंटरफेस
और कमांड लाइन इंटरफेस.
मुझे आगे जाना है और करते हैं इस MySQL प्रॉम्प्ट पर निम्न.
मैं उपयोग courses50 कहने जा रहा हूँ
मनमाना नाम जो है मैं इस डेटाबेस को दे दिया.
और अब, मैं भी नहीं करते हम क्या किया याद.
तो मुझे दिखाने के टेबल टाइप करते
और आम तौर पर अर्द्धविराम यहाँ अपने दोस्त हो जाएगा
क्वेरी खत्म करने के लिए.
और वहाँ यह है.
तो यहाँ बल्कि पंक्तियों या कर रहे हैं हम यहाँ है कि टेबल.
अब, मैं भूल जाते हैं एक पाठ्यक्रम की तरह दिखता है
इसलिए मुझे पाठ्यक्रमों का वर्णन करते हैं और अब मैं एक तरह से एक ASCII देखना
या क्या का एक संस्करण phpMyAdmin कर रहा था
और मैं आईडी एक पूर्णांक है कि देखते हैं.
कि 10 है.
इसका क्या मतलब है?
वह सिर्फ मतलब है कि जब यह इसे लेने के लिए जा रहा है प्रदर्शित
10 अक्षरों पर टर्मिनल विंडो.
यह nullable है?
नहीं, यह प्राथमिक कुंजी है.
यह एक डिफ़ॉल्ट मूल्य मिल सकता है?
खास बात है जो नहीं और अतिरिक्त ऑटो वेतन वृद्धि की तरह झंडे.
तो चलो बस एक जोड़े करते हैं यहां की त्वरित सम्मिलन.
मैं ऊपर जा रहा हूँ को - चलो बस कहना है.
चलो एक स्लाइड में राज्य को बदल दो.
मैं एक तरह से जहां पूर्व तैयार इस.
यह एक सारांश तो की है उन तालिकाओं के सभी तीन.
मैं पहले से ही बस मैन्युअल पहले आदेश टाइप.
और यहाँ, मैं आगे चला गया और आप के लिए अन्य प्रकार के.
यह सिर्फ शैलीगत बात.
आम तौर पर, लोगों का एक बहुत सभी टोपियां में एसक्यूएल बयान लिखें
और तब तालिका नाम और कम मामले में क्षेत्र के नाम,
अगर केवल क्योंकि यह खड़ा के प्रकार
अपनी शब्दावली है क्या बाहर और डेटाबेस वाक्यविन्यास क्या है.
तो यहाँ हम तीन है टेबल, पाठ्यक्रम, प्रशिक्षकों,
और पाठ्यक्रम प्रशिक्षकों.
स्लाइड में मैं आगे बना मैं आईडी क्षेत्र नहीं था
लेकिन लगता है कि वास्तव में नहीं है सभी में एक बुरी बात.
हम सिर्फ एक देखना होगा वहाँ तीसरे स्तंभ.
मैं यहां जो कुछ किया था?
तो अब मुझे का प्रस्ताव करते हैं कि हम सम्मिलन का एक गुच्छा है.
तो यहाँ कुछ डेटा है, मैं अंदर ज़ूम हूँ
इसलिए मैं प्रस्ताव करने के लिए जा रहा हूँ पाठ्यक्रम में है कि,
हम केवल तीन पाठ्यक्रमों के साथ सौदा.
और मैं इन तीन चुना 'वे प्रतिनिधि कर रहे हैं कारण
कुछ अच्छा के - वे है कुछ अच्छा गुण.
CS1, CS50, CS51, वे बढ़ती आईडी है
लेकिन क्या आईडी क्या है पूरी तरह से अप्रासंगिक है.
वह सिर्फ आदेश है, जिसमें वे मेरे द्वारा ऑटो डाला गया.
कैसे प्रशिक्षकों के बारे में?
तो अब, क्योंकि हेनरी Leitner , CS1 और CS51 दोनों सिखाता
यह एक उपयुक्त अवसर की तरह है हमारे डिजाइन के लिए निहितार्थ.
और जेसी CS51 सिखाता और Malan CS50 सिखाता है.
तो अब - या बल्कि ये हैं सिर्फ उन लोगों के अद्वितीय आईडी.
और पाठ्यक्रम और प्रशिक्षकों, - पाठ्यक्रम प्रशिक्षकों, यहां नोटिस.
कोर्स Id1, जो CS1 सिखाया गया था
प्रशिक्षक Id1 द्वारा हेनरी कौन है.
कोर्स ID2, जो मैं CS50 सिखाया गया था लगता है
प्रशिक्षक ID2, द्वारा Malan जो है.
और फिर अंत में, CS51, और हम दो पंक्तियाँ हैं नोटिस.
शामिल होने और यही कारण है अब यह है तालिका सिखाया जाता है, शक्तिशाली है
हेनरी और जेसी दोनों से.
तो यह सब ठीक है और अच्छा है
लेकिन मैं मुश्किल से कर सकते हैं ऊपर से याद
मेरे सिर के कौन यहाँ है.
कैसे कर सकते हैं आप संभवतः कोड में उस के साथ सौदा,
करने के लिए बिना मुश्किल कोड बातें?
खैर, इस जहाँ एसक्यूएल ही है हमारे मित्र बनने के लिए शुरू होता है.
और मैं प्रस्ताव करने के लिए जा रहा हूँ कि हम निम्नलिखित टाइप कर सकते हैं.
मैं में इस करूँगा वास्तविक शीघ्र.
मुझे आगे चलते हैं और इन बातों को सम्मिलित करें.
तो, पाठ्यक्रम तालिका में हम था कि वास्तव में क्या करते हैं एक
पहले पल.
मैं आगे के लिए जा रहे हैं और कह रहा हूँ के CS1 और CS50 डालने दे.
चलो कुछ अधिक सम्मिलित करते हैं पंक्तियों में एक बार, CS51.
अब, मुझे आगे जाना है और बचाने के लिए करते हैं.
ठीक है, तो मैं अभी कर रहा हूँ के रूप में जल्दी से पुनः बनाने
मैं रिश्तों में कर सकते हैं हम सिर्फ स्क्रीन पर देखा था.
और इसलिए यहां हम हैं Leitner, यहाँ हम Malan है.
हम खुद को दे दो. एक और पंक्ति, और टव.
अब मुझे इस सहेजने दें.
और मैं जान - बूझकर उन्हें कर रहा हूँ उसी क्रम में.
नहीं, मुझे देना भूल इस ऑटो वेतन वृद्धि.
मुझे जल्दी से इसे ठीक करने दें.
मैं में इसे ठीक कर देंगे ऑनलाइन कोड.
यह एक अलग रूप में विफल रही है.
तथ्य यह है कि मैं नहीं कर सकता Leitner और Malan डालने
मैं नहीं था क्योंकि और टव, विफल भले ही एक आईडी नंबर निर्दिष्ट
यह एक और मैं उम्मीद कर रहा है ऑटो वेतन वृद्धि जाँच करने के लिए भूल गया,
जो वे सब थे मतलब है डिफ़ॉल्ट शून्य रही द्वारा.
लेकिन यह तब विपरीत है जो हम निर्दिष्ट किया है कि संपत्ति.
प्राथमिक कुंजी का उल्लंघन किया गया था तो यह भी मुझे यह करना नहीं था.
तो मुझे यह ठीक.
अब, मुझे करने के लिए वापस जाओ यहाँ सम्मिलित करें टैब और निर्दिष्ट
मैं Leitner, Malan चाहते हैं कि और, एक और पंक्ति, टव.
और अब अंत में, केवल थोड़ा मुश्किल है कि एक
याद करने के लिए पाठ्यक्रम है प्रशिक्षक.
चलो अब सम्मिलित करते हैं कि बेशक Id1 प्रशिक्षक Id1 है
इसलिए कि CS1 और हेनरी की.
कोर्स ID2 प्रशिक्षक है CS50 और Malan है जो ID2.
और फिर हमारे पास पिछले वाले के बारे में चिंता करने के लिए पाठ्यक्रम ID3 है
CS51 है, जो पढ़ाया जा रहा है
पाठ्यक्रम प्रशिक्षक द्वारा 1, हेनरी है, जो.
और तीन के रूप में भी सिखाया 3 से, टव जो है.
तो उम्मीद है कि अब हम इस से निर्मित है -
अरे नहीं, मैं एक ही बात थी.
पाठ्यक्रम प्रशिक्षक ऑटो वेतन वृद्धि की जरूरत है.
ठीक है.
मैं इस तेजी से इस बार क्या करेंगे कोर्स 1, पाठ्यक्रम 1, 2, 2.
और अब अंत में, हम CS51 करना जो कोर्स ID3 और हेनरी है.
और हां ID3 और जेसी.
यह अच्छा लग रहा है.
ठीक है. तो अब, चलो वापस जाना टर्मिनल विंडो के लिए.
मैं का वर्णन तो अगर पाठ्यक्रम हम यह देखेंगे.
मैं मैं कर सकता हूँ पाठ्यक्रमों देखना चाहते हैं अब, पाठ्यक्रम से स्टार का चयन करना
अर्द्ध बृहदान्त्र, और अब हम उन मूल्यों देखते हैं.
और अब, क्या किसी और मैं क्या करना चाहते हैं?
प्रशिक्षकों से स्टार चुनें जैसा कि मैं उम्मीद है कि,
और पाठ्यक्रम से स्टार का चयन करें - बेशक अंडरस्कोर प्रशिक्षक.
तो कैसे मैं अब शामिल हो इन तालिकाओं?
इसलिए चुना होने के सौंदर्य इस तरह से आईडी मूल्यों है
कि आप के बारे में अगर आपको लगता है बेशक तालिका लेने
और प्रशिक्षक फिर मेज और डालने
अपने में उन दोनों के बीच में मन पाठ्यक्रम प्रशिक्षक
आप की तरह लाइन कर सकते हैं तालिका इन आईडी कॉलम के सभी अप
आप उन्हें मर्ज इतना है कि सब किया है कि एक बड़े पैमाने पर स्तंभ
जानकारी के हम देखभाल के बारे में.
इस के लिए SQL वाक्यविन्यास जरूरी स्पष्ट नहीं है
लेकिन हम यह कर सकते हैं देखते हैं.
पाठ्यक्रम से तो चुनिंदा सितारा,
और कुछ रास्ता नहीं है हम ऐसा कर सकते हैं.
मैं अभी तक दर्ज हिट करने के लिए जा रहा हूँ अच्छी तरह से प्रारूप चीजों की तरह,
लेकिन उस तीर सिर्फ एक है ग्राहक पक्ष उपकरण के लक्षण,
यह करने के लिए कुछ भी नहीं है एसक्यूएल के साथ ही करते हैं.
पाठ्यक्रम से तो चुनिंदा सितारा.
मैं अब में शामिल होने के लिए जा रहा हूँ पाठ्यक्रम तालिका
पाठ्यक्रम प्रशिक्षक मेज पर.
कैसे? कहा जाता है क्षेत्र में courses.id बराबर कोर्स
प्रशिक्षक अंडरस्कोर नाम क्या है डॉट
इसी क्षेत्र की यहां मैं एक जोड़ी चाहते हैं.
यह आईडी नहीं है.
It's - क्या, क्षमा करें?
>> कोर्स आईडी.
ठीक है, मुझे बाहर ज़ूम करते हैं.
लेकिन मैं ले जाना चाहता हूँ यह एक कदम आगे.
मैं अब इस किया है मेज और इस एक.
अब मैं खींच करना चाहते हैं साथ ही में इस आदमी.
तो, मुझे आगे जाने इस पूरे काम में शामिल होने
प्रशिक्षक के पर क्या पर तालिका?
कोर्स अंडरस्कोर instructor.instructor आईडी
instructors.id बराबर.
इसलिए हम लिखा हो सकता है कुछ मायनों में इस क्वेरी.
मैं इस किया था, जिसमें आदेश है कि सभी महत्वपूर्ण नहीं है.
मैं बस की तरह में यह किया से मेरे दिमाग सही करने के लिए छोड़ दिया है.
हम यह कर सकता था कुछ अलग तरीके में
लेकिन मैं अब अगर अर्द्ध बृहदान्त्र और हिट दर्ज करें,
मैं एक नया वापस पाने नोटिस अस्थायी मेज, एक परिणाम सेट
इसलिए डेटाबेस बात में बात करने के लिए.
और मैं क्या है इस बात में?
मैं आईडी, एक नाम, एक अन्य पर है एक तरह से भ्रामक है जो आईडी,
इस समय मेरे लिए, एक पाठ्यक्रम आईडी,
एक प्रशिक्षक आईडी, आईडी, और नाम.
तो, दिन के अंत में अब हम सही जानकारी है.
मैं CS1 सिखाया जाता है कि देख सकते हैं Leitner द्वारा, CS51 पढ़ाया जा रहा है
Leitner और टव, और द्वारा CS50 Malan द्वारा पढ़ाया जा रहा है.
लेकिन मैं के बारे में थोड़ा नर्वस हूँ मैंने बनाया है इस अस्पष्टता.
अस्पष्टता क्या है मैं की ओर इशारा करते रहा हूँ?
हाँ?
[अश्रव्य टिप्पणी]
तीन आईडी कॉलम नहीं है.
इसलिए हम वास्तव में इसे ठीक कर सकते हैं और हम वास्तव में जा रहा करने के लिए जा रहे हैं
हमारे ढांचे को ठुकराने अंतत: हमें इस के साथ मदद करने के लिए,
लेकिन यह है कि वहाँ पता चला है एस बुलाया एसक्यूएल में एक कीवर्ड,
आप एक निर्दिष्ट कर सकते हैं, जहां उर्फ, एक क्षेत्र के लिए एक नया नाम
हम इस से बचने कर सकते हैं ताकि कुल मिलाकर अस्पष्टता.
लेकिन मुझे एहसास हुआ कि अगर हम नहीं साथ ही किसी भी तरह से यह पता
उस कीवर्ड या एक फ्रेमवर्क,
इस संभावित वहाँ है अस्पष्टता अगर तुम कोशिश करो
आईडी क्षेत्र का उपयोग करने के लिए स्पष्ट रूप से होते हैं क्योंकि
वहाँ नकली नामों के साथ.
तो यह एक में शामिल होने है और मुझे लगता है कि अपने मन की आंखों में सबसे अच्छा तरीका
वास्तव में इसके बारे में सोचने के लिए दो तालिकाओं ले रहा है,
में उन्हें लाइन आप चाहते हैं कि जिस तरह से.
और यह एक तथाकथित है अंतःकरण में शामिल होने
हम संयोजन कर रहे हैं कि यहाँ टेबल.
अन्य प्रकार के कर रहे हैं हम मुठभेड़ हो सकता है कि जुड़ती
जैसे समय के साथ बाहरी, मिलती है
लेकिन यह सबसे अधिक भाग के लिए शायद सबसे आम है
डेटा के पुनर्निर्माण के लिए.
क्या हम अब कुछ किया है है आम तौर पर क्या कहा जाता है
अपने डेटा को सामान्य बनाने, इतना है कि कहीं कोई दोहराव है
अपने टेबल में.
और दोहराव से, मैं करूंगा कि पहले दृष्टिकोण का मतलब है.
हम Leitner उल्लेख किया था तो और कई स्थानों में टव
अपने डेटाबेस में, नहीं है कि आम तौर पर सबसे अच्छा निर्णय
खासकर अगर उनके नाम हो सकता है अतिरिक्त समय या मामले में बदल
शादी, मायके का नाम हो सकता है की आप सिर्फ एक चाहता हूँ खुद को बदलने
कुछ के लिए विहित जगह एक नाम की तरह डेटा मूल्य.
ठीक है.
तो, संक्षिप्त करने के लिए, हमें मिला है एक बनाने के लिए कुछ डिजाइन निर्णय
और सबसे महत्वपूर्ण लोगों शायद कुछ करने के लिए कम
अनुक्रमित के इन विकल्पों में से.
लेकिन मुझे कहना एक अन्य चीज के रूप में अच्छी तरह से.
मैं वापस phpMyAdmin में जाओ
एक विशेषता तुम नहीं हो सकता पहले है सामना करना पड़ा है
निम्नलिखित.
मैं पाठ्यक्रम प्रशिक्षक के लिए जाना है, मैं पहले से ही निर्दिष्ट किया कि कुछ
की इन बातों अनुक्रमण करता है.
लेकिन मुझे संरचना के लिए चलते हैं पाठ्यक्रम प्रशिक्षक के टैब.
मुझे अनुक्रमित पर अब क्लिक करते हैं और निम्नलिखित नोटिस.
मैं यहाँ निर्दिष्ट किया है कि एक प्राथमिक कुंजी है
आईडी बुलाया स्तंभ पर.
यह कुछ हद तक एक जटिल है प्रमुखता निर्दिष्ट करने का तरीका
और बहुत आगे की बात कर के रूप में बाइट्स में क्षेत्र का आकार.
लेकिन अब मैं भी एक और है क्षेत्र है, जो पाठ्यक्रम आईडी, -
किया जाता है जो पाठ्यक्रम आईडी अग्रिम में और अद्वितीय, ठीक है.
मैं में इस एक था हमारे लिए अग्रिम.
तो, क्यों यह है - मुझे छोड़ इस चर्चा के लिए.
ओह, तुम्हें पता है मैं क्या किया पता है?
ठीक है. तो, इससे पहले, एक एक जीयूआई उपकरण का उपयोग कर के खतरों
इस तरह, जब हम थे इस तालिका में शामिल होने का निर्माण,
पाठ्यक्रम प्रशिक्षक मेज, मैं निर्दिष्ट है कि याद
मैं एक सूचकांक चाहते हैं कि इस मैदान पर
और इस पर एक सूचकांक अन्य क्षेत्र.
के पक्ष प्रभाव उन बक्सों की दोनों जाँच
एक ही स्क्रीन पर है कि phpMyAdmin कि inferred से,
मैं चाहता हूँ कि नहीं दो अलग अनुक्रमित,
मैं एक में शामिल होने के सूचकांक चाहते हैं कि जो आम तौर पर केवल उपयोगी है
आप कर रहे हैं जब या सबसे उपयोगी एक क्षेत्र नहीं पर खोज
लेकिन उन क्षेत्रों के दोनों.
हम था और यही कारण है उन्हें वहां एकत्रित होना
इसलिए मुझे लगता है क्योंकि यह गिरा मैं क्या इरादा नहीं था.
बल्कि, मैं जा रहा हूँ यहाँ यह फिर से करना.
मैं बेशक आईडी पर जाने के लिए जा रहा हूँ
और अधिक तहत मैं कर रहा हूँ बस सूचकांक जोड़ने कहने जा रहा.
और मैं नीचे जा रहा हूँ प्रशिक्षक आईडी और सूचकांक जोड़ने का कहना है.
और अब हम यहाँ क्लिक करें अगर हम तीन अनुक्रमित नोटिस,
एक प्राथमिक और मैं के रूप में प्रत्येक के लिए एक इरादा
उन विदेशी कुंजी की.
और मुझे लगता है कि यह विदेशी क्योंकि कॉल इस तालिका नक्शे में पाठ्यक्रम आईडी
क्षेत्र है, जो अभी होना करने के लिए किसी अन्य तालिका में, साफ़ करें.
आईडी बुलाया प्राथमिक कुंजी, में पाठ्यक्रम बुलाया मेज,
और एक दूसरे के लिए ही सौदा.
लेकिन अब, एक दिलचस्प है चाल और वास्तव में तकनीक.
मैं सिर्फ आगे चला गया और मुझे नीचा कि एक छोटे से अधिक धीरे धीरे करते हैं.
एक ही स्क्रीन में, नोटिस यह यहां रिलेशन देखें कहते हैं.
मैं इस पर क्लिक करें और अब मैं नोटिस कुछ बाधाओं के पास करने के लिए मिलता है.
तो, upsides में से एक भी
की धारणा का उपयोग न केवल विदेशी कुंजी और अन्य तालिकाओं
जैसे हम है बस पर है कि एक सूचकांक को परिभाषित द्वारा
उन पर तुम हो सकता है डाटाबेस की मदद से आप और भी अधिक
अखंडता सुनिश्चित उस क्षेत्र की.
विशेष रूप से, मैं अब कर सकते हैं इस गिरावट के द्वारा निर्दिष्ट
नीचे जरूर है कि आईडी क्षेत्र
इस तालिका में वास्तव में नक्शे पर courses.id लिए.
इसी तरह, प्रशिक्षक अंडरस्कोर आईडी instructors.id के लिए मैप.
अब, क्यों यह उपयोगी है?
खैर, सही पर, नोटिस अब लगता है क्या हाथ की ओर.
मैं अब सिखा सकते हैं डेटाबेस है कि अगर हेनरी
उदाहरण के लिए कभी रिटायर और उसकी पंक्ति गायब हो जाता है
प्रशिक्षक की मेज से कुल मिलाकर इस तरह किया जा रहा है
नष्ट कर दिया, मैं इस के माध्यम से कर सकते हैं दृष्टिकोण सुनिश्चित कैस्केडिंग
वह सिखाता है किसी भी पाठ्यक्रम हैं कि अब और नहीं उसके साथ जुड़े.
मैं डेटाबेस सिखा सकते हैं पंक्तियों को हटाने के लिए
इस तथाकथित शामिल होने तालिका में स्वतः हेनरी अगर या यदि एक
अपने पाठ्यक्रमों में गायब हो जाता है.
अब, यह क्यों मजबूर है?
हाँ?
[अश्रव्य टिप्पणी]
आप केवल एक बार ही करना होगा और लंबी अवधि, है ना?
यह बहुत आसान है की तरह अगर लोग आते हैं और जाते हैं, पाठ्यक्रमों में आ गए
और, जाओ अपने डेटाबेस सका बस पाठ्यक्रमों से अटे पड़े मिल
और शिक्षकों के साथ नहीं कर रहे हैं कि डेटा सेट करने के लिए लंबे समय तक प्रासंगिक.
और अपने डेटा प्राप्त करने के लिए शुरू होता है , बहुत गंदा और गंदे और बासी
और यहाँ तो हम बद्ध कर सकते हैं
के के कुछ लागू इन बाधाओं.
हाँ?
[अश्रव्य टिप्पणी]
यह इस तरह से जानता है.
यह स्क्रीन है, जहां हम एक कड़ी निर्दिष्ट कर रहे हैं
विदेशी कुंजी के बीच और प्राथमिक कुंजी.
इसलिए नामकरण के सभी मैं alluded सम्मेलनों
पहले तक सिर्फ सम्मेलनों रहे हैं.
कोई निहित अर्थ नहीं है.
यह स्क्रीन है केवल उपयोगी है जो
आप अनुक्रमित पर निर्दिष्ट के बाद उन क्षेत्रों में से प्रत्येक के रूप में हमने किया.
और इस लटकती के लिए हमारे पास उदाहरण के लिए कुछ बातें
एक कोर्स आप कर सकते हैं नष्ट कर दिया जाता है तो वास्तव में उस विलोपन को रोकने के
ऐसा होने से अगर वहाँ इस तालिका में एक पंक्ति है
बस कह कर, सीमित.
दूसरे शब्दों में हेनरी रिटायर नहीं कर सकता
हम उसे दसगुणा जब तक CS51 और CS1 से.
तो यह है कि एक अच्छी बात है.
लेकिन यह चालू कर सकते अपने कोड में त्रुटियों
आप आशा करते हैं कि नहीं करते हैं, या हम एक झरना हो सकता है,
पसंद करने के लिए इसी तरह की एक झरना व्यापक स्टाइल शीट्स
और कैस्केडिंग झरना का मतलब है कि एक हैं -
हेनरी तो रिटायर हैं - नष्ट हो रही द्वारा
तो यहाँ अपने पंक्ति होगा नष्ट कर दिया हो.
कोई कार्रवाई कुछ नहीं या अशक्त का मतलब एक तरह से उपयोगी है अगर आप की तरह
की कुछ ऐतिहासिक रिकॉर्ड चाहते हैं हेनरी CS51 सिखाया होने की,
लेकिन तुम सिर्फ उस क्षेत्र चाहते हैं अशक्त होना इतना है कि वहाँ पंक्तियाँ
लेकिन यह किसी भी अब नहीं है उसके साथ जुड़े.
तो ये बहुत शक्तिशाली हैं तकनीक है कि आप कर सकते हैं
और भले ही इस्तेमाल करना चाहिए ब्याज में विशेष रूप से
अपने आप से बचाने के लिए.
तो मुझे एक का उल्लेख कर देना यहाँ अंतिम विवरण की जोड़ी,
सामग्री के साथ जो कि सहायक हो सकता है
हम डेटाबेस डिजाइन के लिए योजना के रूप में.
तुम भी विकल्प नहीं है डेटाबेस इंजन के ऊपर
आप अपने कोड में उपयोग करते हैं.
आप परिचित हैं CS161 के तुम हो सकता है -
या यहां तक ​​कि 61, आप आम तौर पर हो सकता है फाइल सिस्टम के साथ परिचित हो.
और वहाँ चीज़ें है जैसे, NTFS और HFS +
और X2FS4 [ध्वन्यात्मक] और 3 और बहुत आगे है.
वहाँ अलग अलग तरीके है की मेज पर डेटा भंडारण.
इसी हैं वहाँ डाटा संग्रहण के अलग अलग तरीके
डिफ़ॉल्ट रूप से एक डेटाबेस में उपकरण में कम से कम
नवीनतम संस्करण के साथ MySQL की.
हम प्रयोग कर रहे थे NoDB कहा जाता है, डेटाबेस इंजन,
जो एक का समर्थन करता है कुछ अच्छी सुविधाएँ.
लेकिन एक आम एक भी है कहा जाता है MyISAM और अभी तक एक और
कि, उपयोग स्मृति है हो सकता है कुछ भी नहीं है, जिसका मतलब है
डिस्क पर, बस रखना स्मृति में बातें.
अधिकांश भाग के लिए आप शायद बस शुरू गलत नहीं होगा
NoDB साथ, लेकिन किसी भी परियोजनाओं के लिए उच्च दरों को शामिल करते हैं
उदाहरण के लिए प्रविष्टि की, जैसे तेजी से प्रवेश का एक बहुत,
प्रति सेकंड चीजों के सैकड़ों या चीजों के हजारों.
जब भी आप एक है जा रहा सामान की बहुत
डेटाबेस में पर तो इस प्रकार की
के निचले स्तर निर्णयों शामिल करने के लिए शुरू करते हैं.
पूर्ण पाठ सुविधा के लिए उदाहरण केवल MyISAM में काम करता है
इसलिए कि एक निहितार्थ है.
लेकिन तुम चलो, यह याद कर सकते हैं हम परवाह क्यों कम से कम प्रेरित
विशेष रूप से NoDB के बारे में.
एक दौड़ की स्थिति आम तौर पर क्या करने के लिए संदर्भित करता है?
ठीक है, यह एक है एक उदाहरण के लिए संकेत कुछ
की आप में सुना सकता है पिछले कुछ वर्षों के लिए कि क्या 161 या 50
आप एक रूममेट है जहां, तुम दोनों वास्तव में, दूध पसंद
आप में से एक को खोलता पहले घर हो जाता है कोई दूध वहाँ फ्रिज,
भर में फ्रिज की पैदल दूरी पर बंद सीवीएस करने के लिए सड़कों और मिल
लाइन में थोड़ा दूध खरीदने के लिए.
इस बीच, अपने रूममेट यहाँ वापस आता है.
वह भी दूध पसंद करती है.
फ्रिज खोलें और कोई दूध का एहसास है.
यहाँ वह तब तक चला जाता है , शायद अन्य सीवीएस दुकान.
तेजी से आगे कुछ ही मिनटों बाद में आप अब दोनों वापस आ गए और
की आप दूध खरीदा है.
उनमें से एक अब जा रहा है तुम नहीं करते क्योंकि खराब करने के लिए
दूध की तरह है कि ज्यादा और यह सही है, यह एक समस्या है?
तुम दोनों का निरीक्षण किया क्योंकि कुछ चर के राज्य
और आधारित एक निर्णय लिया इस पर भले ही राज्य
कि चर का अनिवार्य रूप से किया गया था बदला जा रहा है की प्रक्रिया में,
यह सब पर धीरे धीरे हो यह लगता है की राशि
सीवीएस करने के लिए और से प्राप्त करने के लिए.
तो क्या बेवकूफ असली की तरह है दुनिया कि समस्या का हल क्या है?
सही, एक नोट छोड़ दें?
यह पिछली बार हुआ है.
हमेशा एक नोट छोड़ या सचमुच बात ताला.
और मैं ताला, क्योंकि कहना आप लेते हैं या CS161 लिया,
लॉकिंग एक मौलिक है दुनिया के इस तरह के विचार.
तो दौड़ की स्थिति पैदा कर सकते हैं यह भी डेटाबेस दुनिया में
और आप से शायद याद हो सकता है आप 50 लिया CS50, वित्त
हम वास्तव में दे दी है कि इस कोड विनिर्देश में तुम लोग
समय पर इतना है कि अपने आपरेशन ताकि परमाणु कहा जाता है.
आप इस में, करना चाहता था मामले, स्टॉक का एक हिस्सा खरीद
और उस स्टॉक है कुछ विशेष प्रतीक.
हम आप जैसे कोड का उपयोग करने के लिए कहा इस वजह से इस तरह के द्वारा
डुप्लिकेट कुंजी अद्यतन पर बनाया गया है जो वाक्यविन्यास,
MySQL में आप प्रभावी रूप से कर रहे हैं सम्मिलित में या तो कर
या के बाद अद्यतन में देखने के लिए एक का चयन कर
एक शेयर पहले से ही वहाँ है.
दूसरे शब्दों में, में एनालॉग एक शेयर खरीदने की दुनिया
दूध और रेफ्रिजरेटर की , पहले, हो सकता है
के एक शेयर खरीदने से पहले गूगल आप चयन करना चाहते हो सकता है
डेटाबेस से की सभी दाऊद का मालिक है कि गूगल के शेयर
वह शून्य या अधिक का मालिक है यह देखने के लिए.
वह मालिक है अगर आप देख एक बार शून्य या आपके पास अधिक
तब तक निम्न कार्य करें.
आप एक डालने के लिए क्या करना होगा या तो
वह शून्य 'कारण ही है दाऊद के लिए कोई पंक्ति, अभी तक वहाँ
या आप एक अद्यतन करने के लिए है कम से कम सिद्धांत रूप में आप चाहते हैं
प्रति उपयोगकर्ता एक पंक्ति है.
समस्या का चयन होता है शेयरों की संख्या
और फिर अद्यतन करने या डालने बाधित किया जा सकता है
किसी अन्य पर किसी और के द्वारा खरीदने की कोशिश कर कंप्यूटर टर्मिनल
या दाऊद के कुछ बेचते हैं शेयरों के शेयरों चाहे
अच्छे उद्देश्यों के लिए या ऐसा दुर्भावनापूर्ण उद्देश्यों की.
यह स्टोर करने के लिए जा रहा तरह है अपने रूममेट वापस हो जाता है जब
और राज्य की जांच करता है चर की.
इसलिए समय पर इस वाक्य रचना एक तरह से उपयुक्त था जो
CS50 के लिए, उस से बचा जाता है कुल मिलाकर समस्या.
और यह है कि बस के सभी करता है आप के लिए बंद का जादू,
लेकिन अब इन प्रकार के साथ इस कोर्स के लिए परियोजनाओं की
जो सबसे अधिक संभावना होगी अधिक जटिल डेटा सेट शामिल है,
आप को प्राप्त नहीं कर सकते हमेशा यह atomicity.
सब कुछ होता है एक ही बार में या बिल्कुल नहीं
निर्बाध इतने सुंदर ढंग से.
और तो MySQL, एक और डेटाबेस इंजन,
ताले बुलाया समर्थन बातें,
आप ताला यह कह सकते हैं जिससे तालिका इतना है कि केवल एक ही इलाज
और आम तौर पर केवल एक उपयोगकर्ता कर सकते हैं समय में किसी भी बिंदु में यह स्पर्श
पढ़ने या लिखने और करने के लिए तो आप इसे अनलॉक कर सकते हैं.
यह एक से एक उदाहरण है MySQL की अपनी संदर्भ की,
जहां आप एक बैंक की तरह है आप कोशिश कर रहे हैं कि खाता
से पैसे घटा और तब तक पैसे जोड़ने.
तुम चाहते हो सकता है यकीन है कि दोनों बना
उन चीजों में से एक साथ हो
कोई नहीं है कि इतनी गणितीय त्रुटियों
और कोई भी नुकसान किसी तरह पैसे,.
ताले के साथ समस्या एक डेटाबेस में है, हालांकि
यह आम तौर पर मतलब है कि संपूर्ण तालिका बंद कर दिया है,
जो तुम्हारे पास है, तो इसका मतलब है कोशिश कर रहा एक सौ लोग
अपने बैंक के साथ व्यापार करने के लिए एक ही राशि पर ऑनलाइन
समय का केवल एक की उन्हें एक बार में जा सकते हैं.
बेवकूफ, विशेष रूप से है जो सर्वर पर आजकल
आठ कोर्स, 16 है कि बेशक, एक विशाल राशि है
स्मृति की, वहाँ कोई सभी धारावाहिक के कारण
अपने लेनदेन की अगर उन ग्राहकों को ही जा रहे हैं
अपने स्वयं पंक्तियों के साथ बातचीत करने के लिए.
तो NoDB तुम क्या करने की अनुमति देता है चीजों को और अधिक बुद्धिमान
और यह आम तौर पर किया जाएगा आप कोड में ले दृष्टिकोण,
आप कुछ का उपयोग के रूप में लेन - देन कहा जाता है.
और आप आमतौर पर ऐसा करते हैं PHP कोड में,
रूबी कोड, अजगर, जो भी हो.
लेकिन SQL कोड है कि अंत में, यह है इस्तेमाल किया
आम तौर पर.
आप तो लेन - देन शुरू करें दो या दो से अधिक प्रश्नों को निर्दिष्ट
आप चाहते हैं कि पूरी तरह अमल
निर्बाध या बिल्कुल नहीं.
यहां तक ​​कि कुछ नहीं हो सकता में बयानों का चयन
या कुछ हटाता है या अद्यतन.
लेकिन अच्छी बात यह है कि डेटाबेस काफी समझदार हो जाएगा
यकीन है कि यह केवल होगा कि बनाने के लिए वे वास्तव में कर रहे हैं पंक्तियों ताला
इस अद्यतन में शामिल या चुनता या हटाता है.
आप पंक्तियों के हजारों मिला तो अगर और आप केवल तीन छू रहे हैं
उनमें से, केवल कि सबसेट तालिका के बंद हो जाएगा
उन अन्य 99 जिसका मतलब है ग्राहकों को उनकी पंक्तियों को छू सकता है
serialized जा रहा है बिना और आप से धीमा.
इस बीच, यह अच्छा है लेनदेन को पहलू.
वे एक में लेनदेन कर रहे हैं एक फाइल सिस्टम पर 161 तरह समझ,
वे व्यवहार कर रहे हैं
जो आप कर सकते हैं रोल का मतलब उन्हें वापस, आप उन्हें पूर्ववत कर सकते हैं.
इस आदेश की तरह है या डेटाबेस के एफ नियंत्रित करते हैं.
आप हिस्सा पता चलता है रास्ते के माध्यम से सभी
अपनी विभिन्न डेटा आपरेशन की, शूट, कुछ गलत हो रहा है.
तुम सचमुच अमल एक वापस अलग एसक्यूएल क्वेरी रोल
और इन प्रवृत्ति के सभी - सभी आप निष्पादित बयान की
शुरुआत कह के बाद लेन - देन गायब
वे जो कुछ हुआ, कभी नहीं के रूप में यद्यपि
एक आश्चर्यजनक है जो शक्तिशाली बात.
और इन प्रकार के होते हैं बातें निश्चित रूप से 50 में हम की तरह
का गलीचा के तहत झाडू और आप बस की तरह मान
कि सब कुछ ठीक हो जाएगा.
लेकिन एक बार आप शुरू वास्तविक परियोजनाओं के बारे में सोच
और वास्तविक उपयोगकर्ताओं और अपने डेटाबेस की अखंडता,
इन प्रकार के होते हैं डिजाइन निर्णय की
कि महत्वपूर्ण होने जा रहे हैं.