>> Gerai.
Taigi, be tolesnio ceremonija, SQL, Struktūrizuotų užklausų kalbą.
Taigi, jūs tikriausiai panaudojo šiuos jau CS50, gal CS165,
gal savo asmeninių projektų.
Ir ką SQL jums tai padaryti, į SQL Server apskritai?
Taip?
[Negirdima Pastaba]
Gerai, kad buvo labai užtikrintas būdas pasakyti tai.
Taip. Taigi ji leidžia jums laikyti duomenis
ir dar svarbiau leidžia Jūs užklausti duomenų.
Ir tai yra žingsnis į priekį
naudoti kažką paprastesnis kaip CSV, tiesa.
Kableliais atskirta kintamieji.
Panašūs vertės.
Taip pat jums sutaupyti viena eilutė informacija
į tekstinį failą.
Bet kas iš neigiama CSV, saugoti savo duomenis,
nors jums efektyviai gauti eilutes ir stulpelius iš to?
Taip.
>> Jūs neturite 'turi pati organizacija
efektyvumas [nesigirdi].
>> Jūs neturite pats organizacijos efektyvumą.
Ką tai reiškia?
>> Na, kaip ir [nesigirdi] turi kaip pagrindinis [nesigirdi].
>> Gerai. Taip.
>> Tai reliacinės duomenų bazės Jūs galite turėti keletą duomenų bazių
tarpusavyje susiję labai konkrečius būdus.
>> Gerai. Geras.
>> Tai [nesigirdi] nustatyti CSV.
>> Ir leiskite man įgnybti tiek terminologija.
Taigi kelių lentelių per duomenų bazę, žinoma,
ir viršija tai, kas tai galite padaryti tik vieną CSV.
Bet iš tikrųjų apribojimas su CSV Norėčiau teigti, yra
kad visa tai neefektyvumas.
Tai labai paprasta maketą.
Bet jei norite tai padaryti klausimas, kas veikia laikas
bet pasirinkite užklausą į CSV failą?
Aš turiu galvoje, tai didelis senas [nesigirdi] Gerai, kad tai yra, blogiausiu atveju,
jie išaugo ne pačioje apačioje.
Net jei jums buvo rūšiuojami visą CSV failą, jei jūs nežinote,
kad iš anksto gerai, jūs vis dar teks
ieškoti visa tai.
Taigi, tarp dalykų, mes ketiname gauti
naudoti faktinis duomenų bazę, naudojant kalbą
kaip SQL galime užklausą tai ir mes galime iš anksto
kaip duomenų bazių projektuotojams nurodyti, kas yra laukai
kad greičiausiai buvo teks klausimai apie, kad žmonės
ne MySQL ar Microsoft ar Oracle,
kas padarė duomenų bazę jūs naudojate gali padaryti viską
sunkaus darbo suprasti, gerai,
atsižvelgiant milijono šitų idėjas.
Kaip mes galime išdėstymas - juos iš atminties?
Kai kurie iš medžio rūšies struktūrizuoti galbūt
taip, kad, kai jūs darote faktiškai vykdyti Pasirinkite,
tai kažkas, kad logaritminė ar logaritminė
iš logaritminė laiku, o nei faktiškai perduodant
į kažką linijiniu.
Taigi, mes turime apie daug kokybės, kad taip.
Ir mes taip pat gali saugoti daug daugiau duomenis lengviau "sukelti SQL
Serveris yra paprastai saugomi RAM nors dalys
IT gali būti saugomi diske ir jūs tikriausiai jau žinote,
kad RAM yra paprastai greičiau nei diskų,
taip, kad tai geras dalykas.
Ir mes taip pat gali dirbti lygiagrečiai daug geriau.
Jei atlikote 165 arba 161, žinote, kad jei du žmonės bando
daryti tą patį vienu metu į sistemą,
blogi dalykai paprastai gali atsitikti.
Taigi, be kitų funkcijų, mes gali gauti, jei mes kuriame lenteles
į tinkamas būdas yra daugiau paramos ir saugumo
kai kalbama lygiagretumą.
Taigi, du žmonės iš dviejų dalių
pasaulyje, naudojant tą patį svetainė, jei jie abu pabandyti
pirkti ką nors ne pats laiko, kad siekiant nesiruošia
eiti tuo pačiu metu.
Kažkodėl jie būtų išspausdintas kas nors kitas nei mūsų pačių -
kas nors kitas, nei mes patys.
Duomenų bazėje bus padaryti, kad mums.
Taigi, kai tai paprasčiausias būdas,
SQL leidžia mums užklausti reliacinės duomenų bazės.
Reliacinė duomenų bazė yra vienas, kad turi vieną
arba daugiau lentelių ji paprastai.
Ir jei tai yra šiek tiek susipažinę,
tikrai galite tiesiog manau apie tai, kaip "Excel" arba numerius,
arba "Google" skaičiuoklių.
Jis tiesiog turi eilutes ir stulpelius ir paprastai kiekvieno viršų
Šių eilučių turi už tai pavadinimas.
Taigi, tai gali būti ID stulpelis, stulpelis Vardas,
adresas stulpelis ir kt.
Ir tada jūs galite turėti keletą tokios lentelės, jei norite
pradėti nustatančią skirtingų tipų duomenimis.
Bet jūs galite prisiminti bent nuo CS50, kad mes bandėme
suteikti jums GUI pagrįstas įrankis [nesigirdi]
valdyti savo duomenų bazę.
Jis buvo vadinamas phpMyAdmin.
Taigi, tai tik sutapimas, kad ji buvo parašyta PHP programavimo kalba, tikrai,
bet tai buvo tik žiniatinklio priekinis pabaigą į duomenų bazę.
Ir per įvairių skirtukus ir nuorodos, galėtų pradėdami
konfigūruoti duomenų bazę patys.
Bet gera priemonė pradėti gauti šiek tiek patogiau
su taip pat komandinės eilutės klientas.
Taigi, jei naudojant CS50 Appliance ar tikrai naudojant bet makro kompiuterį
kad turi komandinės eilutės MySQL klientas, jūs taip pat gali tai padaryti rūšiuoti
iš senosios mokyklos, kaip šis.
Kaip panaikinti MySQL projektą bent atviro kodo versija
ji yra dabar vadinamas MariaDB už įvairių priežasčių galite skaityti
iki Vikipedijos, tačiau tai pati programinė įranga,
tai pati sintaksė ir tt,
beveik tas pats kodas bazę.
Ir todėl, kai aš ne tai greitai aš dabar gali bendrauti
su savo duomenų bazėje daug rankiniu būdu.
Taigi pavyzdys šiuo klausimu, leiskite man eiti į priekį
ir tiesiog atverti terminalo langą.
Teko būti naudojant CS50 Prietaisas, bet jūs galite tai padaryti,
daugumoje bet sistemos kurį gavo teisę
programinę įrangą.
Ir aš ruošiuosi padaryti mysql-u vartotojo vardą, John Harvard
šiuo konkrečiu sistema, p- slaptažodžio, kad aš tipo
į šiek tiek daugiau saugiai pataikyti Enter.
Dabar aš pasirodys.
Aš ruošiuosi rašyti Crimson į CS50 Appliance
o dabar matau, iš esmės kad pats ekranas.
Tačiau yra komandos dabar kad galėtume pradėti rašyti
kaip rodo duomenų bazes ir kad ketina parodyti man viską
duomenų bazių, kad aš jau sukurta sistema,
beveik tas pats sąrašas galėtumėte pamatyti phpMyAdmin.
Yra kitų, pavyzdžiui, pora informacija schemos ir testus,
kuris, jei baksnoti aplink CS50 prietaisą, mes paslėpti kai
Šių žemesnio lygio lentelių
bet jie buvo ten visą šį laiką.
MySQL tikrųjų turi mažą savybės, pavyzdžiui, vardus
ir slaptažodžius duomenų bazės pati, o ne jūsų paraiška
kad jums gali būti veikia ant jo.
Taigi iš anksto, šiandien aš sukūrė keletą duomenų bazių,
iš kurių vienas yra vadinamas courses50.
Šansų yra kai kurie iš jūsų naudojamas CS50 Žinoma prekybos įrankis,
kuris yra didelis sąsaja Registratorius kursas katalogas.
Ir iš tikrųjų tai yra gražus duomenų rinkinys kalbėti apie "priežastis,
vienas, mes tarsi visi akivaizdžiai susipažinę su kursų
ir instruktoriai ir susitikimas vietos ir visi rūšiuoti
paprastų dalykų iš universiteto,
bet jis taip pat gavo šiek tiek įdomių galimybių
už dizainą.
Taigi mes manome, kad mes norime naudoti sąvoka kurso katalogas
ir prekybos priemonė, pavyzdys visoje šiandien rūšiuoti
rėmo kai dizainas sprendimus mes turime padaryti.
Taigi, pradėkime ten.
Tarkime, kad aš iš tikrųjų norėjo atstovauti super paprasčiausias
Žinoma, perkant įrankius.
Ir paprasčiausias pasaulis Galiu įsivaizduoti, ir vienas
kurioje yra kursai ir yra instruktoriai.
Ir tarkime, kad diskusijų sake
kad kiekvienas kursas turi bent pavadinimą.
Taigi galime pradėti eskizas tai atlikti.
Aš ruošiuosi naudoti phpMyAdmin tik dėl patogumo,
todėl mes neturime tipo iš visų užklausų rankiniu būdu.
Bet čia aš esu mano courses50 duomenų bazė.
Jeigu susipažinę su šiuo, jis bus labai paprasta, kai jums pasinerti
prie savo projekto jei norite jį naudoti.
Aš ruošiuosi kurti lentelė vadinama Kursai
ir galiu tik galvoti vienos srities
dabar, iš kurso pavadinimas.
Aš ruošiuosi eiti į priekį ir tarkim man vieną stulpelį.
Dabar, kaip jūs prisimenate, kad jūs gaunate sąsaja, kuri yra šiek tiek
kaip šis.
Ir kitas aukštyn atvirai iš phpMyAdmin yra tai, kad ji tarsi
savęs instruktavimo ir per dropdowns galite rūšiuoti
iš pamatyti, ką jūsų galimybė dizaino sprendimai.
Taigi, aš norėčiau duoti kas žinoma, pavadinimas.
Štai iš šios skilties pavadinimas.
Ir kaip apie savo duomenų tipą?
Dauguma iš jūsų turėtų žinoti, bent kai kurie iš šių duomenų tipų
iš ankstesnės patirties.
Kas tinka už pavadinimu kurso?
Sharon?
>> VARCHAR.
>> Gerai, varchar, kuri yra kintamo Char.
Ir ką tai reiškia daugiau techniškai?
[Negirdima Pastaba]
Gerai. Taigi, tai eilutė.
Ir var aspektas iš tai reiškia ką?
Kintamasis. Bet kas tai reiškia?
Taip?
[Negirdima Pastaba]
Būtent. Taigi tai kintamasis simbolių skaičius
į Powiesić tam maksimaliai.
Taigi štai pirmasis mūsų dizaino sprendimas.
Mes iš tikrųjų turime apsispręsti kiek baitų maksimaliai
skirti kiekvienos tokios eilutės.
Apskritai, jūs norite tarsi ne padaryti jį per mažas,
ne, kad jis per didelis "Sukelti akivaizdus
jei per maža, jūs tiesiog ketina pradėti trumpinimo duomenis
ir jūs prarasite informaciją.
Ir jei jis per didelis, jūs tik tarsi pasakoja duomenų bazę
tikėtis ir optimizuoti daugiau duomenų
nei ji iš tiesų gali kada nors gauti.
Taigi, kas yra protinga jausmas skaičius nuo kurso pavadinimas?
60? Gerai, kad 60.
Tai atrodo gana pagrįstai
kaip ilgai nėra išimtys, kad.
Yra tikrai ne sunku, greitai taisyklė.
Tiesą sakant, dėl istorinių priežasčių daug
iš žmonių bus pasirinkti 255 "Sukelti ilgus metus, kad buvo tarsi
Maksimalios pagal nutylėjimą naudojant 8 baitų - 8 bitų, kaip jūsų kovos.
Norėčiau daugiau [nesigirdi] gali naudoti įgaliojimus 2
bet tai tarsi nereikšmingas.
Taigi, mes galime eiti su 60.
Tai atrodo protinga taip ilgai
kaip mes galiausiai nesigailiu jį "Sukelti, kad yra viršutinė riba.
Dabar, tarkime priešingai sprendimas buvo padaryta,
nėra kintamųjų raidės, bet tiesiog char srityje.
Taigi, skirtingai nuo C ir C + + char nereiškia, vieną char
ir duomenų bazių, kad paprastai reiškia fiksuotą skaičių
simbolių eilutę.
Koks būtų aukštyn kojom ir / arba neigiama mano pasirenkant 60
už char srityje, vietoj varchar?
Tai yra būtent pirmos rūšies Sprendimo turėsite padaryti
tikrinant [fonetinė] iš Projekto su savo partneriais.
Taip, Sharon vėl.
[Negirdima Pastaba]
Geras. Taigi, jei vardas yra mažiau
nei 60 tada jūs eikvoti ką tai delta
tarp 60 ir faktinis ilgis.
Taigi, kad tik mano išlaidavimas, daugiau baitų kaip jums reikia.
Bet kodėl jis egzistuoja?
Žinoma, yra keletas aukštyn kojom.
Taip?
[Negirdima Pastaba]
Tikrai. Todėl kartais žinotų fiksuotą skaičių
simbolių kaip 10 skaitmenų telefono numerio pvz.
Bet who cares, kaip ir kodėl Negalima tiesiog pasakyti 11 vistiek
arba kodėl negali pasakyti 60 vistiek su varchar?
Kas privalumas mes gauname žinant ir projektavimas
fiksuotą skaičių simbolių?
[Negirdima Pastaba]
Jūs esate teisingame kelyje.
Todėl optimizavimas bet tai tikrai iš - Tikrai?
[Negirdima Pastaba]
Gerai. Geras. Leiskite dėmesys tą paskutinę dalį.
Taigi indeksavimo.
Taigi paaiškėja, jei žinoti iš anksto, kad visi
jūsų laukus vyksta turi būti 60 simbolių,
galima tikrai galvoti apie tai, skiltyje "Excel" duomenų bazės
kaip turintys labai tiesus, kairėje pateisinamas
ir dešinysis kraštai pagrįstais
nes kiekvienas stulpelis yra 60 simbolių pločio.
Tai reiškia, kad šis eilutė 60 simbolių toli
iš šios eilutės, 60 simbolių atstumu nuo šio vieno
ir tai vienas ir tai vienas.
Taigi tiesiog norėčiau atgal, kai jūs išmoko C, jums turėjo laisvą prieigą
į masyvų pasaulyje, pačią mintį puslapį.
Jei stulpelyje yra atstovaujama naudojant tik fiksuoto ilgio simbolių,
Jūs galite efektyviai puslapis atsitiktinai į 60 arba 120 arba 180
ir jūs galite gauti ne atskirai stygos daug greičiau.
Tada, jei vietoj to, savo skiltyje buvo tiesiai kairysis kraštas taip sakant
bet labai tvirtas teisė krašto į kolonėlę
nes galbūt turi 10 simbolių,
15 simbolių, 5 simbolių.
Taigi tai taip pat yra kompromisas.
Ir kartais tik per bandymų ir klaidų
ir bandymai galite suprasti
, kas tikrai teisinga skambutis yra, bet tai yra rūšys
klausimų, kurie turėtų būti vyksta
per savo protus ir / arba lenteles, kai ateina laikas
sukurti savo duomenų bazę.
Taigi, nebūtinai teisinga atsakyti, bet jūs turėtumėte
bent jau kai sakinys ar du omenyje
atsarginės kokia sprendimas, kurį darome.
Gerai.
Taigi galime laikyti slinkimą čia įrašyti instrukcijas
kad yra phpmyadmin savo UI.
Taigi, numatytoji vertė vardas, man reikia nurodyti
kad ji turėtų būti turėti numatytoji vertė nulis?
Ką manote?
Ar Žinoma turėti null vardą?
Tiesiog jaučiasi keistai, tiesa?
Aš negaliu galvoti apie bet neįvardyti kursai Harvardo.
O gal ten kai neaiškus kampas atvejis
jei kursas yra suteikiamas numeris,
ir profesorius nebuvo pasirinko vardą už jį, bet -
Aš turiu galvoje, velniop visa tai,
kaip tegul net nerimauti remia tai.
Sakyčiau, suinteresuota gražus švarus duomenų bazę,
tegul nurodo, kad jūs negalite turėti numatytąją vertę null.
Kita vertus, mes galime padaryti kažkas panašaus Untitled žinoma
kuris yra ne kitaip su "Mac OS" ir "Windows daryti
Kurdami aplanką, pavyzdžiui,
bet yra, kad daro šiek tiek daugiau prasmės
kad žmogaus pamatyti kažką.
Mes kalbame apie back-end, duomenų bazė, matyt
dėl kursų kataloge.
Taigi aš ne tikrai net tarsi suteikiant jam idėja
į Untitled kursų pavadinimų
nes tai tikrai ne ketina padėti visiems.
Taigi, palikime tai, kaip niekas, Tai reiškia, kad kai įdedate
į šią duomenų bazę, jūs turite suteikti kiekvienam žinoma, pavadinimą
kurie jaučiasi šiek tiek siurblys su manimi.
Gerai.
Taigi przewijanie toliau, lyginimas.
Tai tiesiog turi daryti su Simbolių rinkiniai ir Plauktiņš
jei jūs kada nors matė pamini švedų
phpMyAdmin tai "Sukelti žmones
kuris parašė phpMyAdmin buvo Švedijos.
Ar, kad PHP ar tai MySQL?
Vienas iš dviejų, aš Pamiršau ekspromtu.
Bet tai dėl istorinių priežasčių
, bet jūs galite išreikšti kiekvienas simbolis anglų
kad galėtum su švedų todėl daugiausia ne problema.
CS50 prietaisą, nors tai naudojamas - sukonfigūruotas naudoti UTF-8,
, kad apskritai turėtų ne pop-up jums.
Atributus.
Taigi nė vienas iš jų yra tikrai svarbūs.
Matau dvejetainė, unsigned, Unsigned zerofill,
ir atnaujinti dabartinę laiko žymos.
Tas erdvinio kampo laukas taikoma tik kai skaitinį lauką
arba kai laiko laukų.
Taigi, mes praleisti , kad visiškai.
Null. Ar šis laukas yra niekinis?
Taigi Nr. Mes jau turime kad pokalbių rūšiuoti.
Taigi, mes nenorime Numatytoji reikšmė.
Mes nenorime, kad ji būtų niekinis.
Ką apie indeksą?
Yra keturi pasirinkimai čia.
Ką reiškia, jei mes nurodome
kad ši eilutė vyksta būti pirminis raktas?
Mintys atgal į CS50 arba CS165 jei jūs atlikote jį.
[Negirdima Pastaba]
Būtent. Taigi pirminis raktas pagal apibrėžimą yra laukas
, kuris vienareikšmiškai identifikuoja kiekvienoje eilutėje šioje lentelėje.
Ir jūs galite juo remtis daryti kad unikalus identifikavimo.
Taigi, ką tai reiškia tada tiesiog būti unikalus?
Na, tarsi šie du yra tarsi
iš pagal poveikį po gaubtu.
Bet apskritai, pirminis raktas yra rūšiuoti sutartį jūs darote
su duomenų bazės dalykas.
Kai aš užklausas ieško žinoma,
Aš ruošiuosi naudoti šį konkrečioje srityje.
Ir mes grįžti į kodėl mes galime turėti du
tokie pasirinkimai čia, pagrindinis arba unikalus.
Unikalus tiesiog sako, tai laukas bus unikalus
bet aš tikrai ne priimant bet kokį tipo žodinis įsipareigojimas čia
naudoti tą lauką padaryti savo paieškas
dėl priežasčių, mes matyti tik akimirką.
Jei mes nurodome, o indeksas, ką reiškia nurodyti
kad laukas turi rodyklę ant jo?
Taip?
[Negirdima Pastaba]
Būtent. Tai buvo optimizuotas užklausą.
Taigi jūs - duomenų bazės serveris, Oracle, MySQL, nepriklausomai,
paprastai dirba savo magija užkulisiuose, kai paspausite
kad galimybė, o tada spustelėkite Išsaugoti ir ji bus sukurti
iki paprastai medžio struktūra, B-medžiai, jei mačiau
ar girdėjote nuo kurios yra labai trumpo ieškote medis
kuri suteikia jums labai gražus logaritmine savybės
ieškant duomenimis.
Jei nenurodote puslapis į lauką, kas vyksta
kad veikia laiko ieškoti
už savavališkas [Fonetinė] Žinoma vardas?
Kas tai?
[Negirdima Pastaba]
O, [nesigirdi], linijiniai, tiesa?
Jei jis nėra optimizacijos suteikta duomenų bazėje
ir jūs ne minties duomenų bazė, kokios
Duomenų tikėtis.
Geriausia, ką galite padaryti, tai patikrinti viskas, kai jūs ieškote
kai vertės, ypač jei gali
iš tiesų gali būti dublikatai.
Visas tekstas, tuo tarpu, mes pakylės mūsų rankas dabar.
Bet apskritai, tai yra tipo indeksas, kuris leidžia jums
optimizuoti raktažodį ieškos lauką.
Taigi, tai gali būti geras kandidatas
už kaip kurso aprašymas kur jums gali tekti pora
dalių ir galbūt noriu padaryti podciągi rungtynes.
Visatekstė paprastai tegul jums tai padaryti gana efektyviai.
AI, tai yra siaubinga rūšiuoti paaiškinimą, bet jei mes hover
per jį pamatysite Auto prieaugio.
Netaikoma tiek čia tačiau automatinis padidinimas yra naudingas
už kaip int lauke, nes duomenų bazė rūpinsis
apie plius plusing procesą ji kiekvieną kartą jūs įdėklą.
Taigi, kad net jei du žmonės tiesiog spustelėkite Pateikti
tuo pačiu metu, ir bandyti sukurti eilutę kažkaip
duomenų bazėje, vienas iš jie gaus numerio I,
kitas gaus skaičius aš plius 1.
Jūs neturite jaudintis
apie du numeriai būdami skiriamas vienodai, jei buvo
tai padaryti patys kodą.
Gerai.
Taigi aš tipo patinka, kai mes turime pavadinimas turi būti.
Taigi galime spustelėkite Įrašyti.
Ar tai geras dizainas už duomenų bazės lentelės?
Ir kaip žemę, jei aprūdijęs SQL ar jums rūšiuoti
tiesiog visada užmerkti akių į tai, kas vyksta,
Galėčiau įvedėte būtent tai -
šios trys kryptys kad juoda ir balta greitai
į komandų eilutę klientas ar aš galėjo padaryti
kad kodas programiškai.
Taigi visi phpMyAdmin darai man tiesiog taupyti man pastangų
atsiminti kartais sintaksė ir rašyti už
kaip nuobodų komandas.
Gerai.
Taigi, tai nesinori geriausias dizainas, vienas lauko stalas.
Dabar galėtume turėti tokie dalykai kaip profesoriai
ir vietos ir aprašymai.
Bet net ir tada, naudojant tik vardą
nustatyti kursai nesijaučia idealus.
Kas paprastai turi mes padarėme praeityje
jei jūs naudojamas duomenų bazes vienareikšmiškai eilutės?
Nenaudojate varchars paprastai.
Taip?
[Negirdima Pastaba]
Taip. Taigi paprastai Žinoma vardą.
Taigi, labiausiai paplitęs požiūris čia ypač
naudojant sistemą iš tikrųjų yra tik
naudoti, skaičių, kaip sveikasis skaičius.
Taigi leiskite man eiti į priekį ir tai padaryti.
Ir mes galime tai padaryti nedaug būdų, bet pranešimas, jei aš padidinti
ir ant dugno čia.
Aš ruošiuosi pasakyti pridėti vieną tuo lentelės pabaigoje kolonos,
paprastai tik vaizdo patogiau jums įdėti ID
į lentelės pradžią nors tai neturi jokio realaus
funkcinis poveikis.
Taigi, aš ruošiuosi pasakyti pridėti vieną stulpelius
ne lentelės pradžioje.
Aš ruošiuosi spustelėkite Eiti, kad suteikia man atgal šį UI čia.
Pavadinkime šį vardą.
Jei mes manome, kad mes ketiname turėti ne daugiau nuveikti 4 mln kursai
int laukas yra gerai.
Mes netgi gali trauktis žemyn
tačiau erdvė yra pigus taigi, kas tikrai rūpi.
Bet mes stengiamės rašyti "Facebook" dabar
gali būti blogas dalykas numatyti dideli Ints
kuri suteikia mums 64-bitų Ints
bet tada jūs tiesiog dvigubai bitų skaičius
kad jūs naudojate, tokie maži, kompromisas
bet kažkas apsvarstyti.
Dabar, tai painu palikimas dalykas.
Jūs galite prisiminti naudoti MySQL
kad bet kuriuo metu galite paskelbti int laukas jūs dažnai pamatyti skaičių
šalia jo kaip skaičius 10.
Tai neturi nieko bendra su skaičiaus dydis
arba bitų skaičius.
Tai turi daryti su numeriu simbolių, kurie yra naudojami
vizualiai ekranas kad int laukas
kai naudojant terminalo langą.
Taigi matome, kad per akimirką.
Taigi, neturi būti klaidinami įvesdami numerius
ten nors tai esmės klausia mus
vienas čia.
Čionai, aš ruošiuosi eiti į priekį ir pasakyti nepasirašytas.
Nėra jokios priežasties, kad atliekų visi mūsų neigiamais skaičiais
nes duomenų bazė paprastai vyksta
prisiimti teigiamas vertės arba NULL.
ID numeris tikrai neturėtų būti tuščias.
Ir ką jūs manote apie Šio ID laukas indeksas?
Padarykime tai pagrindinis.
Taigi, ką daryti, jei, nors, kaip aš galiu galvoja tik apie vieną CS164 žinoma
Harvarde, ir tik vienas CS50 Žinoma Harvarde
ir tai gana daug tiesa bendras
kad ten gal išimtys [Nesigirdi] abu semestrus
ar kažkas keistai panašaus.
Bet dar svarbiau yra tai, kodėl tai geriau
naudoti skaitinę neatsiejama ID, identifikuoti kursus, o
ne tik unikali eilutę?
Taip?
[Negirdima Pastaba]
Gerai, įdomu.
Taigi, jei mes turėjome tarsi kryžminio išvardyti kursai.
Štai geras pavyzdys.
Aš nesu įsitikinęs, norėčiau spręsti, kad nors
suteikiant jiems tas pats ID numeris, jei tai
kur jūs ketinate su tuo.
Ar ne? Gerai. Bet tikrai kampas atveju apsvarstyti.
Jei yra tarsi - mums reikia kokio nors
iš aliasing potencialiai.
[Negirdima Pastaba]
Tikrai.
[Negirdima Pastaba]
Štai geras pavyzdys.
Vardas gali pasikeisti laikas, visiškai pagrįsta.
Ką dar?
[Negirdima Pastaba]
Atsiprašome, pakartosiu dar kartą.
[Negirdima Pastaba]
Taip, tiksliai.
Taigi tikrai, tai nekilnojamojo kniedė yra
kad naudojant 32 bitų int yra tikriausiai bus greičiau
nei kai kintamasis ilgis char srityje.
Pirmuoju atveju gali tiesiog tilpti registrą,
jau nekalbant apie daug mažiau atminties pėdsaką.
Pastaruoju atveju, jūs ketinate turi daryti kurortas [fonetinė]
į styginių palyginimai patys su linijine
į dydžio Styga gali.
Taigi, tai tik gražus optimizavimas,
ir ypač tai, kas vyksta
leiskite mums padaryti tai, kas vadinama Sujungti efektyviau
vos akimirką.
Taigi galime daryti.
Mes nurodyti, kad tai yra pagrindinis
nes aš ne itin nori rūpintis ar galvoti
apie tai, kas skaičius yra kurso.
Leiskite jiems priimti kokia vertės jie nori.
Aš ruošiuosi pasakyti auto prieaugio kad galėčiau perduoti tą detalę.
Kaip panaikinti galbūt žinau, kad Harvardo
bent tikrai turi unikalią numeriai kursus.
Aš neturiu atsiminimai kas tai yra kursai.
Žinau, kad CS50 s katalogo numeris yra 4949,
visiškai savavališkai.
Bet ten keistai kampiniai atvejų, kad net
į registrarial sąvartyną , žinoma katalogas duomenis,
kartais kursai, seni kursai yra kaip 4 numeris.
Tačiau techniškai tai laukas yra char laukas
kad tiesiog prasideda 0004.
Taigi čia taip pat, jūs turite būti atsargūs atskirti
tarp dalykų, pavyzdžiui, Žinoma, katalogo numeris
kurie gali turėti tam tikrą žmogaus sąvoka fiksuoto ilgio, 0004,
ir jūs neturėtumėte laikyti kad, pavyzdžiui, yra int.
Tai lauko natūra turėtų būti saugomos kur nors kitur.
Taigi, Harvardo, jei mes buvome iš tikrųjų padaryti kursą
prekybos įrankis, tai tikriausiai nepakanka
NUMBER kursai tik su 1, 2, 3, 4.
Mes tikriausiai turėsime
turėti kitą lauką vadinamas katalogo numeris,
, kuris taip pat turėtų būti unikalus Based
žmogaus konvencijų čia bet tai nėra geriausias pasirinkimas
unikalus identifikatorius, nes tai gali būti kintamo ilgio.
Jis gali būti keturių simbolių, gali būti penki.
Tiesą sakant, manau, kad nedaug prieš keletą metų jie juda
penkių simbolių Nes ten buvo daugiau nei 999 kursų
iš viso ar kažkas panašaus kad arba 9999 kursai.
Taigi, tai gali būti pavyzdys jei laukas yra ne pirminiai
bet jis turi būti unikalus.
Ir elektroninio pašto adresas yra dar vienas.
Galbūt Jūs norite, kad ji būtų unikali
bet nebūtinai jūsų pagrindinis raktas.
Gerai.
Taigi leiskite man sprogimo iš kito stalo daug greičiau nei šis.
Taigi, aš ruošiuosi tai vadina vienas instruktorių ir aš ruošiuosi
duoti tai iš viso skaičių iš dviejų stulpelių.
Aš ruošiuosi mokytis mano pamoka paskutinį kartą.
Aš ruošiuosi skambinti Pirmame stulpelyje vardą.
Aš ruošiuosi skambinti antro stulpelio pavadinimas.
Aš taip pat ketina daryti VARCHAR.
Aš ruošiuosi prisiimti ne profesorius turi pavadinimą ilgiau
nei 60 simbolių, nors dabar tai gali būti stumia jį
su kai ilgi pavadinimai, ypatingą žmonės su vidutinio pavadinimų.
Tai gerai šiandien.
Taigi leiskite pereiti čia.
Padarykime tai nepasirašytos dar kartą.
Padarykime šį pradinį.
Ir leisime pasikartojančius vardus
jei yra du John Smith ar kažkas panašaus.
Ir dabar mes turime dvi lenteles.
Taigi dabar, tai kyla klausimas, kaip man susieti
į instruktoriumi kurso?
Jaučiu, kaip aš tipo turiu prieš save
nes jei instruktorius moko kursą,
mano pirmasis instinktas būtų tikrai bus grįžti
į kursus suprasti, tai nebuvo gera idėja.
Leiskite man iš tikrųjų pridėti vieną stulpelį į lentelės pabaigoje,
spustelėkite Eiti, ir aš skambinti šiuo instruktorius.
Ir aš padaryti šį varchar ir aš, kad tai 60.
O gal aš palikti jį null dabar
tuo atveju, kursas turi ne buvo nepasirašytas ir instruktorius
kurie kartais būna prieš Terminas prasideda ir spustelėkite Įrašyti.
Kuris iš šių dizainų jums labiau patinka?
Pirmasis, kai turime Atskiroje Instruktoriaus lentelė
arba antrasis, jei mes tiesiog pridėti lauką kurso?
Todėl glaudžiai susieti instruktorius su žinoma.
[Negirdima Pastaba]
Gerai. Geras. Bet leiskite man stumti atgal.
Tai tiesiog taip paprasta, kaip aš galiu tiesiog įveskite asmens vardą
į šią lentelę, pavyzdžiui, tikrai , kuri turi tam tikrą vertę, arba -?
[Negirdima Pastaba]
Gerai.
Na, leiskite man sunku čia.
Taigi, leiskite man pasakyti, kad šis kursas yra CS51
ir aš žinau, tai mokė šiemet du žmonės.
Taigi, Henris Leitner Jesse tow bet -
todėl aš tiesiog įdėti kablelį tarp dviejų, teisė.
Aš tikrai gerai CSV iš praeities.
[Negirdima Pastaba]
Būtent, teisingai.
Kaip greitai, kaip jūs imtis kažką panašaus į tai,
kurį gali jausti protingi ir galite jaustis
kaip tai tipo protingas.
Aš tarsi skolinimosi vieną idėja, kuri yra gerai dirbti,
skolintis naują idėją ir rūšiuoti juos sujungti.
Jūs rūšies visiškai nugalėti naudojant duomenų bazę taškas
į pirmąją vietą 'priežastis jei viena iš vertybių,
naudojant jis yra greitesnis paieškos dėl įvairių indeksų
Stalai ir kad gali būti pastatyta už jus
pačios duomenų bazės variklis.
Dabar, jei norite ieškoti už visus kursus
kad Jesse moko, dabar jūs turite kad nereikia fragmentą atitikimo visuose
instruktorius srityse,
kuris iš esmės reiškia linijinį ieškoti vėl "priežastis turite
rasti šią savavališką rinkinys trys simboliai visur
į instruktoriaus srityje, prieš kurį
per gal po kableliais.
Taigi tai tikrai nėra Bode gerai.
Taigi leiskite man grįžti prie stalo.
Leiskite man eiti į priekį kursai, anuliuoti, kad.
Aš tiesiog eiti į priekį ir upuść šioje srityje.
Ir jei norite tai padaryti rankiniu būdu,
sintaksė ALTER TABLE kursai DROP instruktorius.
Taigi eikime į priekį ir pasakyti "taip", kad.
Ir grįžti į ankstesniame šios idėjos
kur aš turiu atskirą lentelė instruktoriai.
Bet dabar tai jaučiasi šiek tiek kaip aš galiu įdėti kursą
Be abejo stalo ir instruktorius
Į instruktoriaus stalo, bet aš kažkaip turi susieti dvi.
Ir kaip jūs siūlome mes tai darome?
[Negirdima Pastaba]
Geras. Taigi galime daryti.
Ir jūs galite tai vadina lentelė teorijos nieko.
Aš sąmoningai vadiname tai, ką daug
Sąrangų būtų ją vadina, tarp jų,
Laravel kaip jūs matysite šiek tiek.
Aš ruošiuosi jį vadiname kursas pabrėžti instruktorius.
Naudojant vienaskaitos tai atveju kiekvienam iš žodžių
ir visi mažosiomis vėl, ir taip pat su -
tada pagal abėcėlę rūšiuojami iš kairės į dešinę.
Tai visiškai savavališkas, tačiau jis yra linkęs būti konvencija
į šias sistemas daug PHP ir kitomis kalbomis.
Kiek stulpeliai man reikia, tai, ką mes vadiname prisijungti lentelę,
prisijungti prie kitų dviejų stalai kartu?
Trys stulpeliai?
Kurių vienas - ką jie?
[Negirdima Pastaba]
Gerai. Geras. Tai veikia.
Ir mes galime techniškai supjaustyti kampe, bet čia daug
Sąrangų ypač vis dar duoti net ir šios eilutės
unikalus ID, nors semantiškai eilutė
kad mes tikrai rūpi ar stulpelius, kad mes tikrai rūpi
apie yra pastarosios dvi ką jūs pasakėte, žinoma ID
ir instruktorius vardą.
Taigi galime tai padaryti.
Aš kviesiu šią eilutę tik ID, kaip darėme anksčiau.
Bet tai vienas aš ruošiuosi skambinti kurso ID.
Tai vienas aš ruošiuosi skambinti instruktorius ID.
Ir aš ruošiuosi nurodyta, kad visi
iš jų yra nepasirašyti Nes aš noriu
padidinti savo 4 milijardų int asortimentą.
Nė vienas iš jų turėtų būti niekinis.
Aš ruošiuosi nurodyti, kad ID numeris vis tiek turėtų būti pagrindinis.
Ir vėl, tai yra tik konvencija,
Sąrangų daug net jei jums nereikia rūšiuoti
iš esmės turi unikalus identifikatorius eilutėje,
pasirodo, tai patogu kodas, SQL, kas vyksta
būti automatiškai sukurtas mums.
Taigi, aš paliksiu, kad pagrindinis.
Bet dabar, aš tipo turi dizaino sprendimą,
Žinoma ID ir instruktorius vardą.
Kas indeksai, jei bet jie turėtų gauti?
Jei aš nepalieka indeksus, kas potekstė?
Kas reikšmė?
Veiklos, kaip ir anksčiau, tiesa?
Jei nėra rodiklis, geriausia, ką galite padaryti, tai natūra
iš [nesigirdi] per Visa tai ieško numerius.
Taigi, kad nesijaučia protingas.
Tai turėtų būti pagrindinis?
Tad kodėl gi ne?
Kodėl gi ne pagrindinis?
[Negirdima Pastaba]
Tobula. Taigi mes suristi iš [fonetinė] pagrindinis.
Mes jau pasirinko tai.
Taigi, ji turėtų būti unikalus?
[Negirdima Pastaba]
Geras. Taigi, jei jūs prisiimate vienas instruktorius per kursą,
visiškai gerai.
Ir tai tikrai dažnas atvejis
bet mes jau atidėlioti vieną galbūt susipažinę pavyzdys.
CS51 gavo du instruktoriai todėl mes natūra
ir dabar prisukamas tokiu atveju.
Jeigu mes padarėme tik leidžia vienas instruktorius,
mes iš tikrųjų gali padaryti būdą su prie stalo apskritai,
grįžti į ankstesnį požiūrį
ir įdėti ne asmens vardas galbūt, bet instruktoriaus vardą.
Jei žinote, kas žinoma kaip tiesiog vienas instruktorius jums gali turėti tik
vienas stulpelis.
Bet skirtumai yra kas gavo mus į bėdą.
Gerai.
Taigi, ji turėtų būti unikalus?
Ne Visas tekstas nėra jaustis taikoma.
Kaip anksčiau sakėme, kad tai
už kaip eilutės ir atitikimo aprašymus.
Taigi, ką apie indeksą?
Na, indeksas yra tikriausiai mūsų geriausias kandidatas
kuris pasakoja MySQL Optimizuoti kai ieškoma tai
arba leisk man smulkiau, optimizuoti paieškos ar prie jo prisijungia
kaip mes matome tik akimirką
taip, kad jie šiek tiek efektyviau
nei kas nors grynai linijinio.
Ar aš noriu auto padidina šį lauką?
Taigi ne, nes tiesa tėvų elementas egzistuoja
kursuose stalo.
Štai kur jis ketina gauti plius,
plius kai tai iš tikrųjų įdėta.
Čia tai viskas vyksta būti įterpti neautomatiniu
mūsų turbūt kodą.
Taigi galime tiesiog nurodyti kad abu Žinoma ID
ir instruktorius ID turi indeksus.
Dabar mes eiti į priekį ir išsaugoti.
Ir dabar, tiesiog parodyti Jūs korespondencija
tarp to, kas yra gražus GUI sąsaja
ir komandų eilutės sąsaja.
Leiskite man eiti į priekį ir padaryti Toliau šiame MySQL eilutę.
Aš ruošiuosi pasakyti naudojimo courses50
kuris yra savavališkai vardas Daviau į šią duomenų bazę.
Ir dabar, aš net prisiminti, ką mes padarėme.
Taigi leiskite man įvesti Rodyti lentelės
ir apskritai kabliataškiais bus jūsų draugas čia
baigti užklausą.
Ir ten ji yra.
Taigi čia yra eilutės ar veikiau lentelės, kad mes turime čia.
Dabar, aš pamiršti, ką Žinoma, atrodo,
todėl leiskite man nereikia apibūdinti kursai o dabar matau Rūšiuoti ASCII
arba kokia versija phpMyAdmin darė
ir matau, kad ID int.
Yra tai, kad 10.
Ką tai reiškia?
Tai tiesiog reiškia, kad, kai tai Rodomi ji ketina imtis
iki 10 simbolių terminalo langą.
Ar nullable?
Ne, tai pirminis raktas.
Ar tai gali turėti numatytąją reikšmę?
No ir Extra kuris yra ypatingas vėliavos, kaip auto prieaugio.
Taigi galime tiesiog padaryti pora Quick intarpai čia.
Aš ruošiuosi eiti į - tegul tiesiog pasakyti.
Leiskite pakeisti būseną į skaidrę
kur aš tarsi iš anksto paruošti tai.
Tai santrauka tada, visų šių lentelių trys.
Aš jau tiesiog rankiniu būdu įvedėte pirmąją komandą.
Ir čia, nuėjau į priekį ir įveskite kiti už jus.
Tai tik stilistinė dalykas.
Apskritai, daug žmonių įveskite SQL visais dangteliais
ir tada stalo pavadinimai ir lauko vardai mažosiomis raidėmis,
jei tik dėl to, rūšies medynų
, kas jūsų terminologija ir kas bazė sintaksė.
Taigi čia mes turime tris stalai, kursai, instruktoriai,
ir kursai instruktoriai.
Skaidrėje Aš iš anksto, Aš neturėjau ID lauką
bet tai nėra iš tikrųjų blogas dalykas ne visiems.
Mes tiesiog pamatyti Trečiame stulpelyje ten.
Jeigu aš padariau, kad čia?
Taigi dabar leiskite man pasiūlyti, kad mes daug intarpais krūva.
Taigi čia yra kai kurie duomenys, Aš priartinti
Taigi, aš ruošiuosi pasiūlyti kad kursuose,
mes tik su trijų kursų.
Ir aš pasirinkau šiuos tris Nes jie atstovas
iš kai kurių gražus - jie turi keletas gražus savybės.
CS1, CS50, CS51, jie turi vis ID
bet ką ID kas yra visiškai nesvarbus.
Tai tiesiog tokia tvarka, kokia jie buvo auto įdėta mane.
Kaip apie instruktorių?
Taigi dabar, nes Henris Leitner moko tiek CS1 ir CS51,
tai tipo tinkamas Poveikis mūsų dizainas.
Jesse moko CS51 ir Malan moko CS50.
Taigi dabar - ar veikiau tai yra tik tie žmonės unikalus ID.
Kursai ir instruktoriai, - kurso instruktoriai, pastebėsite čia.
Žinoma ID1, kuris buvo CS1 yra mokoma
pagal instruktoriaus ID1 kuris Henris.
Žinoma ID2, kurį aš manau buvo CS50 yra mokoma
pagal instruktoriaus ID2, kuris yra Malan.
Ir tada galiausiai, CS51, ir pastebėsite, mes turime dvi eilutes.
Ir dabar tai kodėl prisijungti Lentelėje yra galingas mokoma
tiek Henry ir Jesės.
Taigi tai yra viskas gerai ir gerai,
bet galiu vos prisiminti išjungti viršuje
mano galva, kas yra kas čia.
Kaip jūs galite galbūt spręsti, kad kodas,
nereikia kietieji kodas dalykų?
Na, tai kur pati SQL pradeda tapti mūsų draugas.
Ir aš pasiūlyti, kad galime rašyti taip.
Aš tai padaryti per Tikrasis eilutę.
Leiskite man eiti į priekį ir įterpti šiuos dalykus.
Taigi, į kursų lentelę darykime ką mes turėjome
metu senumo.
Aš ruošiuosi į priekį ir pasakyti, tegul įterpti CS1 ir CS50.
Leiskite įdėti keli eilučių vienu metu, CS51.
Dabar leiskite man eiti į priekį ir išsaugoti.
Gerai, kad aš tiesiog atkurti kuo greičiau
kaip aš galiu santykiai mes ką tik matė ekrane.
Ir taip čia mes turime Leitner, čia mes turime Malan.
Leiskite duoti save kita eilutė, ir tow.
Dabar leiskite man išsaugoti tai.
Ir aš darau juos sąmoningai į ta pačia tvarka.
Ne, aš pamiršau, kad tai auto prieaugio.
Leiskite greitai išspręsti šią problemą.
Aš išspręsti šią problemą ir Prisijungę kodas.
Tai nepavyko, nes į šalį.
Tai, kad aš negalėjau įterpti Leitner ir Malan
ir tow nepavyko, nes aš ne nurodyti identifikacinį numerį net jei
jis tikisi vieną ir aš pamiršo patikrinti auto prieaugio,
o tai reiškia, jie visi pagal nutylėjimą vis nulis.
Bet tai tada prieštarauja kuris turtas, kad mes nurodėte.
Pirminis raktas buvo pažeista todėl net ne leiskite man tai padaryti.
Taigi leiskite man išspręsti šią problemą.
Dabar leiskite man grįžti į Įdėkite kortelę čia ir nurodyti
kad aš noriu LEITNER Malan ir dar viena eilutė, tow.
Ir dabar, galiausiai, tik vienas, kad tiek sunku
prisiminti tai, žinoma, instruktorius.
Leiskite įdėti dabar, kad Žinoma ID1 yra instruktorius ID1
todėl tai CS1 Henry.
Žinoma ID2 yra instruktorius ID2 kuris yra CS50 ir Malan.
Ir tada paskutiniai turime nerimauti Žinoma ID3
kuris yra CS51, mokoma
iki kursų instruktorius 1, tai yra Henris.
O trys kaip ir mokė 3, kuris yra tow.
Taigi tikiuosi dabar mes atkūrė tai -
damn it, aš tą patį.
Žinoma instruktorius reikia auto prieaugio.
Gerai.
Aš tai padaryti greičiau, šį kartą, Žinoma, 1 kursas 1, 2, 2.
Ir dabar, galiausiai, mes CS51 kuris kursas ID3 ir Henry.
Ir žinoma, ID3 Jesse.
Tai atrodo gerai.
Gerai. Taigi dabar grįžkime prie terminalo lange.
Taigi, jei aš aprašyti kursai matysime tai.
Jei aš noriu pamatyti kursus galiu dabar daryti pasirinkite žvaigždė iš kursų
kabliataškis, o dabar matome šias vertybes.
Ir dabar, ką dar aš noriu daryti?
Pasirinkite žvaigždę iš instruktorių, tai kaip ir tikėjausi,
ir pasirinkite žvaigždė iš kursų - Žinoma pabraukimo instruktorius.
Taigi, kaip man dabar prisijungti šios lentelės?
Taigi pasirinkus grožis ID reikšmės šiuo atveju yra
kad jei jūs manote apie tai atsižvelgiant kursų lentelę
ir instruktorius stalas ir tada įterpti
tarp šių dviejų savo protai Žinoma instruktorius
Lentelėje galite rūšies linija iki visų šių tapatybės stulpelių
todėl, kad jūs jas sujungti į vienas masinis stulpelis, turi visas
informacijos mes rūpinamės.
SQL sintaksė tai nebūtinai yra akivaizdūs,
bet pažiūrėkime, ar mes galime tai padaryti.
Taigi pasirinkite žvaigždė iš kursų
ir ten nedaug būdas kaip mes galime tai padaryti.
Aš ruošiuosi paspauskite Enter tiesiog rūšies formato dalykų gražiai,
bet kad rodyklė yra tik simptomas kliento pusėje įrankis,
tai neturi nieko bendro daryti su pačiu SQL.
Taigi pasirinkite žvaigždė iš kursų.
Aš ruošiuosi dabar prisijungti kursai lentelė
kurso instruktorius lentelėje.
Kaip? Į lauką, vadinamą courses.id lygu kursas
pabrėžti instruktorius dot kas pavadinimas
atitinkamo srityje čia, kad aš noriu pora.
Tai ne vardą.
<Input - ką, atsiprašau?
>> Kursai vardą.
Gerai, leiskite man nutolinti.
Bet aš noriu, kad būtų tai dar vieną žingsnį.
Aš dabar tai padarė stalas ir šitas.
Dabar aš noriu traukti šis vaikinas taip pat.
Taigi, leiskite man toliau prisijungti visą šį dalyką
nuo instruktoriaus lentelė, ką?
Žinoma pabraukimo instructor.instructor id
lygu instructors.id.
Taigi, mes galime parašiau ši užklausa keliais būdais.
Tvarka, kuria aš tai padariau yra ne visi, kad svarbu.
Aš tiesiog rūšies tai padarė mano protas iš kairės į dešinę.
Mes galėjome padaryti šį į keletą skirtingų būdų,
bet jei aš dabar kabliataškis ir paspauskite "Enter",
Pranešimas Aš grįšiu nauja laikiną lentelę, rezultatas rinkinys
todėl kalbėti bazės kalbėti.
Ir ką aš turiu Šiame dalykas?
Turiu apie ID, pavadinimas, kitas ID numeris, kuris yra natūra paini
man šiuo metu, Žinoma ID,
instruktorius ID, ID, vardas ir pavardė.
Taigi, ne dienos pabaigoje mes turime teisingus duomenis dabar.
Matau, kad CS1 yra mokoma pagal Leitner, CS51 yra mokoma
pagal Leitner ir tow ir CS50 dėsto Malan.
Bet aš šiek tiek nervų apie šis dviprasmiškumas aš sukūriau.
Kas dviprasmiškumas Aš užuominą?
Taip?
[Negirdima Pastaba]
Yra trys ID stulpeliai.
Taigi, mes iš tikrųjų gali išspręsti šią problemą ir mes ketiname iš tikrųjų vyksta
atidėti į mūsų sistemą galiausiai padėti mums tai,
tačiau paaiškėja, kad ten SQL raktažodį vadinamas S
Joje galite nurodyti alias, naujas pavadinimas srityje
todėl, kad mes galime išvengti dviprasmiškumas apskritai.
Bet supratau, kad jei mes ne spręsti jį kažkaip kaip su
kad žodį arba sistema,
ten galbūt tai dviprasmiškumas, jei bandysite
atidarykite ID lauką nes aiškiai yra tie,
dvigubų pavadinimų ten.
Taigi, tai yra prisijungti ir aš manau, savo proto akis geriausias būdas
galvoti apie tai tikrai yra imtis iš dviejų lentelių,
linija juos į būdas, kad jūs norite.
Ir tai yra vadinamasis vidinis prisijungti ta prasme,
kad mes derinant lentelės čia.
Yra ir kitų tipų prisijungia, kad mes galime susidurti
per tam tikrą laiką, pavyzdžiui, išorinis prisijungia,
tačiau didžioji dalis šios yra tikriausiai labiausiai paplitusi
remontui duomenis.
Ką mes padarėme dabar yra apskritai tai, kas vadinama
normalizuoti savo duomenis, kad nėra dubliavimo visur
savo lenteles.
Ir dubliavimo, norėčiau reiškė, kad pirmasis požiūris.
Jei būtume paminėti Leitner ir tow keliose vietose
jūsų duomenų bazėje, tai ne paprastai geriausias sprendimas
ypač jei jų pavadinimas galybė pakeisti viršvalandžius arba tuo atveju,
santuokos, mergautinė pavardė galia keisti save tiesiog norite vieną
kanoninė vieta kai duomenų vertė kaip pavadinimas.
Gerai.
Taigi, norint Priminti, mes jau keli dizaino sprendimai padaryti
ir svarbiausi tikriausiai sumažino kai
iš šių indeksų pasirinkimo.
Tačiau leiskite man priminti, Vienas kitas dalykas, taip pat.
Jei aš einu atgal į phpMyAdmin,
vienas bruožas, galbūt ne susidūrė su kol kas tėra
taip.
Jei aš einu į kursų instruktorius, Aš jau nebuvo nurodyta, kad kai kurie
iš šių dalykų turi indeksus.
Bet leiskite man eiti į struktūrą skirtukas instruktoriumi.
Leiskite spustelėkite dabar indeksai ir pastebite tokius dalykus.
Aš čia nurodyta, kad yra pirminis raktas
kolonėlėje vadinamas vardą.
Tai šiek tiek sudėtinga būdas nurodant galingumo
ir tt kaip nuoroda į lauko dydis baitais.
Bet dabar aš taip pat turiu kitą srityje, žinoma, ID, kuris yra -
Žinoma ID, kuris atliekamas iš anksto ir unikalus, gerai.
Aš tai viena iš iš anksto mums.
Taigi, kodėl tai - leiskite lašas tai už diskusijų labui.
O, žinote, ką aš padariau?
Gerai. Taigi, anksčiau, vienas iš pavojuose nuo naudojant GUI įrankis
kaip šis, kai mes buvome kuriant šią prisijungti lentelę,
Žinoma instruktorius lentelė, Primenu, kad aš nurodyta
kad aš noriu indeksą šioje srityje
ir apie tai puslapis kitoje srityje.
Šalutinis poveikis patikrinti šių abiejų dėžės
tame pačiame ekrane yra tai, kad phpMyAdmin išplaukia iš to,
kad aš noriu ne du atskiri rodikliai,
kad noriu prisijungti indeksą, kuris paprastai yra tik naudinga
arba labiausiai naudinga, kai jūs ieškantys ne viena sritis,
bet abu šiose srityse.
Ir štai kodėl mes turėjome juos jungti ten
todėl aš jį sumažėjo "kelia tai, kad buvo ne ką skirti.
Atvirkščiai, aš ruošiuosi perdaryti tai čia.
Aš ruošiuosi eiti į kursus ID
ir pagal daugiau Aš tiesiog sakys pridėti rodyklę.
Aš ruošiuosi eiti pagal instruktorius ID ir pasakyti pridėti rodyklę.
Ir dabar, jei mes paspauskite čia, DĖMESIO Mes turime tris rodiklius,
vienas pagrindinis ir kaip aš skirti vieną kiekvienam
tų užsienio raktus.
Ir aš tai vadinu užsienio, nes Žinoma ID šioje lentelėje žemėlapiai
į kurią lauko, tiesiog turi būti aišku, kitoje lentelėje.
Pirminis raktas vadinamas ID, į lentelę vadinamas kursai,
ir pats sandoris už kita.
Bet dabar, yra įdomus apgauti ir tikrai technika.
Aš tiesiog nuėjo į priekį ir leiskite padaryti, kad šiek tiek lėčiau.
Tame pačiame ekrane, pranešimas ji sako Santykių vaizdą čia.
Paspaudžiu tai ir dabar pastebėti, aš gauti padaryti keletą apribojimų.
Taigi, vienas iš ilguoju pat
ne tik naudojant konceptualiai išorinius raktus ir kitus stalai
kaip mes ką tik apie tai kad nustatant indeksą
juos galite duomenų bazė padės jums dar labiau
užtikrinti vientisumą tos srityje.
Tiksliau, aš dabar gali nurodyti per šį kritimą
nustatyta, kad Žinoma ID laukas
Šioje lentelėje faktiškai žemėlapiai į courses.id.
Be to, instruktorius pabraukimo ID priskiriama instructors.id.
Dabar, kodėl tai yra naudinga?
Na, pastebėsite, dešinėje pus, kas atrodo dabar.
Dabar galiu mokyti duomenų bazė, jei Henris
Pavyzdžiui kada nors išeis į pensiją ir jo eilė išnyksta
nuo instruktoriaus stalo apskritai taip yra
ištrinti, galiu per tai pakopinis metodas užtikrina
kad bet kokie kursai moko yra nebėra susijęs su juo.
Galiu mokyti duomenų bazę ištrinti eilutes
Šiame vadinamosios prisijungti stalo automatiškai, jei Henry arba jei viena
jo kursus dingsta.
Dabar, kodėl tai yra patrauklus?
Taip?
[Negirdima Pastaba]
Jums tereikia padaryti vieną kartą ir ilgesnio laikotarpio, tiesa?
Tai labai paprasta, jei tarsi žmonės ateina ir išeina, kursai būna
ir išeina, jūsų duomenų bazė galėtų tiesiog gauti šiukšlinas su kursų
ir su fakulteto, kurie yra ne daugiau susiję su duomenų rinkiniu.
Ir jūsų duomenys pradeda gauti labai nepatogus ir purvinas ir pasenusi,
ir todėl čia mes galime rūšiuoti
iš įgyvendinti kai šie apribojimai.
Taip?
[Negirdima Pastaba]
Ji žino būdu tai.
Tai ekranas, kuriame mes nurodant sąsajas
tarp užsienio rakto ir pirminis raktas.
Taigi visi pavadinimų konvencijos aš užsiminiau
kad anksčiau yra tik konvencijos.
Nėra būdingą reikšmę.
Tai ekranas kuri yra naudinga tik
po to, kai nurodyta indeksus kiekvieną iš šių sričių, kaip mes padarėme.
Ir dėl šios išskleidžiamajame turime keletas dalykų, pavyzdžiui
jei žinoma išbraukiamas galite iš tikrųjų išvengti, kad išbraukta
nuo to, ar ten yra eilutė šioje lentelėje
tiesiog sakydamas Apriboti.
Kitaip tariant Henris negali išeiti į pensiją
kol mes atsieti jį nuo CS51 ir CS1.
Štai geras dalykas.
Bet jis gali sukelti klaidos kodą
jei jums nereikia tikėtis, kad ar mes galime turėti kaskados,
kaskada panašus patinka Cascading Style Sheets
ir pakopinių krioklys reiškia, kad jei -
jei Henris išeina taip - gaunant ištrintas
taip bus jo eilė čia ištrinta.
Nėra veiksmų reiškia nieko arba null rūšies naudinga, jei jūs natūra
iš want some archyvinius įrašus Henry Dėstydamas CS51,
bet jūs tiesiog norite, kad lauką yra niekinis, kad ten eilutės
bet tai ne ilgiau susijęs su juo.
Taigi tai yra labai galingas metodus, kuriuos galite
ir reikia naudoti, net jei palūkanų ypač
taupymo jus nuo savęs.
Taigi, leiskite man paminėti pora galutines detales,
Pagalbinės medžiagos, kurių kad gali būti naudinga
kaip mes planuojame duomenų bazių projektavimas.
Jūs taip pat turite pasirinkti per duomenų bazės variklis
kad jūs naudojate savo kodą.
Jei esate susipažinę iš CS161 galbūt -
ar net 61, galite paprastai būti susipažinęs su failų sistemos.
Ir yra dalykų pavyzdžiui, NTFS ir HFS +
ir X2FS4 [fonetinė] ir 3 ir tt.
Yra įvairių būdų saugoti duomenis apie stalo.
Taip pat ten įvairių būdų, kaip saugoti duomenis
į pagal nutylėjimą duomenų bazėje bent Appliance
su naujausia versija MySQL.
Mes jau naudojate duomenų bazės variklis vadinamas Nodb,
kuris palaiko Keletas naudingų funkcijų.
Bet dar paplitusi, taip pat vadinamas MyISAM ir dar vienas
kurie gali būti naudojami yra atmintis, o tai reiškia, nedėkite nieko
diske, tiesiog laikyti viskas atmintyje.
Nes didžioji dalis, tikriausiai nebus suklysti tik pradeda
su Nodb, bet visiems projektams kad paprastai apima didelius tarifus
įterpimo, pavyzdžiui, kaip greito ruošos daug,
šimtai dalykų, kuriuos per sekundę ar tūkstančiai dalykų.
Kada turite daug dalykų vyksta
apie duomenų bazėje tai rūšys
žemesnio lygio sprendimai pradeda įsitraukti.
Visą tekstą funkcija Pavyzdžiui veikia tik MyISAM
kad turi įtakos.
Bet jūs galite prisiminti tai, tegul bent motyvuoti, kodėl mums rūpi
apie Nodb ypač.
Lenktynės sąlygos paprastai reiškia ką?
Gerai, tai yra aliuzija į pavyzdį kai
iš jūsų galėjo išgirsti metų praeities, ar 161 ar 50
kur jūs turite kambarioku, jums abiem patinka pienas,
vienas iš jūsų gauna namų pirmą kartą atidaro šaldytuvas nėra pieno,
uždaryti šaldytuvą pėsčiomis visoje gatves CVS ir gauti
eilėje nusipirkti pieno.
Tuo tarpu jūsų kambarioku grįžta čia.
Ji taip pat sako, kad patinka pienas.
Atidarykite šaldytuvą ir supranta ne pieną.
Čia ji tada eina į saugoti, gal kitą CVS.
Pirmyn kelias minutes vėliau grįžti ir dabar tiek
iš pirkote pieną.
Vienas iš jų dabar vyksta sugadinti, nes jūs neturite
kaip pienas, kad daug ir tai yra problema, tiesa?
Kadangi jus abu patikrino kai kurių kintamojo būsena
ir priėmė sprendimą, pagrįstą apie tai, nors valstybės
Šio kintamojo esmės buvo rengiamasi pakeisti procesą,
visi bus lėtai per daug laiko užtrunka
gauti ir iš CVS.
Taigi, kas yra kvailas nekilnojamojo rūšiuoti pasaulio sprendimas šią problemą?
Komentuoti dėmesį, tiesa?
Tai atsitiko paskutinį kartą.
Visada palikite pastabą arba Spynos dalykas pažodžiui.
Ir aš sakau, spyna, nes jei jūs imtis arba ėmėsi CS161,
rakinimo sistema yra esminis idėja toje pasaulio natūra.
Taigi, lenktynių sąlygomis gali kilti taip pat duomenų bazės pasaulyje
ir jūs tikriausiai pamenate, kad gal iš CS50 finansuoti, jei jums buvo 50,
šis kodas, kad mes iš tikrųjų davė jus vaikinai specifikacijos
tuo metu, kad savo operacija yra vadinamoji atominis.
Jei nori, kad šis atveju, įsigyti akcijų dalis
ir kad akcijų turi kai pirma simbolis.
Mes pasakėme, kuriuos galima naudoti kaip kodą tai, nes taikant šį
dėl dublikato rakto atnaujinimo sintaksė, kuri yra pastatyta
į MySQL esate efektyviai daro arba įdėkle
arba atnaujinimo po daro pasirinkite pamatyti
jei ištekliai yra jau ten.
Kitaip tariant, analogo pirkti atsargų pasaulis
pieno ir šaldytuvą gali būti, pirma,
prieš perkant Akcinio "Google" galbūt norėsite pasirinkti
iš duomenų bazės visi akcijos "Google", kad Dovydas valdo
pamatyti, jei jis turi nulį ar daugiau.
Kai pamatysite, jeigu jis valdo nulis arba daugiau turi
tada atlikite šiuos veiksmus.
Jūs arba turite padaryti įdėklą
jei jis savo zero priežastis nėra eilutė Dovydo dar,
ar jūs turite padaryti, atnaujinti jei bent jau teoriškai norite
turėti vieną eilutę vienam vartotojui.
Problema yra pasirinkti kad akcijų skaičius
ir tada atnaujinti arba įklijavimo gali būti nutrauktas
kažkas kitoje kompiuterių terminalas bando pirkti
arba parduoti kai Dovydo akcijos atsargų nesvarbu
geriems tikslams arba rūšiuoti iš kėslams.
Tai kaip eiti į parduotuvę , kai jūsų draugas gauna atgal
ir patikrina valstybės kintamojo.
Taigi ši sintaksė metu kuris buvo tarsi tinkamas
už CS50, siekiama, kad problema apskritai.
Ir tai tiesiog daro visa tai magija fiksavimo už jus,
bet dabar su šių rūšių projektų už šį kursą
kuris labiausiai tikėtina bus įtraukti daugiau sudėtingų duomenų rinkinius,
jūs negalite pasiekti visada tai chem.
Viskas vyksta iš karto arba ne visi
be pertraukos taip elegantiškai.
Ir taip MySQL, kita duomenų bazės variklis,
paramos dalykai vadinami spynos,
kuriuo galite pasakyti lock Šis stalo taip, kad tik vienas malonumas
ir apskritai tik vienas vartotojas gali paliesti jį bet kuriuo metu
skaityti, nei rašyti ir tada galite jį atrakinti.
Tai pavyzdys iš vienos MySQL nuosavų nuorodomis,
kur, jei turite kaip banko sąskaitą, kad jūs bandote
išskaičiuoti pinigus iš ir tada pridėti pinigus.
Galbūt Jūs norite įsitikinkite, kad abu
šių dalykų atsitikti kartu
todėl, kad nėra matematinės klaidos
Ir niekas nuostoliai pinigų, kažkaip.
Su užraktais problema nors ir duomenų bazės
kad paprastai reiškia Visa lentelė užrakintas,
tai reiškia, jei turite šimtą žmonių bando
daryti verslą su savo banko internete tuo pačiu dydžiu
laiko tik viena iš juos gali eiti vienu metu.
Kuris yra kvaila, ypač serveriuose šiandien
kad turi aštuonių kurso, 16 Žinoma, yra didžiulis
atminties, nėra priežastis išspausdintas visi
transakcijas, jei tie klientai yra tik ketina
bendrauti su savo eilėmis.
Taigi Nodb leidžia daryti viskas daug protingas
ir tai paprastai bus požiūris išgėrėte kodą
kaip jūs naudojate ką nors vadinamas sandoris.
Ir jums tai padaryti paprastai PHP kodu,
Ruby kodas, Python, nesvarbu.
Tačiau SQL kodas, kuris yra galiausiai jie naudojami tai,
paprastai.
Pradėti sandoris, tuomet jūs nurodyti du ar daugiau užklausų
kad norite vykdyti viso
be pertraukos arba ne visi.
Yra netgi gali būti šiek tiek pasirinkite pareiškimus
arba kai ištrina ar atnaujinimai.
Bet malonus dalykas yra tai, kad duomenų bazė bus pakankamai protingas
įsitikinti, kad tai bus tik užrakinti eilutes jie iš tikrųjų
dalyvauti šiame atnaujinimus arba pasirinkti arba ištrina.
Taigi, jei turite tūkstančius eilučių ir jūs tik neliesti tris
iš jų, tik kad pogrupis lentelės bus užrakinta
o tai reiškia, tie kiti 99 klientai gali paliesti savo eiles
be išspausdintas ir sulėtėjo jums.
Tuo tarpu, tai gražiausių aspektas sandoriams.
Jie yra sandoriai jausti kaip 161 į failų sistemą,
jie sandorio
kuri reiškia, kad galite permesti juos atgal, galite juos atšaukti.
Tai kaip komanda arba kontroliuoti F duomenų bazių.
Jei pastebėsite dalis būdas, per visą
jūsų įvairių duomenų operaciją, šaudyti, kad kažkas yra negerai.
Jūs tiesiog vykdyti skiriasi SQL užklausos įvirsta
ir visi šie tendencija - visi teiginių Jums sudaromų
po sakydamas pradžią sandoris išnyksta
tarsi jie niekada atsitiko,
kuri yra nuostabiai galingas dalykas.
Ir tai yra rūšių viskas žinoma, 50 mes tarsi
iš nurašymas pagal kilimas ir jūs tiesiog rūšies prisiimti
kad viskas bus gerai.
Bet kai pradėsite galvoju apie realiais projektais
ir realūs vartotojai ir vientisumą jūsų duomenų bazėje,
tai yra rūšys Projektinių sprendinių
, kurie bus svarbūs.