>> ყველა უფლება.
ასე რომ, გარეშე ado, SQL, სტრუქტურირებული შეკითხვის ენა.
ასე რომ, თქვენ ალბათ გამოიყენება ამ დროს მაინც CS50, იქნებ CS165,
იქნებ საკუთარი პირადი პროექტები.
და რა SQL მოგცემთ გავაკეთოთ, ამ SQL Server ზოგადად?
ჰო?
[Inaudible შენიშვნა]
OK, რომ იყო ძალიან უსაფრთხო გზა ამბობდა იგი.
დიახ. ასე რომ, ეს საშუალებას თქვენ შესანახად მონაცემები
და რაც მთავარია იძლევა თქვენ შეკითხვის მონაცემები.
და ეს არის წინ გადადგმული ნაბიჯი
გამოყენებით რაღაც მარტივი როგორიცაა CSV, მარჯვნივ.
მძიმით გამოყოფილი ცვლადები.
მსგავსი ღირებულებები.
ანალოგიურად, ნება თქვენ ზოგავთ ინფორმაცია ერთ გრაფაში
ტექსტური ფაილი.
მაგრამ რა არის downside of CSV ფაილი შენახვის თქვენი მონაცემები,
მიუხედავად იმისა, რომ თქვენ ეფექტურად მიიღეთ რიგები და სვეტები მისგან?
ჰო.
>> თქვენ არ 'აქვს ამავე ორგანიზაციის
ეფექტურობის [inaudible].
>> თქვენ არ აქვს იგივე ორგანიზაციის ეფექტურობა.
რას ნიშნავს?
>> ისე, როგორც [inaudible] აქვს, როგორიც პირველადი [inaudible].
>> OK. ჰო.
>> ეს რელატიური მონაცემთა ბაზა თქვენ შეგიძლიათ მრავალჯერადი მონაცემთა ბაზები
უკავშირდება ერთმანეთს ძალიან კონკრეტული გზები.
>> OK. კარგი.
>> ეს არის [inaudible] მითითებული CSV.
>> ნება მომეცით tweak ცოტა ტერმინოლოგიას.
ასე რომ მრავალჯერადი მაგიდები ფარგლებში მონაცემთა ბაზა, რა თქმა უნდა,
და რომ სცილდება რა შეგიძლიათ გააკეთოთ მხოლოდ ერთი CSV.
მაგრამ ნამდვილად შეზღუდვას ერთად CSV მე ვიტყოდი, რომ ეს არის
რომ არაეფექტურობა ეს ყველაფერი.
ეს არის ძალიან ადვილი განლაგებას.
მაგრამ თუ თქვენ გსურთ შეკითხვაზე, რა ქრონომეტრაჟი
ნებისმიერი აირჩიეთ შეკითხვაზე on CSV ფაილი?
ვგულისხმობ, რომ ეს დიდი ძველი [inaudible], მარჯვენა, "იწვევს უარეს შემთხვევაში,
ისინი ზუსტად ძალიან ბოლოში.
მაშინაც კი, თუ თქვენ დალაგებულია მთელი CSV ფაილი, თუ თქვენ არ იცით,
რომ upfront, ასევე, თქვენ კვლავ აპირებს აქვს
ძებნის მთელი რამ.
ასე რომ, მათ შორის რამ ჩვენ ვაპირებთ, რომ მიიღოთ
გამოყენების ფაქტობრივი მონაცემთა ბაზის გამოყენებით ენა
როგორიცაა SQL არის ჩვენ შეგვიძლია მოვითხოვოთ და ჩვენ შეგვიძლია წინასწარ
როგორც მონაცემთა ბაზის დიზაინერები დააკონკრეტა, რა სფეროებში
, რომლებიც, როგორც ჩანს, აპირებს აქვს კითხვებს ისე, რომ ხალხი
at MySQL ან Microsoft ან Oracle,
ვინც გააკეთა მონაცემთა ბაზა თქვენ იყენებთ შეუძლია ყველა
მძიმე მუშაობა მჭიდროდაა გარეთ, OK,
მოცემული მილიონი ამ IDS.
როგორ შეგვიძლია განლაგება - მათ მეხსიერებაში?
გარკვეული სახის ხე სტრუქტურა, ალბათ,
ასე რომ, როდესაც თქვენ რეალურად შეასრულოს აირჩიეთ,
ეს არის ის, რაც ლოგარითმული ან ლოგარითმული
საქართველოს ლოგარითმული დროს საკმაოდ ვიდრე რეალურად devolving
რაღაც სწორხაზოვანი.
ასე რომ, ჩვენ ბევრი შესრულება, რომ გზა.
და ჩვენ შეგვიძლია ასევე შესანახად ბევრად უფრო მონაცემები უფრო ადვილად "გამოიწვიოს SQL
Server, როგორც წესი, ინახება in RAM, მიუხედავად იმისა, ნაწილები
ეს შეიძლება შენახული დისკზე და თქვენ ალბათ იცით ახლა
რომ RAM ზოგადად უფრო სწრაფად, ვიდრე დისკები,
ასე რომ კარგია.
და ჩვენ ასევე შეუძლია გაუმკლავდეს concurrency ბევრად უკეთესი.
თუ თქვენ მიღებული 165 ან 161, თქვენ იცით, რომ თუ ორი ადამიანი ცდილობენ
გავაკეთოთ იგივე ერთდროულად სისტემა,
ცუდი რამ შეიძლება ზოგადად მოხდეს.
ასე რომ, მათ შორის სხვა თვისებების ჩვენ შეგიძლიათ მიიღოთ, თუ ჩვენ შეიმუშავებს ჩვენი მაგიდები
სწორი გზა არის უკეთესი მხარდაჭერა და უსაფრთხოება
როდესაც საქმე concurrency.
ასე რომ, ორი ადამიანი ორ ნაწილად
მსოფლიო იმავე ნახვა, თუ ისინი ორივე ცდილობენ
შეძენა რაღაც ერთი და იგივე დროს, რომ წესრიგი არ აპირებს
წასვლა ერთდროულად.
რატომღაც ისინი serialized ვინმე, გარდა საკუთარი -
ვინმე გარდა თავს.
მონაცემთა ბაზა გავაკეთოთ, რომ ჩვენთვის.
ასე რომ, როდესაც ის უმარტივესი ფორმით,
SQL საშუალებას გვაძლევს შეკითხვაზე რელაციური მონაცემთა ბაზა.
რელაციური მონაცემთა ბაზა არის ერთი, რომ ერთი
ან მეტი მაგიდები მას, როგორც წესი.
და თუ ეს არის პატარა უცნობ,
შეგიძლიათ ნამდვილად უბრალოდ ვფიქრობ ამ როგორც Excel ან ნომრები
ან Google ცხრილები.
ეს უბრალოდ რიგები და სვეტები და, როგორც წესი, ზედა ყოველი
იმ რიგები აქვს სახელი მას.
ასე რომ, ეს შეიძლება იყოს ID სვეტი, სახელი სვეტი,
მისამართი სვეტი და სხვ.
და მაშინ შეიძლება მქონდეს ასეთი ცხრილი, თუ გსურთ
დაიწყოს ჩაყრის სხვადასხვა სახის მონაცემები.
მაგრამ თქვენ შეიძლება გავიხსენოთ მინიმუმ საწყისი CS50, რომ ჩვენ შევეცადეთ
გადმოგცეთ GUI დაფუძნებული ინსტრუმენტი [inaudible]
მართოთ თქვენი მონაცემთა ბაზაში.
მას ეწოდა phpMyAdmin.
ასე რომ, ეს უბრალოდ დამთხვევაა, რომ იგი დაწერილი PHP, მართლაც,
მაგრამ ეს იყო მხოლოდ ვებ დაფუძნებული წინა ბოლომდე მონაცემთა ბაზაში.
და მეშვეობით სხვადასხვა ჩანართების და კავშირები, შეგიძლიათ დაიწყოს
კონფიგურაციის მონაცემთა ბაზის თავს.
მაგრამ კარგი ინსტრუმენტი დაიწყოს კიდევ ცოტა უფრო კომფორტული
და ასევე ბრძანების ხაზი კლიენტს.
ასე რომ, თუ გამოყენებით CS50 ელექტრო ან მართლაც გამოყენებით მაკრო PC
, რომელსაც აქვს ბრძანების MySQL კლიენტი, ასევე, შეგიძლიათ გააკეთოთ ეს ერთგვარი
ძველი სკოლის მოსწონს ეს.
როგორც განზე MySQL პროექტი, მინიმუმ ღია მობილური
ეს არის მოუწოდა MariaDB for სხვადასხვა მიზეზის გამო, შეგიძლიათ წაიკითხოთ
up on Wikipedia მაგრამ ეს იგივე პროგრამული უზრუნველყოფა,
ეს იგივე სინტაქსი და ა.შ.,
საკმაოდ ბევრი იგივე კოდი ბაზა.
და ასე, როდესაც მე ამ შეგახსენებთ, შემიძლია ახლა ურთიერთქმედება
ჩემს მონაცემთა ბაზაში ბევრად უფრო ხელით.
ასე რომ, საქმე იმაშია, ნება მომეცით წავიდეთ წინ
და უბრალოდ გახსნა ტერმინალის ფანჯარაში.
მე მოხდა გამოყენებით CS50 ელექტრო, მაგრამ შეგიძლიათ ამის გაკეთება
უმეტეს ნებისმიერი სისტემა რომელიც თქვენ გაქვთ უფლება
პროგრამული უზრუნველყოფა დაყენებული.
და მე ვაპირებ ამის გაკეთებას MySQL-u განთავსების სახელი John Harvard
ამ კონკრეტულ სისტემის-p ამისთვის დაგავიწყდათ, რომ მე აკრიფოთ
ცოტა მეტი უსაფრთხოდ მიერ hitting შეიყვანეთ.
ახლა მე აიძულა.
მე ვაპირებ აკრიფოთ crimson in CS50 ელექტრო მოწყობილობების
და ახლა მე ვხედავ არსებითად რომ იგივე ეკრანზე.
მაგრამ არსებობს ბრძანებები now რომ ჩვენ შეგვიძლია დავიწყოთ აკრეფით
ისევე, როგორც აჩვენებს, მონაცემთა ბაზები, და რომ აპირებს მაჩვენო ყველა
მონაცემთა ბაზების რომ მაქვს უკვე შეიქმნა სისტემა,
საკმაოდ ბევრი იგივე სია თქვენ ვერ ვხედავ phpMyAdmin.
არსებობს რამდენიმე სხვა მსგავსი ინფორმაცია schema და ტესტი,
რომელიც თუ poke გარშემო CS50 ელექტრო მოწყობილობების, ჩვენ მალავენ
ეს ქვედა დონეზე მაგიდები
მაგრამ ისინი უკვე არსებობს მთელი ამ ხნის განმავლობაში.
MySQL რეალურად აქვს დაბალი დონე თვისებები სახელისა
და პაროლები მონაცემთა ბაზაში თავისთავად, არა, თქვენი განაცხადი
რომ თქვენ შეიძლება იყოს გაშვებული თავზე მას.
ასე რომ, წინასწარ, დღეს, მე განთავსებულია რამოდენიმე მონაცემთა ბაზა,
ერთი, რომელსაც ჰქვია courses50.
შანსი ზოგიერთ თქვენგანს არ გამოიყენება CS50 რა თქმა უნდა, სავაჭრო ინსტრუმენტი,
რომელიც დიდი ინტერფეისი რეგისტრატორის რა თქმა უნდა, კატალოგი.
და ეს არის რეალურად ლამაზი მონაცემთა ნაკრებს ლაპარაკი "მიზეზს,
ერთი, ჩვენ ერთგვარი ყველა ცხადია, იცნობს კურსები
და ინსტრუქტორები და შეხვედრა ადგილებში და ყველა სახის
ჩვეულებრივი რამ უნივერსიტეტის
მაგრამ ის ასევე მიიღო რამდენიმე საინტერესო შესაძლებლობები
დიზაინი.
ასე გვეგონა ჩვენ გვინდა გამოვიყენოთ ცნება რა თქმა კატალოგი
და სავაჭრო ინსტრუმენტი მაგალითად, მთელ დღეს დასალაგებლად
ჩარჩო ზოგიერთი დიზაინი გადაწყვეტილებები, ჩვენ უნდა მიიღოს.
ასე რომ დავიწყოთ იქ.
დავუშვათ, რომ მე რეალურად სურდა წარმოადგენს სუპერ მარტივი
რა თქმა უნდა ფილტრი იარაღები.
და მარტივი მსოფლიო მე წარმომიდგენია და ერთი
რომელშიც არსებობს სპეციალური და არსებობს ინსტრუქტორები.
და მოდით ვივარაუდოთ, გულისთვის დისკუსია
რომ ყველა, რა თქმა უნდა ჰყავს მინიმუმ სახელი.
მოდით დაიწყოს ესკიზის ამ გარეთ.
მე ვაპირებ გამოვიყენო phpMyAdmin როგორც ფონდის,
ამიტომ ჩვენ არ უნდა აკრიფოთ out ყველა queries ხელით.
მაგრამ აქ ვარ, ჩემი courses50 მონაცემთა ბაზაში.
იმ შემთხვევაში, თუ იციან, ეს გამოგიგზავნით ძალიან ადვილი ერთხელ თქვენ ჩაყვინთვის
რათა თქვენი საკუთარი პროექტის თუ გსურთ გამოიყენოთ იგი.
მე ვაპირებ, რომ შევქმნათ მაგიდა სახელწოდებით კურსები
და მე შემიძლია მხოლოდ ვფიქრობ ერთ ველი
ახლა, სახელი, რა თქმა უნდა.
მე ვაპირებ წავიდეთ წინ და ვთქვათ მომეცი ერთი სვეტი.
ახლა, როგორც გახსოვთ თქვენ მიიღებთ ინტერფეისი, რომელიც ცოტა
მოსწონს ეს.
და სხვა upside გულწრფელად საქართველოს phpMyAdmin არის, რომ ეს ერთგვარი
თვითმმართველობის ვამზადებ და რომ მეშვეობით dropdowns, თქვენ შეგიძლიათ დაალაგოთ
ვხედავთ, თუ რა თქვენი შესაძლო დიზაინის გადაწყვეტილებები.
ამიტომ მე ვაპირებ მისცეს ყველა რა თქმა უნდა, სახელი.
ეს სახელი ამ სვეტში.
და რა მისი მონაცემები ტიპის?
ყველაზე მეტად თქვენ უნდა იცოდეს at ზოგიერთი ამ მონაცემთა ტიპები
ადრე გამოცდილება.
რა არის შესაბამისი კურსის სახელი?
Sharon?
>> Varchar.
>> OK, varchar რომელიც არის ცვლადი ჩარ.
და რა, რომ ნიშნავს უფრო ტექნიკურად?
[Inaudible შენიშვნა]
OK. ასე რომ სიმებიანი.
და var ასპექტი ეს იმას ნიშნავს, რა?
ცვლადი. მაგრამ რა ნიშნავს ეს?
ჰო?
[Inaudible შენიშვნა]
ზუსტად. ასე რომ, ეს ცვლადი რაოდენობის სიმბოლოებს
სიმებიანი up ზოგიერთი მაქსიმალური.
ასე რომ, აქ არის ჩვენი პირველი დიზაინი გადაწყვეტილება.
ჩვენ რეალურად უნდა გადაწყვიტოს რამდენი ბაიტი მაქსიმალურად
გამოყოს ყოველ ასეთ string.
საერთოდ, გსურთ სახის არ მიიღოს იგი ძალიან მცირე,
არ მიიღოს იგი ძალიან დიდი 'გამოიწვიოს აშკარა
თუ ძალიან მცირე, თქვენ მხოლოდ ვაპირებთ დავიწყოთ truncating მონაცემები
და თქვენ დაკარგავთ ინფორმაციას.
და თუ ეს ძალიან დიდი, თქვენ მხოლოდ სახის ვეუბნებოდი მონაცემთა ბაზა
ელის და ოპტიმიზაცია მეტი მონაცემები
ვიდრე ეს შეიძლება რეალურად ოდესმე მისაღებად.
რა არის გონივრული განცდა ნომერი, სახელი, რა თქმა უნდა?
60? OK, ასე 60.
რომ როგორც ჩანს, საკმაოდ გონივრული
მანამ, სანამ იქ არ არის გამონაკლისი, რომ.
იქ ნამდვილად არ მძიმე, სწრაფი წესით.
უნდა იყოს პატიოსანი, for ისტორიული მიზეზების გამო ბევრი
ხალხი აირჩევს 255 'გამოიწვიოს წელია, იყო ერთგვარი
ნაგულისხმები მაქსიმალური გამოყენებით 8 bytes - 8 ბიტი, როგორც თქვენი counter.
მინდა მეტი [inaudible] შეიძლება გამოიყენოს ძალაუფლება 2
მაგრამ ეს ერთგვარი შეუსაბამო.
ასე რომ ჩვენ შეგვიძლია წავიდეთ ერთად 60.
რომ როგორც ჩანს, გონივრული თუ ისე დიდი ხნის
როგორც ჩვენ საბოლოოდ არ ვნანობ ამას 'გამოიწვიოს, რომ არის ზედა ზღვარი.
ახლა, ვფიქრობ, საპირისპირო გადაწყვეტილება იქნა,
არ ცვლადი chars მაგრამ მხოლოდ char სფეროში.
ასე განსხვავებით C და C + +, char არ ნიშნავს, რომ ერთი char
და მონაცემთა ბაზები, ზოგადად ნიშნავს ფიქსირებული რაოდენობის
სიმბოლოების სიმებიანი.
რა იქნება upside ან / და downside ჩემი ვირჩევთ 60
ამისთვის char სფეროში, ნაცვლად varchar?
სწორედ ეს არის პირველი სახის გადაწყვეტილება თქვენ უნდა გააკეთოთ
ინსპექტირებისას [ფონეტიკური] out საპროექტო თქვენი პარტნიორებთან.
ჰო, Sharon ერთხელ.
[Inaudible შენიშვნა]
კარგი. ასე რომ, თუ სახელი არის ნაკლები
60 მაშინ თქვენ გაყვანაა რასაც delta არის
შორის 60 და ფაქტობრივი სიგრძეზე.
ასე რომ უბრალოდ გრძნობს wasteful, უფრო bytes ვიდრე გჭირდებათ.
მაგრამ რატომ არსებობს?
რა თქმა უნდა, არსებობს გარკვეული upside.
ჰო?
[Inaudible შენიშვნა]
დარწმუნებული ვარ. ასე რომ, ზოგჯერ ალბათ იცით ფიქსირებული ნომერი
პერსონაჟი, როგორიცაა 10 ციფრისგან განთავსების ტელეფონის ნომერი მაგალითად.
მაგრამ ვინ ზრუნავს, როგორც რატომ არ უბრალოდ, ვამბობთ, 11 მაინც
ან რატომ არ ამბობენ, რომ 60 მაინც ერთად varchar?
რა უპირატესობა მივიღებთ იცის და პროექტირების
ფიქსირებული ნომერი გმირები?
[Inaudible შენიშვნა]
თქვენ სწორ გზაზე.
ასე რომ ოპტიმიზაციის მაგრამ ეს მართლაც of - yeah?
[Inaudible შენიშვნა]
OK. კარგი. მოდით ფოკუსირება რომ ბოლო ნაწილი.
ასე რომ ინდექსირებას.
გამოდის, რომ, თუ თქვენ ვიცი წინასწარ, რომ ყველა
თქვენი სფეროებში ვაპირებთ უნდა იყოს 60 სიმბოლო,
თქვენ ნამდვილად ვფიქრობ, ამ სვეტი Excel მონაცემთა ბაზა
როგორც ძალიან სწორი, მარცხენა გამართლებული
და მარჯვენა გამართლებული კიდეები
რადგან ყველა სვეტი 60 სიმბოლო კარს.
ეს იმას ნიშნავს, რომ ეს string არის 60 პერსონაჟი მოშორებით
ამ სტრიქონს, 60 გმირები დაშორებით ეს ერთი
და ეს ერთი და ეს ერთი.
ასე რომ, ისევე, როგორც, როდესაც თქვენ შეიტყო C, გქონდათ შემთხვევითი წვდომის
მსოფლიოში მასივები, იგივე იდეა აქ.
თუ თქვენი სვეტი არის წარმოდგენილი გამოყენებით მხოლოდ ფიქსირებული სიგრძის სიმბოლო,
თქვენ შეგიძლიათ ეფექტურად ინდექსი შემთხვევით 60 ან 120 ან 180
და შეგიძლიათ მიიღოთ ერთი ინდივიდუალურად სიმები ბევრად უფრო სწრაფად.
თუ ნაცვლად, თქვენი სვეტი ჰქონდა სწორი მარცხენა კიდეზე ასე ვთქვათ
მაგრამ ძალიან rugged უფლება ზღვარი სვეტი
იმიტომ, რომ თქვენ შეიძლება 10 პერსონაჟი,
15 პერსონაჟი, 5 სიმბოლო.
ასე რომ, ეს ძალიან არის tradeoff.
და ზოგჯერ მხოლოდ მეშვეობით სასამართლო და შეცდომა
და ექსპერიმენტების შეგიძლიათ გაერკვნენ
out, რა უფლება დარეკეთ არის, მაგრამ ეს არის სახის
კითხვები, რომ უნდა აპირებს
თქვენი გონება და / ან მაგიდები როდესაც საქმე დრო
დიზაინი თქვენს მონაცემთა ბაზაში.
ასე რომ, არ არის აუცილებელი მარჯვენა პასუხი გასცეს, მაგრამ თქვენ უნდა
მინიმუმ, განაჩენის ან ორი გათვალისწინებით
სარეზერვო რასაც გადაწყვეტილება თქვენ.
ყველა უფლება.
მოდით შენარჩუნება სენსორული in მოთხოვნა აქ
რომ phpMyAdmin-ის UI.
ასე რომ, რა მნიშვნელობა სახელი, უნდა მიუთითოთ
რომ ეს უნდა იყოს აქვს რა ღირებულება null?
რას ფიქრობთ?
შეიძლება, რა თქმა უნდა აქვს null სახელი?
უბრალოდ გრძნობს უცნაური, არა?
მე ვერ ვფიქრობ ნებისმიერი უსახელო კურსები ჰარვარდის.
და იქნებ არსებობს გარკვეული ბუნდოვანი კუთხეში შემთხვევაში
სადაც, რა თქმა უნდა ენიჭება ნომერი
და პროფესორი არ აქვს შერჩეული სახელი, მაგრამ -
ვგულისხმობ, რომ heck რომ,
ისევე როგორც მოდით კი არ გადაიტვირთოთ მხარს უჭერს, რომ.
მე ვიტყოდი, რომ ინტერესი ლამაზი სუფთა მონაცემთა ბაზა,
მოდით დააკონკრეტა, რომ თქვენ არ შეგიძლიათ აქვს ნაგულისხმევი მნიშვნელობა null.
გარდა ამისა, ჩვენ შეგვიძლია გავაკეთოთ, რაღაც untitled რა თქმა უნდა,
რომელიც არ არის განსხვავებით Mac OS და Windows გაკეთება
როდესაც თქვენ შექმნით საქაღალდე, მაგალითად,
მაგრამ არსებობს, რაც უფრო გრძნობა
ასე რომ, ადამიანის ვხედავ რაღაც.
ჩვენ ვსაუბრობთ უკან ბოლოს მონაცემთა ბაზა, სავარაუდოდ,
კურსის კატალოგი.
ამიტომ, მე ნამდვილად არ კი მომწონს იდეა ვაძლევთ მას
in untitled რა თქმა უნდა, სახელები
რადგან ეს არ არის ნამდვილად აპირებს დაეხმაროს ვინმეს.
მოდით დატოვოს ეს არა, რაც იმას ნიშნავს, რომ როდესაც თქვენ ჩადეთ
ამ მონაცემთა ბაზაში, თქვენ უნდა მისცეს ყველა რა თქმა უნდა, სახელი
რომელიც გრძნობს პატარა სუფთა ჩემთვის.
ყველა უფლება.
ასე რომ, სენსორული შემდგომი შედარების.
ეს უბრალოდ უნდა გააკეთოს ხასიათი კომპლექტი და whatnot
თუ თქვენ ოდესმე მინახავს აღნიშნავს, შვედეთის
in phpMyAdmin, რომ 'გამოიწვიოს ხალხს
რომელმაც დაწერა phpMyAdmin იყო შვედური.
ის არის, რომ PHP თუ MySQL?
ერთი ორი, მე დაავიწყდა offhand.
მაგრამ ეს ისტორიული მიზეზები
მაგრამ შეგიძლიათ გამოხატოს ყველა ხასიათი ინგლისური
რომ შეიძლება შვედეთის ასე რომ დიდწილად არასამთავრობო საკითხი.
CS50 ელექტრო მოწყობილობების, თუმცა არის გამოყენებული - არის გამოიყენოს UTF-8,
ასე რომ ზოგადად უნდა არ პოპ up თქვენთვის.
ატრიბუტები.
ასე რომ, არც ერთი მათგანი მართლაც შესაბამისი აქ.
მე ვხედავ, ორობითი, ხელმოუწერელი, ხელმოუწერელი zerofill,
და განახლება მიმდინარე დროის ნიშნულს.
ეს ველი ვრცელდება მხოლოდ ზოგიერთი რიცხვითი ველი
ან გარკვეული დროის სფეროებში.
ამიტომ ჩვენ გამოტოვოთ მეტი რომ მთლიანად.
Null. შეიძლება ეს ველი შეიძლება იყოს?
ასე რომ, არა. ჩვენ უკვე გვაქვს რომ სახის საუბარი.
ასე რომ, ჩვენ არ გვინდა, საწყისი მნიშვნელობა.
ჩვენ არ გვინდა, რომ იყოს null.
რაც შეეხება ინდექსი?
არსებობს ოთხი არჩევანი აქ.
რას ნიშნავს ეს, თუ ჩვენ დააკონკრეტა
რომ ამ რიგის აპირებს უნდა იყოს ძირითადი გასაღები?
ფიქრი თავში CS50 ან CS165 თუ თქვენ მიღებული იგი.
[Inaudible შენიშვნა]
ზუსტად. ასე რომ, პირველადი გასაღები by განმარტება ველი
რომ ცალსახად განსაზღვრავს ყოველი რიგი ამ მაგიდასთან.
და შეგიძლიათ დაეყრდნოთ ეს უნდა გააკეთოს რომ უნიკალური იდენტიფიკაცია.
ასე რომ, რას ნიშნავს მაშინ უბრალოდ იყოს უნიკალური?
ისე, სახის ეს ორი აქვს სახის
ქვეშ გავლენა ქვევმოთ hood.
მაგრამ ზოგადად, პირველადი გასაღები სახის ხელშეკრულების თქვენ
მონაცემთა ბაზაში რამ.
როდესაც გავაკეთო queries ეძებს თქმა უნდა,
მე ვაპირებ გამოიყენოს ეს კონკრეტულ სფეროში.
და ჩვენ დავბრუნდებით ამიტომ ჩვენ შეიძლება ჰქონდეს ორი
ასეთი არჩევანი აქ, პირველადი ან უნიკალური.
უნიკალური უბრალოდ ამბობს, ამ სფეროში იქნება უნიკალური
მაგრამ მე ნამდვილად არ გაუკეთებია სახის ზეპირი ვალდებულება აქ
გამოიყენოს ეს ველი გავაკეთებ ძებნა
მიზეზების გამო ჩვენ გამოგიგზავნით ვხედავ რაღაც მომენტში.
იმ შემთხვევაში, თუ ჩვენ დააკონკრეტა ნაცვლად ინდექსი, რას ნიშნავს ეს მიუთითოთ
რომ სფეროში ინდექსი ეს?
ჰო?
[Inaudible შენიშვნა]
ზუსტად. ეს იყო ოპტიმიზირებულია შეკითხვაზე.
ასე, რომ თქვენ - მონაცემთა ბაზის სერვერი, Oracle, MySQL, რასაც,
ზოგადად მუშაობა მისი ჯადოსნური კულისებში კიდევ ერთხელ ვაწვებით
ეს ვარიანტი და შემდეგ დააჭირეთ შენახვა და ის ააშენებს
up, როგორც წესი, ხის სტრუქტურა, B-ხეები თუ ვნახე
ან მოსმენილი off რომელიც ძალიან მოკლე, ლამაზი ხე
რომელიც გაძლევთ ძალიან ლამაზი ლოგარითმული თვისებები
როცა ძებნას მონაცემები.
თუ თქვენ არ დააკონკრეტა ინდექსი სფეროში, რა ხდება
უნდა იყოს გაშვებული დრო ძებნას
განთავსების თვითნებური [ფონეტიკური] რა თქმა უნდა, სახელი?
რა არის ეს?
[Inaudible შენიშვნა]
Oh, [inaudible], ხაზოვანი, არა?
თუ ეს არ არსებობს ოპტიმიზაციით ეძლევა მონაცემთა ბაზაში
და თქვენ არ ფიქრობდა მონაცემთა ბაზა, თუ რა სახის
მონაცემთა ელის.
საუკეთესო შეგიძლიათ გააკეთოთ შემოწმება ყველაფერი, როდესაც თქვენ ეძებს
ზოგიერთი ღირებულება, განსაკუთრებით თუ არ შეეძლო,
რეალურად იყოს ეგზ.
სრულ ტექსტში იმავდროულად, ჩვენ გამოგიგზავნით ტალღა ჩვენს ხელში ახლა.
მაგრამ ზოგადად, ეს არის ტიპის ინდექსი, რომელიც საშუალებას გაძლევთ
ოპტიმიზაცია განთავსების საკვანძო სიტყვა ეძებს სფეროში.
ასე რომ, ეს შეიძლება იყოს კარგი კანდიდატი
განთავსების მოსწონს კურსის აღწერა სადაც თქვენ ალბათ რამდენიმე
პუნქტები და თქვენ შეიძლება გსურთ substring მატჩები.
სრულ ტექსტში ზოგადად მიადევნე თქვენ, რომ საკმაოდ ეფექტურად.
AI, ეს არის საშინელი სახის განმარტება, მაგრამ თუ ჩვენ hover
მას დაინახავთ ავტო იყოს.
არ გამოიყენება როგორც აქ მაგრამ ავტომობილი ბიჯი არის სასარგებლო
განთავსების როგორიცაა int სფეროში იმიტომ, მონაცემთა ბაზის იზრუნებს
პროცესის plus plusing ყოველ დროს, თქვენ ამის გაკეთება ჩანართით.
ასე რომ, მაშინაც კი, თუ ორი ადამიანი ფაქტიურად დააწკაპუნეთ შეტანა
ამავე დროს და ცდილობენ შექმნათ row როგორღაც
მონაცემთა ბაზაში, ერთი მათ მიიღებთ ნომერი I,
მეორე მიიღებს ნომერი I პლუს 1.
თქვენ არ ინერვიულოთ
დაახლოებით ორი ნომერი, რომ დაავალა იდენტურად თუ იყო
ამის გაკეთება თავს კოდი.
ყველა უფლება.
ასე რომ, როგორი მინდა, სადაც ჩვენ მივიღეთ სახელი უნდა იყოს.
მოდით დააჭირეთ Save.
ეს არის კარგი დიზაინი განთავსების მონაცემთა ბაზის ცხრილი?
და როგორც განზე, თუ ჟანგიანი on SQL ან თქვენ ერთგვარი
უბრალოდ ყოველთვის დახუჭავს თვალი რა ხდებოდა,
მე არ აკრეფილი ზუსტად რომ -
იმ სამი ხაზი, რომ შავი და თეთრი prompt
ამ ბრძანების კლიენტი ან მე შეეძლო
რომ კოდი პროგრამულად.
ასე რომ, ყველა phpMyAdmin აკეთებს ჩემთვის, მხოლოდ გადარჩენის ჩემთვის ძალისხმევა
დამახსოვრების ზოგჯერ სინტაქსი და აკრეფით გარეთ
ისევე როგორც tedious ბრძანებები.
ყველა უფლება.
ასე რომ, ეს არ იგრძნონ საუკეთესო დიზაინი, ერთ სფეროში მაგიდასთან.
ახლა ჩვენ შეგვეძლო რამ, როგორიცაა, პროფესორ
და ლოკაციები და აღწერილობებიდან.
მაგრამ მაშინაც, გამოყენებით მხოლოდ სახელი
იდენტიფიცირება კურსები ვერ გრძნობს იდეალური.
რა საერთოდ არ ჩვენ გავაკეთეთ წარსულში
თუ თქვენ გამოიყენება მონაცემთა ბაზების ცალსახად რიგები?
არ იყენებს varchars წესი.
ჰო?
[Inaudible შენიშვნა]
ჰო. ასე რომ, როგორც წესი, რა თქმა უნდა, ID.
ასე რომ, ყველაზე გავრცელებული მივუდგეთ აქ განსაკუთრებით
გამოყენებისას ფარგლებში რეალურად მხოლოდ
გამოიყენოს ნომერი, როგორც რიცხვი.
ნება მომეცით, წავიდეთ წინ და ამის გაკეთება.
და ჩვენ შეგვიძლია გავაკეთოთ ეს რამდენიმე გზა, მაგრამ ცნობა, თუ მე zoom
წლის ბოლოში აქ.
მე ვაპირებ ვთქვა დაამატოთ ერთი სვეტების ბოლოს მაგიდაზე,
ზოგადად, მხოლოდ ვიზუალური ფონდის თქვენ დააყენა პირადობის მოწმობა
დასაწყისში მაგიდაზე მიუხედავად იმისა, რომ ეს არ არის რეალური
ფუნქციური გავლენა.
ამიტომ მე ვაპირებ ვთქვა, დაამატეთ ერთი სვეტები
დასაწყისში მაგიდაზე.
მე ვაპირებ დააჭირეთ ზემოთ, რომ მაძლევს უკან ამ UI აქ.
მოდით მოვუწოდებთ ამ პირადობის მოწმობა.
თუ ჩვენ ვფიქრობთ, რომ ჩვენ ვაპირებთ აქვს აღარ კეთდება 4 მილიონი კურსები
int სფეროში კარგად არის.
ჩვენ კი მცირდება მას
მაგრამ სივრცე არის იაფი ასე რომ, ვინც ნამდვილად ზრუნავს.
მაგრამ, ჩვენ ვცდილობთ დაწერა Facebook ახლა,
არ უნდა იყოს ცუდი რამ მოსალოდნელია დიდი ints
, რომელიც გვაძლევს 64-bit ints
მაგრამ მაშინ თქვენ სიტყვასიტყვით გააორმაგოს რაოდენობის ბიტი
რომ თქვენ იყენებთ, იმდენად უმნიშვნელო tradeoff
მაგრამ რაღაც განიხილოს.
ახლა, ეს არის დამაბნეველი მემკვიდრეობა რამ.
თქვენ ალბათ გახსოვთ გამოყენებით MySQL
რომ ნებისმიერ დროს განაცხადოს int ველი თქვენ ხშირად ვხედავ ნომერი
შემდეგ იგი, როგორც ნომერი 10.
მას აქვს არაფერ შუაშია ზომა ნომერი
ან რაოდენობის ბიტი.
რომ უნდა გააკეთოს ნომრით სიმბოლო, რომელიც გამოიყენება
ვიზუალურად ჩვენება რომ int ველი
როდესაც გამოყენებით ტერმინალის ფანჯარაში.
ასე რომ, ჩვენ ვხედავთ, რომ ამ მომენტში.
ასე რომ, არ შეცდებით აკრეფით ნომერი
იქ მიუხედავად იმისა, რომ ეფექტურად გვეკითხებიან
ერთი აქ.
აქ, მე ვაპირებ წავიდეთ წინ და ვთქვათ unsigned.
არ არსებობს მიზეზი, რომ ნარჩენები ყველა ჩვენი უარყოფითი რიცხვები
მას შემდეგ, რაც მონაცემთა ბაზა ზოგადად აპირებს
უნდა ვივარაუდოთ, დადებითი ღირებულებები ან null.
ID ნამდვილად არ უნდა იყოს null.
და რას ფიქრობთ ინდექსი ამ ID სფეროში?
მოდით ეს პირველადი.
ასე რომ, რა, თუ, თუმცა, როგორც შემიძლია მხოლოდ ვფიქრობ ერთი CS164 კურსი
ჰარვარდის და მხოლოდ ერთი CS50 რა თქმა უნდა, ჰარვარდის
და ეს საკმაოდ ბევრად ჭეშმარიტი საერთო
რომ იქ შესაძლოა, გამონაკლისი [Inaudible] ორივე სემესტრი
ან რაღაც უცნაური იგრძნობა.
მაგრამ უფრო ფუნდამენტურად, რატომ არის უკეთესი
გამოყენება რიცხვითი განუყოფელი ID, რომ ცალსახად იდენტიფიცირება სპეციალური საკმაოდ
ვიდრე უბრალოდ უნიკალური სიმებიანი?
ჰო?
[Inaudible შენიშვნა]
OK, საინტერესო.
ასე რომ, თუ ჩვენ გვქონდა ერთგვარი ჯვარი ჩამოთვლილი კურსები.
ასე რომ, კარგი მაგალითი.
არ ვარ დარწმუნებული, მე გადაჭრით რომ მიუხედავად იმისა,
მათთვის იგივე საიდენტიფიკაციო ნომერი, თუ ეს
სადაც თქვენ აპირებს, რომ.
არა? OK. მაგრამ ნამდვილად კუთხეში შემთხვევაში განიხილოს.
თუ არსებობს სახის - ჩვენ გვჭირდება გარკვეული სახის
საქართველოს aliasing პოტენციურად.
[Inaudible შენიშვნა]
დარწმუნებული ვარ.
[Inaudible შენიშვნა]
ეს არის კარგი მაგალითი.
სახელი შეიძლება შეიცვალოს მეტი დროს, სრულიად გონივრული.
რა?
[Inaudible შენიშვნა]
უკაცრავად, ამბობენ, რომ ერთხელ.
[Inaudible შენიშვნა]
ჰო, ზუსტად.
ასე რომ, რეალურად, რომ რეალური clincher არის
რომ გამოყენებით 32-bit int არის ალბათ იქნება უფრო სწრაფად,
ვიდრე ზოგიერთი ცვლადის სიგრძით char სფეროში.
პირველ შემთხვევაში, შეიძლება ფაქტიურად შეესაბამება რეესტრში,
რომ აღარაფერი ვთქვათ ბევრი მცირე მეხსიერების კვალი.
ამ უკანასკნელ შემთხვევაში, თქვენ აპირებს უნდა გავაკეთოთ კურორტის [ფონეტიკური]
სიმებიანი შედარებები, რომელიც თავს ერთად წრფივი
ზომა string პოტენციურად.
ასე რომ, ეს უბრალოდ ლამაზი ოპტიმიზაცია,
და, კერძოდ, ის აპირებს
მოდით გავაკეთოთ რა ეწოდება უერთდება უფრო ეფექტურად
რაღაც მომენტში.
მოდით გავაკეთოთ ეს.
ჩვენ დააკონკრეტა, რომ ეს არის პირველადი
იმიტომ, რომ მე არ განსაკუთრებით მინდა მაინტერესებს ან ვფიქრობ
იმაზე, თუ რა რაოდენობის არის რა თქმა უნდა.
დაე მათ მიიღებს რასაც ღირებულებების უნდათ.
მე ვაპირებ ვთქვა ავტომობილი ბიჯი ასე, რომ შეიძლება გამოაცხადოს, რომ დეტალურად.
როგორც განზე ალბათ ვიცი, რომ ჰარვარდის
მაინც აქვს უნიკალური ციფრები კურსები.
მე არ მაქვს მეხსიერებაში რა ამ კურსებს.
მე ვიცი, რომ CS50-ს კატალოგი ნომერი 4949,
სრულიად უკანონო.
მაგრამ უცნაური კუთხეში შემთხვევა, რომ თუნდაც
ამ registrarial ნაგავსაყრელი რა თქმა უნდა, კატალოგი მონაცემებით,
ზოგჯერ კურსები, ძველი კურსები აქვს ხმების მოსწონს 4.
მაგრამ ტექნიკურად, რომ სფეროში char ველი
რომ უბრალოდ იწყება 0004.
ასე რომ აქ ძალიან, თქვენ უნდა იყოს ფრთხილად გამორჩევის
შორის რამ, როგორიცაა რა თქმა კატალოგის ნომერი
რომელიც შესაძლოა, ადამიანის ცნება ფიქსირებული სიგრძის, 0004,
და თქვენ არ უნდა შეინახოს რომ მაგალითად ints.
ასეთი სახის ველი უნდა ინახება მის ფარგლებს გარეთ.
ასე რომ, ჰარვარდის, თუ ჩვენ რეალურად მიღების კურსი
სავაჭრო ინსტრუმენტი, ის ალბათ, არ არის საკმარისი
ნომერზე კურსები მხოლოდ 1, 2, 3, 4.
ჩვენ ალბათ აპირებს უნდა
აქვს სხვა სფეროში ე.წ. კატალოგი ნომერი, ან,
, რომელიც ასევე უნდა უნდა იყოს უნიკალური Based
ადამიანის კონვენციების აქ მაგრამ ეს არ არის საუკეთესო არჩევანი
უნიკალური იდენტიფიკატორი, რადგან ეს შეიძლება იყოს ცვლადი სიგრძის.
ეს შეიძლება არ იყოს ოთხი სიმბოლო, ეს შეიძლება იყოს ხუთი.
ფაქტობრივად, მე ვფიქრობ, რომ რამდენიმე წლის წინ ისინი გადაადგილება
ხუთ გმირები "მიზეზი არსებობს ზე მეტი 999 სპეციალური
სულ ან რაღაც მსგავსი რომ, ან 9,999 კურსი.
ასე, რომ, შესაძლოა, იყოს მაგალითი სადაც ველი არ არის პირველადი
მაგრამ ეს უნდა იყოს უნიკალური.
და ელექტრონული ფოსტის მისამართი არის კიდევ ერთი.
თქვენ ალბათ გვინდა, რომ იყოს უნიკალური
მაგრამ არ არის აუცილებელი თქვენი პირველადი გასაღები.
ყველა უფლება.
ნება მომეცით bang out სხვა მაგიდა უფრო სწრაფად, ვიდრე ეს ერთი.
ამიტომ მე ვაპირებ მოვუწოდო ამ ერთი ინსტრუქტორთა და მე ვაპირებ
რათა სულ ნომერი სვეტების ორი.
მე ვაპირებ ვისწავლოთ my გაკვეთილი ბოლო დროს.
მე ვაპირებ მოვუწოდო პირველი სვეტი პირადობის მოწმობა.
მე ვაპირებ მოვუწოდო მეორე სვეტი სახელი.
მე ასევე ვაპირებ ამის გაკეთებას varchar.
მე ვაპირებ ვივარაუდოთ, არ პროფესორი აქვს სახელი აღარ
60 პერსონაჟი, თუმცა, ახლა ეს შეიძლება უბიძგებს მას
რამდენიმე ხნის სახელები, სპეციალური ადამიანებს შუა სახელები.
ეს ჯარიმა დღეს.
მოდით გადახვევა მეტი აქ.
მოდით ამ ხელმოუწერელი ერთხელ.
მოდით ამ პირველად.
და ჩვენ საშუალებას დუბლიკატი სახელები
თუ არსებობს ორი John Smith-ის ან რამე მაგდაგვარს.
და ახლა ჩვენ გვაქვს ორი მაგიდები.
ახლა, ამ სთხოვს კითხვაზე, როგორ შემიძლია ურთიერთობა
in ინსტრუქტორი რა თქმა უნდა?
ვგრძნობ, როგორიცაა სახის მივიღე ადრე თავს
რადგან თუ ინსტრუქტორი ასწავლის რა თქმა უნდა,
ჩემი პირველი ინსტიქტი იქნება რეალურად იყოს დაბრუნდეს
კურსები გააცნობიეროს, ამ არ იყო კარგი იდეა.
ნება მომეცით რეალურად დაამატოთ ერთი სვეტი ბოლოს მაგიდაზე,
დააჭირეთ ზემოთ, და მე მოვუწოდებთ ამ ინსტრუქტორი.
და გავაკეთებ ამ varchar და გავაკეთებ ამ 60.
და იქნებ მე დატოვონ ეს null ახლა
იმ შემთხვევაში, თუ, რა თქმა უნდა არ აქვს უკვე ხელმოუწერელი in ინსტრუქტორი
რომელიც ზოგჯერ ხდება ადრე ვადა იწყება და დააჭირეთ Save.
რომელიც ამ დიზაინის გირჩევნიათ?
პირველი, სადაც ჩვენ ცალკე ინსტრუქტორის მაგიდა
ან მეორე, სადაც ჩვენ უბრალოდ დაამატოთ სფეროში, რა თქმა უნდა?
ასე რომ, ეს მჭიდროდ დაუკავშირონ ინსტრუქტორი რა თქმა უნდა.
[Inaudible შენიშვნა]
OK. კარგი. მაგრამ ნება მომეცით დააყენებს უკან.
უბრალოდ იმდენად მარტივია, ისევე როგორც მე არ შემიძლია მხოლოდ ჩაწერეთ პირის სახელი
ამ მაგიდასთან, როგორც აუცილებლად რომელსაც აქვს გარკვეული მნიშვნელობა, ან -?
[Inaudible შენიშვნა]
ყველა უფლება.
ასევე, ნება მომეცით რთული აქ.
ნება მომეცით ვთქვა, რომ ეს კურსი არის CS51
და მე ვიცი, რომ ის ასწავლიდა წელს ორი ადამიანი.
ასე რომ, ჰენრი Leitner და Jesse tov მაგრამ -
ასე რომ მე უბრალოდ დააყენა მძიმე შორის, უფლება.
მე ნამდვილად კარგი CSV საწყისი yesteryear.
[Inaudible შენიშვნა]
სწორედ უფლება.
როგორც კი მიმართავს რომ მსგავსი რამ,
რომელიც შესაძლოა გრძნობენ გონივრული და იგრძნობთ
ისევე, როგორც ეს არის სახის ჭკვიანი.
მე სახის სესხების ერთი იდეა, რომელიც კარგად მუშაობს,
სესხება ახალი იდეა და სახის აერთიანებს მათ.
თქვენ სახის მთლიანად დაამარცხა წერტილი გამოყენებით მონაცემთა ბაზაში
პირველ ადგილზე "იწვევს თუ ერთი ღირებულებები
გამოყენება სწრაფად ძიება იმის გამო, რომ სხვადასხვა ინდექსები
და მაგიდები, რომ შეიძლება აშენდეს up თქვენ
მიერ მონაცემთა ბაზის ძრავა თავად.
ახლა, თუ გსურთ მოძებნოთ ყველა სპეციალური
რომ Jesse ასწავლის, ახლა თქვენ გაქვთ რომ არ substring შესატყვისი ყველა
საქართველოს ინსტრუქტორი სფეროებში,
რომელიც ეფექტურად ნიშნავს წრფივი ძებნა კვლავ "მიზეზი გაქვთ
იპოვოს ამ თვითნებური კომპლექტი სამი გმირები ვერსად
in ინსტრუქტორი ველი წინ უძღოდა
ფარგლებში იქნებ შემდეგ მძიმე.
ასე რომ, ეს ნამდვილად კარგს არაფერს უქადის.
ნება მომეცით დაბრუნდეს მაგიდაზე.
ნება მომეცით წავიდეთ წინ კურსები, გაუქმება, რომ.
მე ვაპირებ უბრალოდ წასვლა წინ და ვარდნა ამ სფეროში.
და თუ გსურთ ამისათვის ხელით,
სინტაქსი არის ALTER TABLE სპეციალური DROP ინსტრუქტორი.
მოდით წავიდეთ წინ და დადებითია, რომ.
და დავუბრუნდეთ ამ ადრე იდეა
სადაც მე ცალკე მაგიდა ინსტრუქტორები.
მაგრამ ახლა ეს გრძნობს პატარა ისევე როგორც შემიძლია დააყენა კურსი
რა თქმა უნდა, მაგიდა და ინსტრუქტორი
in ინსტრუქტორი მაგიდასთან, მაგრამ მე როგორღაც უნდა დაუკავშირონ ორი.
და რა გამოდიან ინიციატივით, ჩვენ ამის გაკეთება?
[Inaudible შენიშვნა]
კარგი. მოდით გავაკეთოთ ეს.
და თქვენ ვერ მოვუწოდებთ ამ მაგიდა თეორიულად არაფერი.
მე ვაპირებ შეგნებულად ეძახით რა ბევრი
საქართველოს ფარგლებში მოხდება ეძახით, მათ შორის,
Laravel როგორც თქვენ ნახავთ ცოტა.
მე ვაპირებ მოვუწოდო მას, რა თქმა უნდა ხაზგასმით ინსტრუქტორი.
გამოყენება სინგულარული ამ შემთხვევაში, თითოეული სიტყვა
და ყველა ქვედა შემთხვევაში ერთხელ, და ასევე -
მაშინ ანბანური დალაგებულია მარცხნიდან მარჯვნივ.
ეს არის სრულიად უკანონო, მაგრამ ეს tends უნდა იყოს კონვენციის
ბევრი ამ ფარგლებში in PHP სხვა ენებზე.
რამდენი სვეტების მჭირდება in ეს, რაც ჩვენ მოვუწოდებთ შეუერთდეს მაგიდა,
შეუერთდება ორი სხვა მაგიდები ერთად?
სამი სვეტით?
რომელიც ერთ - ერთი, თუ რა უნდა იყოს?
[Inaudible შენიშვნა]
OK. კარგი. რომ მუშაობს.
და ჩვენ შეგვიძლია ტექნიკურად გაჭრა კუთხეში აქ, მაგრამ ბევრი
საქართველოს ფარგლებში, კერძოდ, მაინც მისცეს თუნდაც ამ სტრიქონების
უნიკალური პირადობის მოწმობა, მიუხედავად იმისა, სემანტიკურად row
რომ ჩვენ ნამდვილად აინტერესებს და სვეტები, რომ ჩვენ ნამდვილად აინტერესებს
შესახებ, რომლებიც ამ უკანასკნელის ორ რაც თქვენ თქვით, რა თქმა უნდა, ID
და ინსტრუქტორი მოწმობა.
მოდით გავაკეთოთ ეს.
მე მოვუწოდებ ამ ზედიზედ მხოლოდ პირადობის მოწმობა, ისევე, როგორც ჩვენ გავაკეთეთ ადრე.
მაგრამ ეს ერთი მე ვაპირებ მოვუწოდებთ რა თქმა უნდა, ID.
ეს ერთი მე ვაპირებ მოვუწოდებთ ინსტრუქტორი მოწმობა.
და მე ვაპირებ დააკონკრეტა, რომ ყველა
მათგან unsigned 'Cause მე მინდა
მაქსიმალურად ჩემი 4 მილიარდი int სპექტრი.
არც ერთი მათგანი არ უნდა იყოს null.
მე ვაპირებ დააკონკრეტა, რომ ID მაინც უნდა იყოს პირველადი.
ისევ და ისევ, ეს არის მხოლოდ კონვენციის,
ბევრი ფარგლებში მაშინაც კი, თუ თქვენ არ დასალაგებლად
საქართველოს ფუნდამენტურად უნდა უნიკალური იდენტიფიკატორი ზედიზედ,
თურმე ეს მოსახერხებელია კოდი, SQL, რომ აპირებს
ავტომატურად გამომუშავებული ჩვენთვის.
ასე რომ, მე დავტოვებთ, რომ როგორც პირველადი.
მაგრამ ახლა, მე სახის აქვს დიზაინის გადაწყვეტილება,
რა თქმა უნდა, ID და ინსტრუქტორი პირადობის მოწმობა.
რა ინდექსების თუ რომელიმე უნდა მიიღოს?
იმ შემთხვევაში, თუ მე დატოვება არ ინდექსები, რა გავლენა?
მოქმედება, როგორც ადრე, არა?
თუ არ არის ინდექსი, საუკეთესო შეგიძლიათ გააკეთოთ სახის
of [inaudible] მეშვეობით მთელი რამ ეძებს ნომრები.
ასე რომ არ იგრძნონ ჭკვიანი.
უნდა იყოს მთავარი?
რატომ არა?
რატომ არ მთავარი?
[Inaudible შენიშვნა]
სრულყოფილი. ასე რომ, ჩვენ გააფართოვოს out [ფონეტიკური] პირველადი.
ჩვენ უკვე აირჩია, რომ.
ასე რომ, უნდა იყოს უნიკალური?
[Inaudible შენიშვნა]
კარგი. ასე რომ, თუ თქვენ ვივარაუდოთ, ერთი ინსტრუქტორი პოსტი რა თქმა უნდა,
სრულიად ჯარიმა.
და რომ ნამდვილად საერთო საქმე
მაგრამ ჩვენ უკვე გადაიდო ერთი ალბათ ნაცნობი მაგალითი.
CS51 მიიღო ორი ინსტრუქტორის ამიტომ ჩვენ სახის
ახლა ბრალია ამ შემთხვევაში.
თუ გავაკეთეთ საშუალებას მხოლოდ ერთი ინსტრუქტორი,
ჩვენ შეგვიძლია რეალურად გავაკეთოთ გზა ერთად შეუერთდება მაგიდასთან საერთოდ,
დავუბრუნდეთ ადრე მიდგომა
და ამით არა პირის სახელი ალბათ, მაგრამ ინსტრუქტორის მოწმობა.
თუ იცით ყველა, რა თქმა უნდა, როგორც მხოლოდ ერთი ინსტრუქტორი შეგიძლიათ მხოლოდ
ერთი სვეტი.
მაგრამ ცვალებადობა არის რა მიიღო ჩვენს შევიდა უბედურება.
ყველა უფლება.
ასე რომ, უნდა იყოს უნიკალური?
მე სრული ტექსტი არ ვგრძნობ გამოიყენება.
როგორც ჩვენ განაცხადა, რომ ის,
განთავსების როგორიცაა substring შესატყვისი განთავსების აღწერილობებიდან.
ასე რომ, რაც შეეხება ინდექსი?
ისე, მაჩვენებელი, ალბათ, ჩვენი საუკეთესო კანდიდატი
რომელიც მოგვითხრობს MySQL ოპტიმიზაცია განთავსების ძებნა ამ
ან ნება მომეცით შემუშავება, ოპტიმიზაცია ძებნა ან უერთდება
როგორც ვნახავთ, რაღაც მომენტში
ასე რომ, ისინი ცოტა უფრო ეფექტური
არაფერი წმინდა სწორხაზოვანი.
არ მინდა ავტომობილზე increments ამ სფეროში?
ასე რომ არა, რადგან ჭეშმარიტი მშობელი ელემენტის არსებობს
in კურსი "მაგიდასთან.
ეს არის ის, სადაც ეს აპირებს მიიღოს პლუს,
პლუს, როდესაც ის რეალურად ჩასმული.
აქ, ამ ყველა აპირებს უნდა ხელით ჩასმული
ჩვენს მიერ სავარაუდოდ კოდი.
მოდით უბრალოდ მიუთითოთ რომ ორივე რა თქმა უნდა, ID
და ინსტრუქტორი ID აქვთ ინდექსები.
ახლა ჩვენ წავიდეთ წინ და შენახვა.
და ახლა, უბრალოდ რათა ნახოთ თქვენ მიმოწერა
შორის რა ლამაზი GUI მეგობრული ინტერფეისი
და command line ინტერფეისი.
ნება მომეცით წავიდეთ წინ და ნუ შემდეგ ამ MySQL ზოლზე.
მე ვაპირებ ვთქვა გამოყენების courses50
რომელიც თვითნებური სახელი მივეცი ამ მონაცემთა ბაზაში.
და ახლა, მე კი არა მახსოვს რა გავაკეთეთ.
ნება მომეცით, აკრიფოთ შოუ მაგიდები
და ზოგადად semicolons იქნება თქვენი მეგობარი აქ
დასრულება შეკითხვაზე.
და იქ არის.
ასე რომ აქ რიგები ან პირიქით მაგიდები, რომ ჩვენ გვაქვს აქ.
ახლა, მე დაგვავიწყდეს, თუ რა რა თქმა უნდა ჰგავს,
ნება მომეცით, არ აღწერს კურსები და ახლა მე ვხედავ სახის ASCII
ან მობილური რა phpMyAdmin აკეთებს
და მე ვხედავ, რომ ID არის int.
ის არის, რომ 10.
რას ნიშნავს ეს?
ეს უბრალოდ ნიშნავს, რომ როდესაც ის ნაჩვენები ის აპირებს
up 10 გმირები ტერმინალის ფანჯარაში.
ეს არის nullable?
არა, ეს არის პირველადი გასაღები.
შეიძლება აქვს ნაგულისხმებია?
მე და ზედმეტი რომელიც სპეციალური flags როგორიცაა ავტომატური იყოს.
მოდით უბრალოდ გავაკეთოთ რამოდენიმე სწრაფი ჩანართები აქ.
მე ვაპირებ წასვლა to - მოდით უბრალოდ, ვამბობთ.
მოდით შეცვლის სახელმწიფო slide
სადაც მე ერთგვარი წინასწარი მომზადება ამ.
ეს არის შემაჯამებელი შემდეგ სამივე იმ მაგიდები.
მე უკვე მხოლოდ ხელით აკრეფილი პირველი ბრძანება.
და აქ, მივედი ადრე და ჩაწერეთ სხვები თქვენ.
ეს არის მხოლოდ სტილისტური რამ.
საერთოდ, ძალიან ბევრი ადამიანი ჩაწერეთ SQL განცხადებები ყველა caps
და შემდეგ მაგიდასთან სახელები და სფეროში სახელები ქვედა შემთხვევაში,
თუ მხოლოდ იმიტომ, რომ სახის სადგამები
რა არის თქვენი ტერმინოლოგია და რა მონაცემთა ბაზაში სინტაქსი.
ასე რომ აქ გვაქვს სამი მაგიდები, კურსები, ინსტრუქტორები,
და კურსების ინსტრუქტორები.
In the slide მე მივიღე წინასწარ, მე არ მაქვს ID ველი
მაგრამ ეს არ არის რეალურად ცუდი რამ ყველა.
ჩვენ უბრალოდ ვხედავ მესამე სვეტი არსებობს.
ჰქონდა მე გაკეთდეს, რომ აქ?
ასე რომ, ახლა ნება მომეცით შესთავაზოს, რომ ვაკეთებთ bunch of insertions.
ასე რომ, აქ არის გარკვეული მონაცემები, მე zoom სისტემაში
ამიტომ მე ვაპირებ შესთავაზოს რომ კურსები,
ჩვენ მხოლოდ გაუმკლავდეთ სამი კურსი.
და მე აირჩია ამ სამი "მიზეზი, რომ ისინი წარმომადგენელი
ზოგიერთი ლამაზი - მათ აქვთ ზოგიერთი ლამაზი თვისებები.
CS1, CS50, CS51, ისინი აქვს მზარდი პირადობის მოწმობა
მაგრამ რა ID არის რა სრულიად შეუსაბამო.
ეს მხოლოდ იმისათვის, რომელშიც ისინი ავტომობილი დევს ჩემს მიერ.
როგორ შესახებ ინსტრუქტორები?
ახლა, რადგან ჰენრი Leitner ასწავლის ორივე CS1 და CS51,
ეს არის სახის სასურველი გავლენა ჩვენი დიზაინი.
და Jesse ასწავლის CS51 და Malan ასწავლის CS50.
ასე რომ, ახლა - უფრო სწორად ეს არის მხოლოდ იმ ხალხის უნიკალური პირადობის მოწმობა.
კურსები და ინსტრუქტორები, - რა თქმა უნდა, ინსტრუქტორები, შეამჩნევთ აქ.
რა თქმა უნდა, ID1, რომელიც იყო CS1 ისწავლება
by ინსტრუქტორი ID1 ვინ არის Henry.
რა თქმა უნდა, ID2, რომელიც მე ვფიქრობ, იყო CS50 ისწავლება
by ინსტრუქტორი ID2, რომელიც Malan.
და მერე ბოლოს, CS51 და შეამჩნევთ, ჩვენ გვაქვს ორი რიგები.
და ახლა სწორედ ამიტომ შეუერთდება მაგიდა არის ძლიერი ისწავლება
როგორც ჰენრი და Jesse.
ასე რომ, ეს ყველაფერი არის კარგი და კარგი,
მაგრამ შემიძლია ძლივს მახსოვს off დაბრუნება
ჩემი უფროსი ვინ ვინ არის აქ.
როგორ შეგიძლიათ შესაძლოა გამკლავება, რომ კოდი,
გარეშე მძიმე კოდი რამ?
ასევე, ეს არის სადაც SQL თავად იწყებს გახდეს ჩვენი მეგობარი.
და მე ვაპირებ შესთავაზოს, რომ ჩვენ შეგვიძლია აკრიფოთ შემდეგ.
მე ამისათვის in ფაქტობრივი ზოლზე.
ნება მომეცით წავიდეთ წინ და ჩადეთ ეს ყველაფერი.
ასე რომ, შევიდა სპეციალური მაგიდა მოდით ზუსტად ის, რაც ჩვენ გვქონდა
მომენტში წინ.
მე ვაპირებ წინ და აცხადებენ, მოდით ჩადეთ CS1 და CS50.
მოდით ჩადეთ რამდენიმე სტრიქონების ერთდროულად, CS51.
ახლა, ნება მომეცით წავიდეთ წინ და შენახვა.
ყველა უფლება, ასე რომ მე უბრალოდ აღდგენით, როგორც სწრაფად,
შემიძლია ურთიერთობები ჩვენ უბრალოდ დაინახა ეკრანზე.
და ასე რომ აქ გვაქვს Leitner, აქ ჩვენ Malan.
მოდით მივცეთ საკუთარ თავს მეორე რიგის, და tov.
ახლა ნება მომეცით გადარჩენა ამ.
და მე ვაკეთებ მათ შეგნებულად იმავე მიზნით.
არა, მე დაავიწყდა გაცემა ეს ავტომობილი იყოს.
ნება მომეცით სწრაფად დაფიქსირება ამ.
მე დაფიქსირება ამ ონლაინ კოდი.
რომ ვერ როგორც განზე.
ის ფაქტი, რომ მე ვერ შევძელი ჩადეთ Leitner და Malan
და tov ვერ მოხერხდა, იმიტომ, რომ მე არ მითითებული პირადობის მოწმობის ნომერი, მიუხედავად იმისა,
ის ელოდება ერთი და მე დაავიწყდა, რათა შეამოწმოს ავტომობილის წუთობრივი,
რაც იმას ნიშნავს, რომ ისინი ყველა by default მიღების ნულოვანი.
მაგრამ ეს მაშინ ეწინააღმდეგება, რომელიც ქონება, რომელიც ჩვენ მითითებული.
პირველადი გასაღები დაირღვა ასე რომ არც კი ნება მომეცით ამის გაკეთება.
ნება მომეცით დაფიქსირება ამ.
ახლა, ნება მომეცით დაბრუნდეს ჩადეთ tab აქ და დააკონკრეტა
რომ მინდა Leitner, Malan და კიდევ ერთი მწკრივი, tov.
და ახლა ბოლოს, მხოლოდ ერთი, რომ ცოტა მძიმე
უნდა გვახსოვდეს, რა თქმა უნდა, ინსტრუქტორი.
მოდით ჩადეთ ახლა, რა თქმა უნდა, ID1 არის ინსტრუქტორი ID1
ასე რომ CS1 და ჰენრი.
რა თქმა უნდა, ID2 არის ინსტრუქტორი ID2 რომელიც CS50 და Malan.
და მერე ბოლო პირობა ჩვენ ფიქრი არის რა თქმა უნდა, ID3
რომელიც CS51, ისწავლება
by კურსი ინსტრუქტორი 1, რომელიც Henry.
და სამი ასევე ისწავლება 3, რომელიც tov.
ასე რომ იმედია ახლა ჩვენ recreated ამ -
Damn it, მე იგივე.
რა თქმა უნდა, ინსტრუქტორი სჭირდება ავტომობილზე იყოს.
ყველა უფლება.
მე ამის გაკეთება სწრაფად, ამ დროს, რა თქმა უნდა, 1, რა თქმა უნდა, 1, 2, 2.
და ახლა ბოლოს, ჩვენ CS51 რომელსაც რა თქმა უნდა, ID3 და ჰენრი.
და რა თქმა უნდა ID3 და ჯესი.
რომ კარგად გამოიყურება.
OK. ახლა, მოდით დავუბრუნდეთ ტერმინალის ფანჯარაში.
ასე რომ, თუ მე აღწერს სპეციალური ვნახავთ ეს.
იმ შემთხვევაში, თუ მსურს, რომ სპეციალური შემიძლია ახლა შეარჩიეთ ვარსკვლავი კურსები,
ნახევრად მძიმე, და ახლა ჩვენ ვხედავთ იმ ღირებულებებს.
და ახლა, რა არ მინდა ამის გაკეთება?
აირჩიეთ ვარსკვლავი ინსტრუქტორები, რომ როგორც ველოდი,
და აირჩიეთ ვარსკვლავი კურსები - რა თქმა უნდა, ხაზგასმა ინსტრუქტორი.
ასე რომ, როგორ ახლა შეუერთდება ამ მაგიდები?
ასე რომ, სილამაზის, რომელმაც აირჩია ID ღირებულებები ამ გზით არის
იმ შემთხვევაში, თუ ფიქრობთ, აღების კურსი მაგიდა
და ინსტრუქტორი მაგიდა და მაშინ ჩასმა
მათ შორის ის ორი თქვენი გონებაში კურსის ინსტრუქტორი
მაგიდა შეგიძლიათ სახის ონლაინ ყველა ამ ID სვეტები
ასე რომ თქვენ შერწყმა მათ ერთი მასიური სვეტი, რომელსაც აქვს ყველა
ინფორმაციის ჩვენ აღელვებს.
SQL syntax ამ არ არის აშკარა,
მაგრამ ვნახოთ, თუ ჩვენ შეგვიძლია ამის გაკეთება.
ასე რომ აირჩიეთ ვარსკვლავი კურსები,
და არსებობს რამდენიმე გზა ჩვენ შეგვიძლია ამის გაკეთება.
მე ვაპირებ დააჭიროთ უბრალოდ სახის ფორმატის რამ ლამაზად,
მაგრამ, რომ arrow მხოლოდ სიმპტომია კლიენტის მხარეს ინსტრუმენტი,
მას არაფერი აქვს გავაკეთოთ SQL თავად.
ასე რომ აირჩიეთ ვარსკვლავი კურსები.
მე ვაპირებ ახლა შეუერთდება კურსების ცხრილი
რა თქმა უნდა ინსტრუქტორი მაგიდასთან.
როგორ? სფეროში მოუწოდა courses.id equaling რა თქმა უნდა,
ხაზგასმით ინსტრუქტორი dot რა სახელით
შესაბამისი ველი აქ რომ მინდა წყვილი.
ეს არ არის პირადობის მოწმობა.
It's - რა, ბოდიში?
>> საკურსო ID.
OK, ნება მომეცით დააშორებს.
მაგრამ მე მინდა, რომ მიიღოს ამ ერთი ნაბიჯი შემდგომი.
მე ახლა კეთდება ამ მაგიდა და ეს ერთი.
ახლა მინდა გაიყვანოს ამ ბიჭს, როგორც კარგად.
ასე რომ, ნება მომეცით, კიდევ უფრო შეუერთდება ამ მთელი რამ
იმ ინსტრუქტორის მაგიდა რა?
რა თქმა უნდა, ხაზგასმა instructor.instructor id
equaling instructors.id.
ასე რომ, ჩვენ შეიძლება არ წერია ამ შეკითხვაზე რამდენიმე გზები.
იმისათვის, რომელშიც მე ამ არ არის, რომ მნიშვნელოვანია.
მე უბრალოდ სახის გააკეთა ჩემი აზრით მარცხნიდან მარჯვნივ.
ჩვენ შეგვეძლო გავაკეთეთ ამ წელს რამდენიმე განსხვავებული გზები
მაგრამ თუ მე ახლა აქვს ნახევრად მსხვილი ნაწლავის და დააჭიროთ,
შეამჩნია დავიბრუნებ ახალი დროებითი მაგიდა, შედეგი კომპლექტი
ასე ვთქვათ ბაზაში საუბარი.
და რა მაქვს ამ რამ?
მაქვს ID, სახელი, სხვა ID, რომელიც სახის დამაბნეველი
ჩემთვის მომენტში, რა თქმა უნდა, პირადობის მოწმობა,
ინსტრუქტორი ID, პირადობის მოწმობა, და სახელი.
ასე რომ, დღის ბოლომდე ჩვენ გვაქვს უფლება მონაცემები ახლა.
მე ვხედავ, რომ CS1 ისწავლება by Leitner, CS51 ისწავლება
by Leitner და tov და CS50 ისწავლება Malan.
მაგრამ მე ცოტა აანერვიულა შესახებ ამ გაურკვევლობის მე შეიქმნა.
რა გაურკვევლობა მე alluding რომ?
ჰო?
[Inaudible შენიშვნა]
არსებობს სამი ID სვეტით.
ასე რომ, ჩვენ შეიძლება რეალურად დაფიქსირება და ჩვენ ვაპირებთ, რომ რეალურად აპირებს
to defer ჩვენს ფარგლებში საბოლოო ჯამში დაგვეხმარება ამ,
მაგრამ აღმოჩნდება, რომ არსებობს სიტყვით SQL მოუწოდა S,
სადაც შეგიძლიათ მიუთითოთ alias, ახალი სახელი სფერო
ასე რომ ჩვენ შეგვიძლია თავიდან ავიცილოთ ეს გაურკვევლობა საერთოდ.
მაგრამ მიხვდა, რომ თუ ჩვენ არ მიმართოს მას რატომღაც როგორც
რომ სიტყვით ან ფარგლებში,
არსებობს პოტენციურად ამ გაურკვევლობა, თუ თქვენ ცდილობენ
წვდომის ID ველი რადგან ნათლად არის პირობა,
ერთად დუბლიკატი სახელები არსებობს.
ასე რომ, ეს არის შეერთება და ვფიქრობ თქვენი გონება თვალი საუკეთესო გზა
ვიფიქროთ, თუ ეს ნამდვილად არის მიიღოს ორი მაგიდები,
ხაზის მათ up in ისე, რომ გსურთ.
და ეს არის ე.წ. შიდა შეუერთდება იმ გაგებით,
რომ ჩვენ აერთიანებს მაგიდები აქ.
არსებობს სხვა სახის უერთდება, რომ ჩვენ შეიძლება ექმნებათ
დროთა განმავლობაში, როგორიცაა გარე უერთდება,
მაგრამ დიდი ნაწილი ამ ალბათ ყველაზე გავრცელებული
აღსადგენად მონაცემები.
რა გავაკეთეთ არის ზოგადად რასაც
ნორმალიზაცია თქვენი მონაცემები, ასე რომ არ არსებობს დუბლირებას ვერსად
თქვენი მაგიდები.
და დუბლირება, მინდა არ ნიშნავს იმას, რომ პირველი მიდგომა.
თუ ჩვენ აღნიშნულ Leitner და tov სხვადასხვა ადგილებში,
თქვენს მონაცემთა ბაზაში, რომელიც არ არის ზოგადად, საუკეთესო გადაწყვეტილება
მით უმეტეს, თუ მათი სახელი სიძლიერეზე შეცვლა ზეგანაკვეთური ან იმ შემთხვევაში,
ქორწინების, ქალიშვილობის გვარი სიძლიერეზე შეიცვალოს თავად გსურს ერთი
კანონიკური რაღაც მონაცემები ღირებულება, როგორიცაა სახელი.
ყველა უფლება.
ასე რომ, recap, ჩვენ გვქონდა რამდენიმე დიზაინი გადაწყვეტილებები მიიღოს
და ყველაზე მნიშვნელოვანი პირობა ალბათ შემცირდა ზოგიერთი
ეს არჩევანი ინდექსები.
მაგრამ ნება მომეცით აღვნიშნო, კიდევ ერთი რამ, ისევე.
თუ მე დაბრუნდეს phpMyAdmin,
ერთი თვისება თქვენ შეიძლება არ არ შეექმნა ადრე
შემდეგ.
თუ მივდივარ, რა თქმა უნდა, ინსტრუქტორი მე უკვე არ დააკონკრეტა, რომ ზოგიერთი
ეს ყველაფერი უნდა ინდექსები.
მაგრამ ნება მომეცით წასვლა სტრუქტურა tab რა თქმა უნდა, ინსტრუქტორი.
ნება მომეცით დააჭირეთ ახლა ინდექსები და შეამჩნია შემდეგ.
მე აქ მითითებული, რომ არის პირველადი გასაღები
on სვეტი მოუწოდა ID.
ეს არის გარკვეულწილად რთული გზა სასურველი cardinality
და ა.შ. როგორც გულისხმობდა ზომა სფეროში bytes.
მაგრამ ახლა მე ასევე სხვა სფეროში, რა თქმა უნდა, ID, რომელიც -
რა თქმა უნდა, ID რომელიც კეთდება წინასწარ და უნიკალური, OK.
მე ამ ერთი წინასწარ ჩვენთვის.
ასე რომ, რატომ არის ეს - ნება მომეცით დააგდოთ ამ გულისთვის დისკუსია.
Oh, თქვენ იცით, რა გავაკეთე?
OK. ასე რომ, ადრე, ერთი უცნაური ქორწინებები გამოყენების GUI ინსტრუმენტი
მოსწონს, როდესაც ჩვენ შექმნის შეუერთდეს მაგიდა,
კურსის ინსტრუქტორი მაგიდა, გავიხსენოთ, რომ მე მითითებული
რომ მინდა ინდექსი ამ სფეროში
და ინდექსი ამ სხვა სფეროში.
გვერდითი ეფექტი შემოწმების ორივე ყუთები
იმავე ეკრანზე ის არის, რომ phpMyAdmin დავასკვნათ, რომ,
რომ მინდა არა ორი ცალკე ინდექსები,
რომ მინდა შეუერთდეს ინდექსი, რომელიც ზოგადად მხოლოდ სასარგებლო
ან ყველაზე გამოსადეგი, როდესაც თქვენ ეძებს არა ერთ სფეროში
მაგრამ ორივე სფეროებში.
და ამიტომ ჩვენ გვქონდა მათ conjoin არსებობს
ასე რომ მე დაეცა ეს მიზეზი, რომ არ იყო ის, რაც მე გამიზნული.
უფრო მეტიც, მე ვაპირებ მომხმარებელი ამ აქ.
მე ვაპირებ წასვლა რა თქმა უნდა, ID
და ქვეშ უფრო მე უბრალოდ ვაპირებ ვთქვა დაამატოთ ინდექსი.
და მე ვაპირებ წასვლა ქვეშ ინსტრუქტორი ID და აცხადებენ, რომ დაამატოთ ინდექსი.
და ახლა თუ ჩვენ დააწკაპუნეთ აქ შეამჩნია ჩვენ გვაქვს სამი ინდექსები,
ერთი პირველადი და როგორც მე განკუთვნილია ერთი თითოეული
იმ უცხო გასაღები.
და მოვუწოდებ მას საგარეო რადგან რა თქმა უნდა, ID ამ ცხრილში რუკები
რომლის ველი, უბრალოდ უნდა იყოს გარკვევა, სხვა მაგიდასთან.
პირველადი გასაღები მოუწოდა ID, ცხრილში მოუწოდა კურსები,
და იგივე გარიგება მეორე.
მაგრამ ახლა, საინტერესო შეასრულა და მართლაც ტექნიკით.
მე უბრალოდ წავიდა წინ და ნება მომეცით გავაკეთოთ, რომ ცოტა უფრო ნელა.
იმავე ეკრანზე, ცნობა იგი აცხადებს, რომ ურთიერთობის კალენდარი აქ.
მე დააჭირეთ ამ და ახლა შეამჩნია I ამის გაკეთება რამდენიმე შეზღუდვები.
ასე რომ, ერთი upsides ასევე
არა მხოლოდ გამოყენებით კონცეპტუალურად საგარეო გასაღებები და სხვა მაგიდები
ისევე, როგორც ჩვენ მხოლოდ ის არის, რომ განმსაზღვრელი ინდექსი
მათ შეგიძლიათ აქვს მონაცემთა ბაზის დახმარებით თქვენ კიდევ უფრო
უზრუნველყოს მთლიანობას რომ სფეროში.
კერძოდ, მე ახლა მიუთითოთ მეშვეობით drop
ქვემოთ, რომ რა თქმა ID ველი
ამ ცხრილში, ფაქტობრივად, რუკები to courses.id.
ანალოგიურად, ინსტრუქტორი ხაზგასმა ID mapped to instructors.id.
ახლა, რატომ არის ეს სასარგებლო?
ასევე შეამჩნევთ, მარჯვენა მხარეს, რაც, როგორც ჩანს, ახლა.
შემიძლია ახლა ასწავლიან მონაცემთა ბაზა, რომ თუ Henry
მაგალითად ოდესმე retires და მისი ზედიზედ ქრება
საწყისი ინსტრუქტორი მაგიდა საერთოდ რითაც მიმდინარეობს
წაშლილი, შემიძლია მეშვეობით კასკადური მიდგომის უზრუნველსაყოფად
რომ რაიმე სპეციალური ასწავლის არის აღარ ასოცირდება მასთან.
შემიძლია ასწავლიან მონაცემთა ბაზა წაშლა რიგები
ამ ე.წ. შეუერთდეს მაგიდა ავტომატურად, თუ Henry ან თუ ერთი
მისი გაკვეთილები ქრება.
ახლა, რატომ არის ეს მყარი?
ჰო?
[Inaudible შენიშვნა]
თქვენ მხოლოდ უნდა გავაკეთოთ ერთხელ და გრძელვადიანი, არა?
ეს ძალიან ადვილია, თუ სახის ადამიანები მოდიან და მიდიან, კურსები მოდის
და წავიდეთ, თქვენს მონაცემთა ბაზაში შეიძლება უბრალოდ სავსეა კურსები
და ფაკულტეტის, რომ არ არის აღარ შესაბამისი მონაცემები კომპლექტი.
და თქვენი მონაცემების იწყება მისაღებად ძალიან რთული და ბინძური და შემორჩენილია,
და ა.შ. აქ შეგიძლიათ დაალაგოთ
საქართველოს აღასრულოს ზოგიერთი ეს შეზღუდვები.
ჰო?
[Inaudible შენიშვნა]
იგი დარწმუნებულია გზით ამ.
ეს არის ეკრანზე, სადაც ჩვენ სასურველი კავშირი
შორის საგარეო გასაღები და პირველადი გასაღები.
ასე რომ, ყველა დასახელებისგან კონვენციების I მიანიშნა
ადრე უბრალოდ კონვენციები.
არ არსებობს თანდაყოლილი მნიშვნელობა.
ეს არის ეკრანზე რომელიც მხოლოდ სასარგებლო
მას შემდეგ, რაც თქვენს მიერ მითითებული ინდექსების თითოეული იმ სფეროებში, როგორიცაა გავაკეთეთ.
და ამ dropdown ჩვენ რამდენიმე რამ, მაგალითად,
იმ შემთხვევაში, თუ, რა თქმა უნდა წაშლილია შეგიძლიათ რეალურად იმისთვის, რომ წაშლა
ხდება, თუ არსებობს არის row ამ ცხრილში
მხოლოდ ამბობდა, შეზღუდოს.
სხვა სიტყვებით Henry ვერ გადადგეს
სანამ ჩვენ decouple მას საწყისი CS51 და CS1.
ასე რომ, კარგია.
მაგრამ ეს შეიძლება გამოიწვიოს შეცდომები თქვენს კოდი
თუ თქვენ არ მოსალოდნელია, რომ ან ჩვენ შეგვიძლია აქვს კასკადი,
კასკადის მსგავსი მინდა კასკადური სტილების
და კასკადური ჩანჩქერი ნიშნავს, რომ თუ a -
თუ Henry retires ასე - მიერ მიღების წაშლილია
ასე იქნება მისი row აქ უნდა წაიშალოს.
არარის Action არაფერს ნიშნავს ან null სახის სასარგებლოა, თუ თქვენ სახის
მინდა რამდენიმე ისტორიული ჩანაწერი ჰენრი რომელმაც ასწავლა CS51,
მაგრამ უბრალოდ მინდა, რომ სფერო შეიძლება იყოს ისე, რომ რიგები იქ
მაგრამ ეს აღარ მასთან.
ასე რომ ეს არის ძალიან ძლიერი ტექნიკას, თქვენ შეგიძლიათ
და უნდა გამოიყენოს, მიუხედავად იმისა, ინტერესი განსაკუთრებით
გადარჩენის თქვენ თავს.
ნება მომეცით მიიღოს ნახსენები რამდენიმე საბოლოო დეტალები აქ,
ინგრედიენტები რომელიც რომ შეიძლება იყოს სასარგებლო
როგორც ჩვენ ვგეგმავთ მონაცემთა ბაზის დიზაინი.
თქვენ ასევე არჩევანი მეტი მონაცემთა ბაზის ძრავა
რომ თქვენ იყენებთ თქვენს კოდი.
თუ თქვენ იცნობს საქართველოს CS161 ალბათ -
ან თუნდაც 61, ალბათ, ზოგადად, იცნობს ფაილის სისტემები.
და იქ ყველაფერი როგორიცაა, NTFS და HFS +
და X2FS4 [ფონეტიკური] და 3 და სხვ.
არსებობს სხვადასხვა გზა შენახვის მონაცემები მაგიდასთან.
ანალოგიურად არსებობს სხვადასხვა გზები შენახვის მონაცემები
მონაცემთა ბაზაში by default მაინც Appliance
უახლესი ვერსია of MySQL.
ჩვენ უკვე გამოყენებით მონაცემთა ბაზის ძრავა მოუწოდა, NoDB,
რომელიც მხარს უჭერს რამდენიმე ლამაზი მახასიათებლები.
მაგრამ კიდევ ერთი საერთო ერთ ასევე ე.წ. MyiSAM და კიდევ ერთი
რომ შეიძლება გამოყენება მეხსიერება, რაც იმას ნიშნავს, არ დააყენა არაფერს
დისკზე, უბრალოდ შეინახოს რამ მეხსიერებაში.
უმეტესწილად ალბათ არ წავიდეთ არასწორი მხოლოდ დაწყებული
ერთად NoDB, მაგრამ ნებისმიერი პროექტები რომ ტენდენცია გულისხმობს მაღალი განაკვეთები
ჩანართი მაგალითად, როგორც ბევრი სწრაფი ხე,
ასობით რამ წამში ან ათასობით რამ.
ნებისმიერ დროს თქვენ გაქვთ ბევრი პერსონალი აპირებს
on ბაზაში მაშინ ამ სახის
ქვედა დონეზე გადაწყვეტილებები დაიწყოს ჩაერთოს.
სრული ტექსტი ფუნქცია მაგალითად მუშაობს მხოლოდ MyiSAM
ასე რომ აქვს გავლენა.
მაგრამ თქვენ შეიძლება გავიხსენოთ ამ, მოდით მინიმუმ მოტივაცია, რატომ ჩვენ ვზრუნავთ
შესახებ NoDB კერძოდ.
რასის პირობები ზოგადად ეხება რა?
ყველა უფლება, ეს არის allusion to მაგალითად, ზოგიერთი
თქვენ ალბათ ისმის გასულ წლებში, თუ არა 161 ან 50
სადაც თქვენ გაქვთ roommate, ორივე ნამდვილად მინდა რძის,
თქვენგანი იღებს სახლში პირველი ხსნის მაცივარი არ არსებობს რძის,
დახურვა მაცივარი ფეხით გასწვრივ ქუჩებში CVS და მიიღეთ
ხაზი შეიძინოს ზოგიერთი რძე.
იმავდროულად, თქვენი roommate ბრუნდება აქ.
მან ასევე უყვარს რძე.
გახსნა მაცივარი და აცნობიერებს რძე.
აქ მას შემდეგ მიდის შენახვის, იქნებ სხვა CVS.
სწრაფი წინ რამდენიმე წუთში შემდეგ თქვენ დავბრუნდებით და ახლა ორივე
თქვენ არ იყიდა რძე.
ერთი მათგანი ახლა აპირებს გააფუჭებს იმიტომ, რომ თქვენ არ
როგორიცაა რძე, რომელიც ბევრი და ეს პრობლემა, არა?
იმის გამო, რომ, როგორც თქვენ დაათვალიერა სახელმწიფო ზოგიერთი ცვლადის
და მიიღო გადაწყვეტილება საფუძველზე ეს მიუხედავად იმისა, რომ სახელმწიფო
რომ ცვლადი იყო არსებითად პროცესში იცვლება,
ყველა იქნება ეს ნელა, დროთა დროის სჭირდება
მისაღებად და CVS.
რა არის ერთგვარი სულელური რეალური მსოფლიო გადაწყვეტა, რომ პრობლემა?
დატოვე შენიშვნა, არა?
ეს მოხდა ბოლო დროს.
ყოველთვის დატოვოს შენიშვნის ან ბოქლომი, რაც სიტყვასიტყვით.
და მე ვიტყვი, ბოქლომი, რადგან თუ აკეთებთ მიიღოს ან აიღო CS161,
საკეტი არის ფუნდამენტური იდეა, რომ სახის მსოფლიოში.
ასე რომ, რასის პირობები შეიძლება წარმოიშვას ასევე ბაზაში მსოფლიოში
და თქვენ ალბათ გახსოვთ, ალბათ from CS50 დააფინანსოს თუ მიიღო 50,
ეს კოდი რომ ჩვენ რეალურად მისცა თქვენ ბიჭები დაზუსტება
დროს ისე, რომ თქვენი ოპერაცია ე.წ. ატომური.
თუ უნდოდა, ამ შემთხვევაში, შეიძინოთ წილი საფონდო
და რომ საფონდო აქვს გარკვეული სიმბოლო.
ჩვენ ვუთხარით, რომ გამოიყენოთ კოდი მოსწონს ეს, რადგან გზით ამ
on დუბლიკატი გასაღები განახლება სინტაქსი, რომელიც აგებულია
შევიდა MySQL თქვენ ეფექტურად აკეთებს არც insert
ან განახლების შემდეგ აკეთებს აირჩიეთ ვხედავ
თუ საფონდო უკვე არსებობს.
სხვა სიტყვებით რომ ვთქვათ, ანალოგი მსოფლიო ყიდვის საფონდო
რძე და მაცივარში შეიძლება იყოს, პირველ რიგში,
ადრე ყიდულობენ წილი Google დაგვჭირდება აირჩიეთ
მონაცემთა ბაზიდან ყველა აქციების Google, რომ დავითი ფლობს
თუ იგი ფლობს ნულოვანი ან მეტი.
ერთხელ ხედავთ, თუ იგი ფლობს ნულოვანი ან მეტი გაქვთ
მაშინ გავაკეთოთ შემდეგი.
თქვენ ან უნდა გავაკეთოთ ჩასმა
თუ იგი ფლობს ნულოვანი "იწვევს არ არსებობს row დავით არ არის,
ან თქვენ უნდა გააკეთოთ განახლება თუ მინიმუმ თეორიულად გსურთ
აქვს ზედიზედ პოსტი შესახებ.
პრობლემა შერჩევის რომ რაოდენობის აქციების
და შემდეგ განახლებაზე ან ჩასმა შეიძლება შეწყდეს
ვინმეს კიდევ ერთი კომპიუტერული ტერმინალის ცდილობს შეიძინოს
ან გაყიდოს ზოგიერთი დავითის აქციების აქციების თუ არა
კარგი მიზნებისათვის ან სახის მუქარის მიზნებისათვის.
ეს მოსწონს აპირებს მაღაზიაში როდესაც თქვენი roommate იღებს უკან
და ამოწმებს სახელმწიფო ცვლადი.
ასე რომ, ეს სინტაქსი დროს რომელიც იყო ერთგვარი შესაბამისი
განთავსების CS50, თავს არიდებს, რომ პრობლემა საერთოდ.
და ეს უბრალოდ ყველაფერს აკეთებს, რომ ჯადოსნური საკეტი თქვენთვის,
მაგრამ ახლა ამ სახის პროექტების ამ კურსს
რომელიც სავარაუდოდ ჩართვა უფრო რთული მონაცემები კომპლექტი,
თქვენ არ შეგიძლიათ მივაღწიოთ ყოველთვის ამ atomicity.
ყველაფერი ერთდროულად ან საერთოდ არ
შეუწყვეტლად ასე ელეგანტურად.
და ასე MySQL, სხვა მონაცემთა ბაზის ძრავა,
მხარდაჭერა რამ მოუწოდა საკეტები,
რომლის დროსაც თქვენ შეიძლება ითქვას lock ამ მაგიდაზე ისე, რომ მხოლოდ ერთი მკურნალობა
და, ზოგადად, მხოლოდ ერთ მომხმარებელს შეუძლია შეეხოთ მას ნებისმიერ მომენტში
წაკითხვის ან ჩაწერის და მაშინ თქვენ შეგიძლიათ ზარალი მას.
ეს არის მაგალითი ერთი of MySQL საკუთარი ცნობას,
სადაც, თუ თქვენ გაქვთ, როგორიცაა ბანკის ანგარიშის რომ თქვენ ცდილობთ
ჩამოჭრა ფული და შემდეგ დაამატოთ ფული.
დაგვჭირდება დარწმუნდით, რომ ორივე
იმ რამ ერთად
ასე, რომ არ არსებობს მათემატიკური შეცდომები
და არავინ დანაკარგები ფული, რატომღაც.
პრობლემა საკეტები თუმცა მონაცემთა ბაზა
რომ ეს ზოგადად ნიშნავს მთელი მაგიდა დაბლოკილია,
რაც იმას ნიშნავს, თუ თქვენ გაქვთ ასი ადამიანი ცდილობს
ბიზნესის კეთება თქვენი ბანკი ონლაინ იმავე ოდენობით
დრო მხოლოდ ერთი მათ შეუძლიათ წასვლა დროს.
რომელიც სულელური, განსაკუთრებით სერვერები დღეს
რომ აქვს რვა რა თქმა უნდა, 16 რა თქმა უნდა, უზარმაზარი
მეხსიერება, არ არსებობს მიზეზი, serialized ყველა
თქვენი ოპერაციების, თუ აღნიშნული ინფორმაცია მომხმარებელს მხოლოდ აპირებს
ურთიერთქმედება საკუთარი რიგები.
ასე NoDB საშუალებას გაძლევთ ამის გაკეთება რამ უფრო ჭკვიანი
და ეს საერთოდ იქნება მიდგომა თქვენ მიიღოს კოდი
როგორც თქვენ იყენებთ რაღაც მოუწოდა გარიგება.
და თქვენ ამის გაკეთება საერთოდ in PHP კოდი,
Ruby კოდი, Python, რასაც.
მაგრამ SQL კოდი რომ საბოლოოდ გამოყენებული არის ეს,
როგორც წესი.
დაწყება გარიგების მაშინ აღნიშნული ორი ან მეტი queries
რომ გსურთ შეასრულოს საერთოდ
შეუწყვეტლად თუ არა ყველა.
აქ შეიძლება იყოს ზოგიერთი აირჩიეთ განცხადებები
ან რაიმე წაშლის ან განახლება.
მაგრამ ლამაზი რამ არის, რომ მონაცემთა ბაზა იქნება ჭკვიანი საკმარისი
დარწმუნდით, რომ იგი მხოლოდ ჩაკეტვა რიგები ისინი რეალურად
ჩართული ამ განახლება ან ირჩევს ან წაშლის.
ასე რომ, თუ თქვენ გაქვთ ათასობით რიგები და თქვენ მხოლოდ ეხება სამ
მათ, რომ მხოლოდ subset მაგიდასთან იქნება ჩაკეტილი
რაც იმას ნიშნავს, იმ სხვა 99 მომხმარებელს შეუძლია შეეხოთ მათი რიგები
გარეშე serialized და შენელება თქვენ.
იმავდროულად, ეს არის ძვირფასი ასპექტი ოპერაციები.
ისინი ოპერაციების იგრძნოს, ისევე როგორც 161 წლის ფაილური სისტემა,
ისინი transactional
რაც იმას ნიშნავს, თქვენ შეგიძლიათ გააფართოვოს მათ უკან, შეგიძლიათ გაუქმება მათ.
ეს არის მსგავსად ბრძანება ან კონტროლის F ბაზაში.
თუ თქვენ აღმოაჩენთ ნაწილი მეშვეობით ყველა
თქვენი სხვადასხვა მონაცემებით ოპერაცია, გადაღება, რაღაც ხდება, არასწორია.
თქვენ ფაქტიურად შეასრულოს სხვადასხვა SQL შეკითხვაზე roll უკან
და ყველა ეს ტენდენცია - ყველა განცხადებების თქვენ შესრულებული
მას შემდეგ, რაც განაცხადა, რომ დასაწყისია გარიგების გაქრება
თითქოს ისინი არ მოხდა,
რომელიც საოცრად ძლიერი რამ.
და ეს არის სახის რამ, რა თქმა უნდა, 50 ჩვენ ერთგვარი
of პერსონალი ბარათს გაატარებს ქვეშ rug და უბრალოდ სახის ვივარაუდოთ,
რომ ყველაფერი კარგად იქნება.
მაგრამ ერთხელ თქვენ დაიწყოს ფიქრი რეალური პროექტები
და რეალურ წევრებს და მთლიანობის თქვენი მონაცემთა ბაზა,
ეს არის სახის დიზაინის გადაწყვეტილებები
რომ ვაპირებთ იყოს მნიშვნელოვანი.