>> Rendben.
Tehát minden további nélkül, SQL, Structured Query Language.
Tehát, akkor valószínűleg használta ezt a legalábbis CS50, talán CS165,
Lehet, hogy a saját személyes projektek.
És mit jelent az SQL segítségével csinálni, SQL Server általában?
Igen?
[Hallható Megjegyzés]
OK, ez nagyon biztonságos módon, mondván, hogy.
Igen. Így lehetővé teszi a teszi az adatok tárolását
és ami még fontosabb lehetővé hogy lekérdezni az adatokat.
És ez egy lépés előre
használja valami egyszerűbb, mint egy CSV, jobbra.
Vesszővel elválasztott változók.
Hasonló értékeket.
Hasonlóképpen takaríthat meg, információkat egy sorban
egy szöveges fájlt.
De mi a hátránya a CSV fájl az adatok tárolására,
még akkor is, hatékonyan kap sorok és oszlopok belőle?
Igen.
>> Nem "kell ugyanaz a szervezet
hatékonyság [hallható].
>> Nem kell ugyanazt a szervezet hatékonyságát.
Mire gondolsz?
>> Nos, mint [érthetetlen] van, mint az elsődleges [hallható].
>> OK. Igen.
>> Ez egy relációs adatbázis akkor több adatbázis
kapcsolódnak egymáshoz nagyon különleges módon.
>> OK. Jó.
>> Ez [érthetetlen] beállítani CSV.
>> És hadd csípés Egy kis terminológia.
Így több asztal egy adatbázis, biztos,
és hogy megy túl meg tudod csinálni csak egy CSV.
De tényleg a korlátozás A CSV Amellett érvelek, az
hogy a hatékonyság az egészet.
Ez nagyon egyszerű elrendezés.
De ha akarsz egy lekérdezés, mi a futási idő
minden választó lekérdezés egy CSV fájlt?
Úgy értem, hogy a nagy öreg [hallható], jobb, mert a legrosszabb esetben,
emelkedtek legalján.
Még ha volna rendezve az egész CSV fájlt, ha nem tudod,
hogy előre, jól, még mindig megy, hogy
keresni az egészet.
Így, többek között a dolgok fogunk kapni
használja tényleges adatbázis egy nyelvet
mint SQL tudjuk lekérdezni , és mi is előre
adatbázis-tervezők határozza meg, mi a mezők
amelyeket valószínűleg lesz, hogy kérdést, hogy az emberek
A MySQL és a Microsoft vagy az Oracle,
aki tette az adatbázisban Ön használ tudod csinálni
A kemény munka a kitalálni, OK,
adott egy millió ilyen IDS.
Hogyan elrendezés - őket a memória?
Valamilyen fa szerkezet talán
úgy, hogy ha nem ténylegesen végre Select,
ez valami, ami logaritmikus vagy logaritmikus
A logaritmikus időben meglehetősen mint a ténylegesen háruló
valami lineáris.
Tehát van egy csomó teljesítmény így.
És mi is tárolni sokkal több az adatok könnyebben mert az SQL
Server jellemzően tárolják a RAM-ban annak ellenére, alkatrészek
Az lehet, hogy a lemezen tárolt és akkor valószínűleg tudja már
hogy a RAM általában gyorsabb, mint a lemezek,
Szóval ez egy jó dolog.
És mi is kezelni konkurencia sokkal jobb.
Ha már vett 165 vagy 161, tudod, hogy ha két ember próbálja
hogy nem ugyanaz a dolog egyszerre egy rendszeren,
rossz dolgok általában történni.
Így a többi között tulajdonságokat, kaphat, ha tervezzük meg a táblákat
a megfelelő módon jobb támogatás és biztonság
amikor a konkurencia.
Tehát, két ember, két részből
a világ ugyanazt honlapján, ha mindketten megpróbál
vásárolni valamit ugyanabban az idő, hogy a rend nem megy
menni egyszerre.
Valahogy lennének szerializálódnak valaki más, mint a miénk -
valaki más, mint mi magunk.
Az adatbázis Ehhez nekünk.
Tehát, ha ez legegyszerűbb formája,
SQL lehetővé teszi számunkra lekérdezést a relációs adatbázis.
A relációs adatbázis az egyik, hogy van egy
vagy több tábla benne általában.
És ha ez egy kicsit szokatlan,
akkor tényleg csak azt gondolom, Ennek az Excel vagy a számok
vagy a Google táblázatok.
Csak van sorok és oszlopok és általában a tetején minden
Az azokat a sorokat egy nevet neki.
Szóval ez lehet az ID oszlop, a Név oszlopban,
a cím oszlop és így tovább.
És akkor több ilyen táblázatok, ha akarod
indul megállapító különböző típusú adatokat.
De lehet felidézni, legalább A CS50 hogy megpróbáltuk
kapsz egy GUI-alapú eszköz [hallható]
kezelni az adatbázis.
Ez volt az úgynevezett phpMyAdmin.
Tehát ez csak egy véletlen egybeesés, hogy volt írva a PHP, tényleg,
de ez csak egy web-alapú front end egy adatbázis.
És keresztül a különböző fülek és linkeket, tudnál kezdeni
beállítani adatbázis magad.
De egy jó eszköz, hogy elérje a egy kicsit kényelmesebb
együtt is a parancssori kliens.
Tehát, ha a CS50 Appliance vagy tényleg bármilyen makró PC
hogy van egy parancssori MySQL ügyfél, akkor is csinálni sort
A régi iskola, mint ez.
Mellesleg a MySQL projekt legalább a nyílt forráskódú változata
azt most hívott MariaDB a különböző okok miatt el tudja olvasni
fel a Wikipedia, de ez ugyanaz a szoftver,
ez ugyanaz a szintaxis és így tovább,
nagyjából ugyanazt a kódot bázis.
És ha én vagyok ebben a azonnali Most már kölcsönhatásba
az én adatbázis sokkal több kézzel.
Tehát esetben, hadd menjen előre
és csak nyit egy terminál ablakot.
Azt történt, hogy a CS50 Appliance de meg tudod csinálni ezt
A legtöbb olyan rendszer ahol megvan a megfelelő
szoftver telepítve.
És én fogom csinálni MySQL-u A felhasználónév John Harvard
ezen az adott rendszerben, p- a jelszót, hogy fogok típus
egy kicsit biztonságosan lenyomja az Enter billentyűt.
Most kéri.
Megyek írja Crimson A CS50 Appliance
és most látom, alapvetően hogy ugyanazon a képernyőn.
De van parancsok már hogy mi lehet kezdeni gépelni
mint mutatják adatbázisok és hogy fog mutatni nekem
Az adatbázisok én Már létre a rendszerben,
nagyjából ugyanazon a listán akkor látni phpMyAdmin.
Van egy pár mások, mint információs séma és vizsgálati,
amely ha piszkálni körül CS50 Appliance, elrejtjük bizonyos
ezen alsó szintű táblázatok
de már ott ebben az időben.
MySQL valójában alacsony tulajdonságai, mint a felhasználónevek
és jelszavakat az adatbázis önmagában nem az alkalmazás
hogy lehet, hogy futó tetején.
Tehát előre, ma, létrehozott egy pár adatbázisok,
amelyek közül az egyik az úgynevezett courses50.
Odds néhány már használt CS50 természetesen vásárlás eszköz,
ami nagy felületet biztosít az anyakönyvvezető tanfolyam katalógusban.
És ez valóban egy jó adatbázisba beszélni, mert,
az egyik, mi a fajta minden nyilván ismeri tanfolyamok
és az oktatók és a találkozó helyek és az összes fajta
A hétköznapi dolgokat Az egyetem,
de ez is van néhány Érdekes lehetőség
a design.
Úgy gondoltuk, mi lenne használni fogalma a kurzus katalógus
és egy bevásárló eszköz, mint egy Például az egész ma rendezni
A keret néhány tervezési döntéseket meg kell tenni.
Szóval kezdjük ott.
Tegyük fel, hogy én valóban szerettem volna hogy képviselje a szuper legegyszerűbb
Természetesen vásárlás eszközök.
És a világ legegyszerűbb El tudom képzelni, és az egyik
ahol vannak tanfolyamok és vannak oktatók.
És tegyük fel, hogy A vita kedvéért
hogy minden kurzus legalább egy nevet.
Kezdjük a felvázolni ezt.
Fogom használni phpMyAdmin mint a kényelem,
így nem kell, hogy írja ki az összes lekérdezés kézzel.
De itt vagyok én courses50 adatbázisban.
Ha ismeri ezt, akkor az Nagyon könnyű, ha merülni
, hogy a saját projekt ha szeretné használni.
Megyek, hogy egy asztal nevű tanfolyamok
és én csak gondolom egy mező
most, a nevét egy tanfolyamot.
Én megyek előre, és mondjuk adj egy oszlopot.
Most, ahogy emlékszem kapsz felületet, hogy ez egy kicsit
, mint ez.
És a másik fejjel őszintén A phpMyAdmin, hogy ez a fajta
az ön-utasítást, és hogy keresztül legördülõkhöz, rendezheti
A mi a lehető tervezési döntéseket.
Így fogok adni Minden tanfolyam egy nevet.
Ez a neve az oszlop.
És mi van az adattípus?
A legtöbb, amit tudnia kell a legalább néhány ilyen adattípusokat
a korábbi tapasztalatok.
Mi a megfelelő a tanfolyam név?
Sharon?
>> Varchar.
>> OK, varchar amely változó Char.
És mit is többet jelent, technikailag?
[Hallható Megjegyzés]
OK. Tehát ez egy húr.
És a var szempont Az ez azt jelenti, hogy mi?
Változó. De mi jelent ez?
Igen?
[Hallható Megjegyzés]
Pontosan. Tehát ez egy változó karakterek száma
a fonalat néhány maximum.
Tehát itt van az első tervezési döntés.
Igazából el kell döntenünk hány bájt maximálisan
kiosztani minden egyes ilyen húr.
Általánosságban elmondható, hogy szeretne a fajta nem teszi túl kicsi,
ne legyen túl nagy Mert nyilvánvaló
Ha túl kicsi, csak most fog kezdeni csonkolt adatok
és akkor elveszíti információt.
És ha ez túl nagy, csak most egyfajta mondja adatbázis
számíthat, és a optimalizálni több adat
mint talán valóban valaha is.
Tehát mi az ésszerű érzés szám a neve, a tanfolyam?
60? OK, így 60..
Úgy tűnik, nagyon ésszerű
amíg az nincs kivétel ez alól.
Már tényleg nincs kemény, gyors szabály.
Hogy őszinte legyek, a történelmi okok miatt sok
Az ember választja 255 Mert évek óta ez a fajta
Az alapértelmezett maximális segítségével 8 bájt - 8 bites, mint a számláló.
Lennék több [nem hallható] használhatja hatásköre 2.
de ez a fajta lényegtelen.
Tehát mehetünk 60.
Ez ésszerűnek tűnik olyan hosszú
hiszen végül is nem bántam meg Mert ez a felső korlát.
Most tegyük fel, hogy a másik döntés megszületett,
nem változtatható karakter, hanem csak a char mezőben.
Tehát ellentétben a C és C + +, char nem jelenti azt, char
és adatbázisok általában azt jelenti, hogy meghatározott számú
A karakterek egy string.
Mi lenne a fejjel, és / vagy hátránya az én választotta a 60
egy char területen, helyett VARCHAR?
Ez pontosan az első fajta A döntés, amit meg kell tenni
vizsgálatakor [fonetikus] ki A projekt partnerei.
Ja, Sharon újra.
[Hallható Megjegyzés]
Jó. Tehát, ha a név kevesebb
mint 60 akkor te pazarolva bármi is delta
60 közötti, és a tényleges hossza.
Annak érdekében, hogy csak úgy érzi, pazarló, több bájt, mint amire szüksége van.
De miért jött létre?
Biztos van valami fejjel.
Igen?
[Hallható Megjegyzés]
Persze. Így néha Lehet, hogy tudja, a vezetékes számot
A karakterek, mint a 10 jegyű egy telefonszámot pl.
De kit érdekel, mint hogy miért Nem mondjuk 11 egyébként
vagy miért nem mondja 60 egyébként a varchar?
Milyen előnye jutunk ismeretében és tervezése
fix számú A karaktereket?
[Hallható Megjegyzés]
Te vagy a helyes úton.
Tehát optimalizálás, de ez tényleg az - Igen?
[Hallható Megjegyzés]
OK. Jó. Nézzük hangsúly a az utolsó részt.
Tehát indexelés.
Így kiderül, ha előre tudni, hogy az összes
a mezők mennek hogy 60 karakter,
akkor tényleg gondolni ezt oszlop az Excel adatbázisban
mintha nagyon egyenes, balra igazítva
és jobbra igazítva élek
mert minden oszlop 60 karakter széles.
Ez azt jelenti, hogy ez a szöveg 60 karakter el
ebből a húr, 60 karakter távol ez
és ez az egyik, és ez egy.
Tehát ugyanúgy, mint vissza, ha tanult C, volt véletlen elérésű
a világon a tömbök, Ugyanez a gondolat itt.
Ha az oszlop képviseli kizárólag fix hosszúságú karakter,
akkor hatékonyan index véletlenszerűen 60 vagy 120 vagy 180
és lehet kapni külön-külön húrok sokkal gyorsabban.
Akkor, ha ehelyett az oszlop volt egyenes bal széle úgy mondjam
hanem egy nagyon masszív jobb él, hogy az oszlop
mert lehet, hogy Jelenleg 10 karakter,
15 karakter, 5 karakter.
Tehát ez is egy kompromisszum.
És néha csak a tárgyalás és a hiba
és kísérletezés tud kitalálni
, hogy mi valóban a megfelelő hívás is, de ezek a fajta
A kérdés, hogy az mennem kell
keresztül a fejében, és / vagy táblázatot, ha eljön az ideje,
tervezni az adatbázist.
Tehát nem feltétlenül igaz válaszolni, de be
legalább néhány mondat vagy két szem előtt
a mentés bármilyen döntés, amit csinál.
Rendben van.
Tehát maradjunk görgetés Az utasításokat itt
amelyek phpMyAdmin UI.
Tehát, az alapértelmezett érték nevet, meg kell azt határozni
, hogy meg kell, hogy alapértelmezett érték a null?
Mit gondolsz?
Lehet természetesen egy null név?
Csak úgy érzi, furcsa, nem?
Nem tudok mondani olyan névtelen tanfolyamok a Harvardon.
És talán van valami homályos sarokban eset
ahol természetesen kap egy számot
és a professzor még nem választott nevet, de -
Úgy értem, hogy a fenébe azzal,
mint ne is zavar támogatja ezt.
Azt mondanám, hogy az érdeklődés Egy szép tiszta adatbázis
hadd adja meg, hogy nem lehet van egy alapértelmezett értéke null.
Alternatív megoldásként, amit tehettünk valami ilyesmit untitled természetesen
amely nem különbözik a Mac OS és Windows csinálni
amikor létrehoz egy mappa például
de van, ami egy kicsit több értelme
úgy, hogy az ember valamit.
Beszélünk a back-end adatbázis feltehetően
a tanfolyam katalógusban.
Szóval nem is igazán tetszik az ötlet, amely azt
A untitled pálya neve
mert ez nem igazán fog segíteni senkinek.
Tehát hagyjuk ezt sem, ami azt jelenti, hogy ha be
ebbe az adatbázisba, akkor hogy minden tanfolyam a nevet
amely úgy érzi, egy kicsit tisztább nekem.
Rendben van.
Tehát görgetés tovább, egybevetés.
Ez csak arról szól, hogy karakterkészletek és miegymás
ha valaha is látott említi svéd
A phpMyAdmin ez Mert az emberek
aki azt írta phpMyAdmin volt a svéd.
Ez a PHP vagy ez MySQL?
Az egyik két, azt Elfelejtettem kapásból.
De ez a történelmi okok miatt
de lehet kifejezni minden karakter az angol
úgy gondoltam, hogy a svéd így ez nagyrészt nem kérdés.
A CS50 Appliance azonban az, használt - beállítva, hogy UTF-8,
úgy, hogy általában kell nem jelenik meg az Ön számára.
Attribútumokat.
Tehát ezek egyike sem Nagyon fontos itt.
Látom bináris, előjel nélküli Unsigned zerofill,
valamint a frissítési aktuális időbélyeg.
Ez a mező csak akkor érvényes, néhány numerikus mező
vagy egy kis időt területeken.
Így fogjuk kihagyni hogy teljesen.
Null. Lehet ezen a területen, hogy null?
Tehát nem. Már van az efféle beszélgetések.
Tehát nem akarjuk alapértelmezett értéket.
Nem akarjuk, hogy legyen null.
Mi a helyzet index?
Itt négy választási itt.
Mit jelent, ha meg
hogy ez a sor fog hogy egy elsődleges kulcs?
Visszagondolva a CS50 vagy CS165 ha már elvitte.
[Hallható Megjegyzés]
Pontosan. Így elsődleges kulcs definíció szerint az a terület,
amely egyedileg azonosítja minden sora a táblázatban.
És akkor számíthat rá, hogy nem hogy egyedi azonosító.
Szóval, mit jelent majd csak egyedi?
Nos, valami a két fajta van
alatti következményei a motorháztető alatt.
De általában, elsődleges kulcs egyfajta szerződés csinál
az adatbázis dolog.
Amikor én lekérdezések keres egy tanfolyamot,
Fogom használni ezt a adott területen.
És akkor jön vissza Ezért lehet, hogy a két
Ilyen választás itt, elsődleges vagy egyedi.
Egyedi, csak azt mondja, ez a mező lesz egyedi
de én nem igazán, hogy bármilyen egyfajta verbális elkötelezettség itt
kezelhető, hogy a területen hogy nem az én keresések
okokból fogunk hogy csak egy pillanatra.
Ha meg helyette index, mit jelent az, hogy meghatározza
hogy a mező indexe rajta?
Igen?
[Hallható Megjegyzés]
Pontosan. Ez volt optimalizált lekérdezés.
Szóval - adatbázis szerver, Oracle, MySQL, bármi,
általában trükközni a színfalak mögött, ha rákattint
ezt a lehetőséget, majd kattintson a Mentés és épít
fel általában egy fa struktúra, B-fák ha láttad
vagy hallott ki, amely a nagyon rövid látszó fa
hogy megadja neked nagyon szép logaritmikus tulajdonságok
keresésekor az adatokat.
Ha nem adja meg az index a területen, mi folyik itt
hogy a futó ideje keres
egy tetszőleges [Fonetikus] Természetesen név?
Mi ez?
[Hallható Megjegyzés]
Ó, [nem hallható], lineáris, nem igaz?
Ha ez nincs optimalizálás számára, hogy az adatbázis
és még nem is gondoltam az adatbázist, hogy milyen
adatok számíthat.
A legjobb, amit tehetünk, ellenőrzés mindent, ha keres
néhány érték, különösen ha lehetne
valójában ismétli.
Full-text eközben fogunk hullám kezünket most.
De általában, ez egy típusú index, amely lehetővé teszi,
optimalizálni kulcsszó keres a területen.
Tehát ez lehet egy jó jelölt
számára, mint a kurzus leírás ahol lehet, hogy egy pár
bekezdések és lehet, hogy akarom substring mérkőzés.
Full-text általában hagyja ezt teszed, meglehetősen hatékonyan.
AI, ez egy szörnyű sort A magyarázat de ha lebeg
rajta látni fogod Auto növekmény.
Nem alkalmazható mind itt de auto növekmény hasznos
A mint egy int a területen, mert az adatbázis vigyázni
a folyamat a plusz plusing hogy minden alkalommal, amikor nem a betét.
Tehát, hogy ha két ember Szó kattintson a Küldés gombra
ugyanabban az időben, és próbálja hogy hozzon létre egy sor valahogy
az adatbázisban, az egyik közülük a számot úgy,
a másik pedig, hogy A szám, amit plusz 1.
Önnek nem kell aggódnia
a két szám rendelt azonosan mintha
Ehhez magát kódot.
Rendben van.
Szóval olyan, mint amikor van egy név kell.
Úgyhogy kattintson a Mentés gombra.
Ez egy jó design egy adatbázis tábla?
És Mellesleg, ha rozsdás SQL vagy sort
csak mindig huny szem, hogy mi történik,
Tudtam volna gépelt pontosan, hogy -
a három sor az adott fekete-fehér azonnali
a parancssorban ügyfél vagy tudtam volna
hogy kódot programból.
Tehát az összes phpMyAdmin tesz az nekem, csak megmentettél az erőfeszítést
az emlékezés néha a szintaktikai és gépelés ki
mint unalmas parancsokat.
Rendben van.
Szóval ez nem érzem a legjobb design, egy mező tábla.
Most volna dolgok, mint a professzorok
és helyszíneket és leírások.
De még akkor is, a csak a nevében
azonosítani tanfolyamok nem érzi ideális.
Mi általában mi történt a múltban
ha már használt adatbázisok egyedileg sorok?
Nem használja varchars általában.
Igen?
[Hallható Megjegyzés]
Igen. Így általában a kurzus azonosító.
Tehát, a leggyakoribb megközelítés itt különösen
amikor egy keretet valójában csak
egy számot használni, mint egy egész szám.
Hadd megy előre, és erre a célra.
És ezt meg tudjuk tenni néhány módon, de észrevettem, ha zoom
az alján van.
Fogok mondani, adjunk hozzá egy oszlopok végén az asztal,
általában csak a vizuális kényelem tesz azonosítók
elején az asztal még akkor is, ha ez nincs igazi
funkcionális hatás.
Így fogok mondani hozzá egy oszlopot
elején az asztalra.
Megyek kattintson az Indítás gombra, hogy adja vissza ezt a UI itt.
Nevezzük ezt azonosítója.
Ha úgy gondoljuk, mi lesz, hogy nincs több sor 4 millió tanfolyamok
egy int a mező rendben.
Mi lehet még csökken le
de a hely olcsó így aki igazán érdekel.
De mi próbálunk írni Facebook most,
lehet, hogy nem egy rossz dolog hogy előre nagy ints
ami nekünk 64 bites ints
de akkor te vagy a szó szoros értelmében megduplázva a bitek száma
hogy a 'használ, így kisebb kompromisszum
de valami, hogy fontolja meg.
Nos, ez egy zavaros legacy dolog.
Lehet, hogy emlékszem A MySQL
, hogy amikor csak nyilvánítják int mező akkor gyakran látni egy számot
mellette, mint a 10-es számú.
Ennek semmi köze a a méret a szám
vagy a bitek száma.
Hogy köze van a szám karakterek használata
a vizuális megjelenítése hogy int a területen
amikor egy terminál ablakot.
Így láthatjuk, hogy egy pillanat alatt.
Szóval, ne vezessék félre írja a számok
ott annak ellenére, hogy arra vár ránk
egy itt.
Itt vagyok, megyek megy előre, és azt mondják, aláírás nélküli.
Nincs ok a hulladékok Minden negatív számok
mivel az adatbázis általában megy
vállalni a pozitív értékek vagy null.
Az azonosító egyértelműen nem lehet null.
És mit gondol az index az azonosító téren?
Nézzük, hogy ez az elsődleges.
Tehát, mi van, ha mégis, ahogy tudok csak gondolom, egy CS164 természetesen
a Harvard és csak egy CS50 Természetesen a Harvardon
és ez elég mennyi igaz az általános
hogy van talán kivételek [Érthetetlen] mindkét félév
vagy valami furcsa ilyesmi.
De ami még lényegesebb, miért jobb
használja a numerikus integrál azonosító egyedi azonosítására tanfolyamok inkább
mint egy egyedi karaktersorozat?
Igen?
[Hallható Megjegyzés]
OK, érdekes.
Tehát, ha volt valami cross felsorolt ​​tanfolyamok.
Szóval ez egy jó példa.
Nem vagyok benne biztos, hogy volna megoldani, hogy bár
azáltal, hogy az azonos Azonosító számot, ha ez
ahol mentek vele.
Nem? OK. De mindenképpen egy sarok eset, hogy fontolja meg.
Ha van valami - szükségünk van valamilyen
Az aliasing potenciálisan.
[Hallható Megjegyzés]
Persze.
[Hallható Megjegyzés]
Ez egy jó példa.
A név megváltozhat idő, teljesen ésszerű.
Mi van még?
[Hallható Megjegyzés]
Sajnálom, ismételje meg.
[Hallható Megjegyzés]
Igen, pontosan.
Szóval tényleg, ez az igazi peremes van
hogy egy 32-bites int valószínűleg lesz gyorsabb
mint néhány változó hossza char területen.
Az első esetben a doboz szó illik a nyilvántartásba,
nem is beszélve sok kisebb memóriát.
Az utóbbi esetben, mész hogy kell csinálni resort [fonetikus]
string összehasonlítást önmagukban a lineáris
a méret a karakterlánc potenciálisan.
Szóval, ez csak egy szép optimalizálás,
és különösen ez megy
hogy tegyünk az úgynevezett Csatlakozik hatékonyabban
csak egy pillanat.
Így csináljuk.
Majd adja meg, hogy ez az elsődleges
mert én nem igazán akar gondoskodni, vagy úgy gondolja
arról, hogy mi a szám ez a tanfolyam.
Hadd vállalni bármilyen értéket akarnak.
Fogok mondani automatikus növekmény így kiszervezik a részletek.
Mint félre lehet, hogy tudják, hogy a Harvard
legalábbis nem egyedi számok tanfolyamok.
Már nem is emlékeztem mi ez kurzusok.
Tudom, hogy CS50 a katalógusa száma 4949,
teljesen önkényes.
De van egy furcsa sarok esetben, hogy még
A registrarial lerakó A kurzus katalógus adatok,
Néha tanfolyamok, a régi képzések száma, mint a 4.
De technikailag, hogy mező egy char mező
hogy egyszerűen kezdődik 0004.
Tehát itt is van, hogy óvatos megkülönböztető
a dolgok között, mint egy Természetesen katalógusszám
ami néhány ember fogalma fix hosszúságú, 0004,
és akkor nem kell tárolni hogy például egy ints.
Ez a fajta mező tárolható máshol.
Így a Harvard, ha volt valóban így a kurzus
vásárlási eszköz, ez valószínűleg nem elégséges
a szám tanfolyamok mindössze 1, 2, 3, 4.
Mi valószínűleg megy, hogy
hogy a másik területen hívott katalógus számát,
hogy is kellene egyedinek kell lennie alapú
az emberi egyezmények itt de ez nem a legjobb választás
egy egyedi azonosító, mert lehet, hogy a változó hosszúságú.
Lehet, hogy nem négy, karakter, lehet, hogy öt.
Sőt, azt hiszem, egy pár évvel ezelőtt mozognak
öt karakter, mert ott több mint 999 tanfolyam
teljes, vagy valami hasonló ez, vagy 9999-tanfolyamok.
Szóval, lehet, hogy egy példát ahol a mező nem elsődleges
de egyedinek kell lennie.
És e-mail cím egy másik.
Azt is megteheti, hogy egyedi
de nem feltétlenül az elsődleges kulcsot.
Rendben van.
Hadd bumm ki egy másik tábla sokkal gyorsabb, mint ez.
Így fogom hívni ezt a egy oktatóknak és megyek
, hogy ezt a teljes oszlopainak száma kettő.
Meg fogom tanulni az tanulsága utoljára.
Fogom hívni az első oszlop azonosító.
Fogom hívni a második oszlop neve.
Én is csinálni Varchar.
Megyek nem vállal tanár van neve hosszabb
mint 60 karakter, bár most ez lehet tolni
néhány hosszú neveket, speciális emberek középső neveket.
Ez rendben van a mai.
Szóval lépjünk át itt.
Nézzük, hogy ez előjel nélküli újra.
Nézzük, hogy ez az elsődleges.
És mi teszi ismétlődő nevek
abban az esetben van két John Smith, vagy valami ilyesmi.
És most már két asztal.
Tehát most, ez felveti a kérdés, hogyan tudom társítani
az oktató a kurzus?
Úgy érzem, ilyen kaptam magam előtt
mert ha egy oktató tanít a tanfolyam,
az első gondolatom lenne valóban visszamenni
a tanfolyamok észre, ez a nem volt jó ötlet.
Engedjék meg, valóban hozzá egy oszlopot végén az asztal,
kattintson az Ugrás, és én hívják ezt oktató.
És én ezt varchar és én ezt a 60.
És talán majd hagyja null már
Természetesen abban az esetben, az még nem óta aláíratlan az oktató
ami néha előfordul előtt kifejezés elindul, és kattintson a Mentés gombra.
Melyik tervek részesíti előnyben?
Először az egyik, amikor van egy külön oktatói asztal
vagy a második, ahol csak Mező hozzáadása a tanfolyam?
Tehát ez egy szoros kapcsolat oktató a tanfolyam.
[Hallható Megjegyzés]
OK. Jó. De hadd tolja vissza.
Ez annyira egyszerű, mint én is csak írja be a személy nevét
ebbe a tábla, mint a biztos hogy van néhány érték, vagy -?
[Hallható Megjegyzés]
Rendben van.
Nos, hadd nehéz itt.
Tehát hadd mondjam, hogy ez persze CS51
és tudom, hogy tanított ebben az évben két ember.
Tehát, Henry Leitner és Jesse Tov, de -
úgyhogy csak hogy egy vesszőt a kettő között, jobbra.
Én nagyon jó CSV a múlt.
[Hallható Megjegyzés]
Pontosan, igaz.
Amint igénybe valami, mint ez,
amelyek úgy érzik, ésszerű és úgy érezheti,
mint ez a fajta okos.
Én a fajta hitelfelvétel egy ötlet, amely jól működik,
kölcsön egy új ötlet, és egyfajta össze őket.
Te milyen teljesen legyőzte a pont segítségével az adatbázis
az első helyen, mert ha az egyik az értékeket
A használat gyorsabb keresést mert a különböző indexek
és táblázatok, amelyek épül fel az Ön számára
az adatbázis-motor is.
Nos, ha azt szeretnénk keresni minden a tanfolyamok
hogy Jesse tanít, most már a nem illeszkedő alsztringjét minden
Az oktató területen,
ami gyakorlatilag azt jelenti, lineáris keressen újra, mert van
találni ezt véletlenszerűeknek A három karakter sehol
Az oktató területen megelőzte
belül talán követte egy vessző.
Tehát ez mindenképpen nem jót.
Akkor hadd menjek vissza az asztalhoz.
Hadd menjek előre, hogy tanfolyamok, visszavonás ezt.
Megyek csak menjen előre, és vidd a területen.
És ha azt szeretnénk, hogy ezt kézzel,
A szintaxis ALTER TABLE tanfolyamok DROP oktató.
Szóval menjünk előre és azt mondják, igen, az, hogy.
És vissza erre a korábbi ötletet
ahol külön táblázat oktatók.
De most ez úgy érzi, egy kicsit mintha nem tud egy kurzus
során asztalára és oktató
Az oktató tábla, de Valahogy meg kell összekapcsolni a kettőt.
És hogyan kíván javasolják, mi ez?
[Hallható Megjegyzés]
Jó. Így csináljuk.
És nevezhetjük ezt táblázat elméletben semmit.
Megyek szándékosan hívják, amit sok
A keretek lenne hívják, köztük
Laravel ahogy lesz látni egy kicsit.
Fogom nevezni kurzus aláhúzás oktató.
A furcsa ebben a esetében az egyes szavak
és minden kisbetűs újra, és az is -
majd betűrendben sorrendje balról jobbra.
Ez teljesen tetszőleges, de ez inkább egy egyezmény
a sok e keretek PHP más nyelveken.
Hány oszlop van szükségem a ezt hívjuk a join tábla,
csatlakozni két másik asztalok együtt?
Három oszlop?
Melyik - mi lenne az?
[Hallható Megjegyzés]
OK. Jó. Ez működik.
És mi lehetne technikailag vágott a sarokban, de itt sokkal
A keretek, különösen még mindig, hogy még ezek a sorok
egyedi azonosítók bár szemantikailag a sor
hogy valóban érdekel, vagy az oszlopokat, hogy valóban érdekel
körülbelül a két utóbbi amit mondtál, a tanfolyam azonosító
és az oktató azonosító.
Szóval ezt.
Hívom a sorban csak azonosító, mint tettük korábban.
De ez fogom hívni kurzus azonosító.
Ez fogok hívja oktató ID.
És fogok adja meg, hogy az összes
közülük aláíratlan Mert azt akarom,
maximalizálására 4 milliárd int tartományban.
Egyikük sem kell null.
Megyek meghatározza, hogy ID még mindig az elsődleges.
És ismét, ez csak egy egyezmény,
Sok keretek még akkor is, ha nem rendezni
Az alapvetően szükség van egy egyedi azonosítója sor,
kiderül, hogy kényelmes A kód az SQL hogy megy
hogy automatikusan generált nekünk.
Úgyhogy hagyjuk, hogy az elsődleges.
De most, valahogy egy tervezési döntés,
Természetesen azonosító és oktató azonosító.
Mi indexek ha kell őket kapni?
Ha én nem hagynak indexek, mi a következménye?
Mi az a következménye?
Teljesítmény, mint korábban, igaz?
Ha nincs index, az a legjobb, amit tehetünk, kedves
Az [hallható] keresztül egész dolog keresni azokat a számokat.
Tehát, hogy nem érzi okos.
Amennyiben az elsődleges?
Miért ne?
Miért nem az elsődleges?
[Hallható Megjegyzés]
Tökéletes. Így tekercs out [fonetikus] elsődleges.
Már választottuk ezt.
Tehát, legyen az egyedi?
[Hallható Megjegyzés]
Jó. Tehát, ha feltételezzük, egy oktató egy tanfolyam,
teljesen rendben.
És ez határozottan A közös ügy
de már halogatni egy Talán ismerős példa.
CS51 van két oktató így mi kedves
most csavarozott ebben az esetben.
Ha igen, hogy csak egy oktató,
mi is valójában a módját a join tábla teljesen,
vissza a korábbi megközelítés
és tedd nem a személy nevét Talán, de az oktató azonosítója.
Ha tudod, hogy minden kurzus, mint csak egy oktató lehet csak
egy oszlop.
De a variabilitás mi minket bajba.
Rendben van.
Tehát, legyen az egyedi?
Nem teljes szöveg nem érzi alkalmazható.
Mint azt mondtam, hogy ez
a hasonló substring megfelelő leírását.
Szóval mi a helyzet index?
Nos, index valószínűleg a legjobb jelölt
amely azt mondja MySQL optimalizálásában A keresés erre
vagy hadd bonyolult, optimalizálja a keresést, vagy csatlakozik
mint látni fogjuk egy pillanat
úgy, hogy ők a kicsit hatékonyabb
mint bármi tisztán lineáris.
Nem akarom, hogy az automatikus növeli ezen a téren?
Tehát nem, mert az igazi szülő elem létezik
A tanfolyamok asztal.
Ez az, ahol ez fog kapni, valamint,
plusz, ha ez valójában behelyezve.
Itt, ez az egész folyik kézzel kell beilleszteni
Az általunk feltehetően a kódot.
Szóval egyszerűen adja hogy mind a kurzus azonosító
és oktató ID van indexek.
Most megyünk előre, és mentse.
És most, csak hogy megmutassa Ön a levelezés
között, mi a jó GUI barát felület
és a parancssori felület.
Hadd menjek előre, és nem a követően ezen a MySQL prompt.
Fogok mondani használata courses50
amely a tetszőleges név, Adtam az adatbázisban.
És most nem is emlékszem, mit csináltunk.
Hadd írjuk be a show táblázatok
és általában pontosvessző lesz a barátod itt
befejezni a lekérdezés.
És itt van.
Tehát itt van a sorok vagy inkább a táblák, hogy mi van itt.
Nos, emlékszem, mi egy tanfolyamot néz ki,
hadd ne írják tanfolyamok és most látom, valami egy ASCII
vagy egy változata, amit phpMyAdmin csinál
és látom, hogy ID egy int.
Van, hogy a 10.
Mit jelent ez?
Ez csak azt jelenti, hogy ha ez jelenik meg ez fog tartani
maximum 10 karakter a terminál ablakban.
Ez nullképes?
Nem ez az elsődleges kulcs.
Lehet, hogy van egy alapértelmezett érték?
No. És extra, ami külön zászlók, mint az automatikus növekmény.
Szóval csak nem egy pár gyors betoldások itt.
Én megyek fel hogy - mondjuk.
Változtassuk állapotból egy dia
ahol egyfajta előre felkészülni ezt.
Ez egy összefoglaló, akkor a mindhárom ezeket a táblázatokat.
Már csak kézzel adta az első parancs.
És itt, mentem előre, és írja a többiek az Ön számára.
Ez csak a stilisztikai dolog.
Általában, egy csomó ember típusú SQL utasításokat minden sapkák
majd a tábla nevét és mezőneveket kisbetűvel,
ha csak azért, mert fajta standok
hogy mi a terminológia és mi az adatbázis szintaxis.
Tehát itt van három asztalok, tanfolyamok, oktatók,
és tanfolyamok oktatók.
A dia tettem előre, Nem volt az ID mező
de ez valójában nem egy rossz dolog egyáltalán.
Azt csak látni a harmadik oszlop is.
Vajon én csináltam itt?
Tehát most hadd javasoljuk, hogy mi egy csomó betoldások.
Tehát itt van néhány adat, Én nagyításhoz
Így fogok javasolni hogy a tanfolyamok,
mi csak három tanfolyamok.
És én választottam ezt a három Mert ők képviselője
néhány szép - ezek néhány szép tulajdonságait.
CS1, CS50, CS51, ezek már egyre azonosítók
de mi azonosítója, ami teljesen lényegtelen.
Ez csak a sorrendben, voltak automatikus be nekem.
Mi a helyzet az oktatók?
Tehát most, mert Henry Leitner tanít mind a CS1 és CS51,
ez a fajta egy időszerű kihatással a design.
És Jesse tanít CS51 és Malan tanít CS50.
Így most - vagy inkább ezek csak azok az emberek egyedi azonosítók.
És a tanfolyamok és oktatók, - képzésirányítók, észre itt.
Természetesen ID1, amely volt CS1 tanítják
az oktató ID1 aki Henry.
Természetesen ID2, amit Szerintem volt CS50 tanítják
az oktató ID2, ami Malan.
És akkor végül, CS51 és észre, van két sorban.
És most ez az, amiért a csatlakozni tábla erős tanítják
mind Henry és Jesse.
Szóval ez mind szép és jó,
de én is alig emlékszem, le a felső
a fejemből, ki kicsoda itt.
Hogyan lehet esetleg foglalkozik, hogy a kódot,
anélkül, hogy hard code dolgokat?
Nos, ez az, ahol az SQL maga kezd válni a barátunk.
És én fogom javasolni, hogy akkor írja be az alábbi.
Én ezt az a tényleges prompt.
Hadd menjek előre, és be ezeket a dolgokat.
Tehát, a tanfolyamok táblázat lássuk pontosan mi volt a
pillanattal ezelőtt.
Megyek előre, és azt mondják, menjünk be CS1 és a CS50.
Nézzünk be egy pár sort egyszerre, CS51.
Nos, hadd menjen előre, és mentse.
Rendben, én csak felüdítő leggyorsabban
amennyit csak tudok kapcsolatok láttunk a képernyőn.
És itt van Leitner, itt van Malan.
Adjunk magunknak egy sort, és Tov.
Most hadd mentse el ezt.
És teszem őket szándékosan az ugyanabban a sorrendben.
Nem, elfelejtettem, hogy az automatikus növekmény.
Hadd gyorsan kijavítani ezt.
Megcsinálom ezt az online kódot.
Ez nem sikerült, mint egy félre.
Az a tény, hogy nem tudtam be Leitner és Malan
és Tov nem sikerült, mert nem adja meg az azonosító számot, bár
ez vár egy és én elfelejtettem, hogy ellenőrizze az automatikus növekmény,
ami azt jelenti, hogy mind alapértelmezés hogy nulla.
De aztán ellentmond, amely tulajdonság, amely már meghatározott.
Az elsődleges kulcs megsértették így nem is hadd csinálni.
Hadd erősít ez.
Nos, hadd menjek vissza a Beszúrás lap van, és adja meg
hogy szeretnék Leitner, Malan és, még egy sor, Tov.
És most végül, az egyetlen az egyik, hogy egy kicsit nehéz
hogy emlékezzen a kurzus oktató.
Nézzük be most, hogy Természetesen ID1 az oktató ID1
tehát ez CS1 és Henry.
Természetesen ID2 az oktató ID2 amely CS50 és Malan.
És akkor az utolsó is van aggódni természetesen ID3
amely CS51, tanítják
a tanfolyam oktató 1., ami Henry.
És hármat is tanított 3-mal, ami Tov.
Így remélhetőleg most már már újra ezt -
a fenébe is, én is ugyanezt tették.
Tanfolyam oktató szüksége automatikus növekmény.
Rendben van.
Én ezt gyorsabban ebben az időben, 1 Természetesen, természetesen 1, 2, 2.
És most végül, mi CS51 amely természetesen ID3 és Henry.
És természetesen ID3 és Jesse.
Jól néz ki.
OK. Tehát most, menjünk vissza hogy a terminál ablakban.
Tehát, ha leírom tanfolyamok fogjuk látni ezt.
Ha szeretné látni tanfolyamok tudok most nem válassza csillag tanfolyamok,
pontosvesszőt, és most látjuk ezeket az értékeket.
És most, mit akarok csinálni?
Válassza ki a csillag oktatók, ez az, ahogy az várható volt,
és válassza ki a csillag tanfolyamok - Természetesen aláhúzás oktató.
Szóval hogyan most csatlakozni ezek a táblák?
Tehát a szépség, miután választott az ID-értékek ilyen módon
hogy ha belegondolsz figyelembe véve a kurzus táblázat
és az oktató asztalra, majd beillesztése
között a két a elmék a tanfolyam oktató
táblázat akkor milyen vezeték az összes ilyen azonosító oszlopok
így egyesíti őket egy hatalmas oszlop, amely az összes
az információs törődünk.
Az SQL szintaxisa nem feltétlenül nyilvánvaló,
de lássuk, meg tudjuk csinálni.
Tehát válasszon csillag tanfolyamok,
és van egy pár módon meg tudjuk csinálni.
Megyek nyomja meg az Enter csak fajta formátumot dolgok szépen,
de nyíl csak egy tünete a kliens oldali eszköz,
ennek semmi köze SQL is.
Tehát válasszon csillag tanfolyamok.
Megyek most csatlakozhatnak A tanfolyamok táblázat
A tanfolyam oktató asztalra.
Hogyan? A mező neve courses.id egyenlő kurzus
aláhúzás oktató pont mi a neve
a megfelelő mező itt, hogy szeretnék egy pár.
Ez nem azonosító.
Ez - mit, bocs?
>> Tanfolyam ID.
OK, hadd kicsinyítés.
De azt akarom, hogy ez egy lépéssel tovább.
Már most csináltam asztal és ez.
Most azt akarom, hogy húzza ez a srác is.
Nos, hadd tovább csatlakozni az egészet
az oktató táblázat, hogy milyen?
Tanfolyam aláhúzás instructor.instructor id
egyenlő instructors.id.
Így lehetett volna írni ez a lekérdezés néhány módon.
A sorrend, amit meg is tettem ezt egyáltalán nem olyan fontos.
Én csak ilyen tette a elmém balról jobbra.
Mi tehette ezt A néhány különböző módokon
de ha most már a pontosvesszőt, és nyomja meg az Enter,
észre kapok vissza egy új ideiglenes tábla, eredményhalmaz
hogy úgy mondjam, az adatbázisba beszélni.
És mi van ebben a dologban?
Nekem van azonosító, a nevet, a másik Azonosító, ami elég zavaró
nekem abban a pillanatban, a tanfolyam azonosító,
egy oktató azonosító, azonosító, és a nevet.
Tehát, a végén a nap megvan a megfelelő adatokat most.
Látom, hogy CS1 tanítják Leitner, CS51 tanítják
Leitner és Tov, és CS50 tanítják Malan.
De én egy kicsit ideges ez a bizonytalanság, amit létrehozott.
Mi a kétértelműséget Vagyok utalva?
Igen?
[Hallható Megjegyzés]
Hárman azonosító oszlop.
Tehát valóban erősít ebben és fogunk valóban megy
hogy elhalasztja a keretet végül, hogy segítsen nekünk ebben,
de kiderül, hogy van a kulcsszó az SQL nevű S,
ahol megadhatja a alias, egy új nevet a mező
így tudjuk elkerülni ezt a kétértelműség összesen.
De rájött, hogy ha nem cím valahogy, mint
kulcsszó vagy keret,
van esetleg ezt kétértelműség ha megpróbálja
elérni az ID mező mert nyilvánvalóan vannak olyanok
az ismétlődő nevek is.
Tehát ez egy csatlakozhatnak, és azt hiszem, a lelki szemei ​​előtt a legjobb módja annak,
gondolni, hogy tényleg az, hogy a két táblát,
sorban őket a a kívánt módon.
És ez egy úgynevezett belső csatlakozni abban az értelemben,
hogy mi ötvözi A táblázatok itt.
Vannak más típusú csatlakozik, hogy szembesülhet
az idő, mint a külső csatlakozik,
de a legtöbb esetben ez talán a leggyakoribb
rekonstruálására adatokat.
Mit tettünk most általában az úgynevezett
normalizálása az adatokat, úgy, hogy a nincs kettős sehol
a táblák.
És párhuzamos, megtenném azt jelentette, hogy az első megközelítés.
Ha említette Leitner és Tov több helyen
az adatbázisban, ez nem általában a legjobb döntés
különösen, ha a neve is változás túlóra, vagy abban az esetben,
a házasság, a leánykori neve is változás maga csak azt, egy
kanonikus helyen egy adatok értéke, mint egy név.
Rendben van.
Szóval, összefoglalva, már volt egy néhány tervezési döntéseket, hogy
és a legfontosabbak Valószínűleg csökkent bizonyos
ilyen döntések indexek.
De hadd rámutatni, egy másik dolog is.
Ha visszamegyek a phpMyAdmin,
egyik jellemzője lehet, hogy nem már találkozott korábban IS
a következő.
Ha elmegyek tanfolyam oktató, Már nem adja meg, hogy néhány
ezek a dolgok indexek.
De hadd menjen a szerkezet lapján persze oktató.
Hadd kattintson most indexek és vegyük észre a következőket.
Én meg, hogy itt van egy elsődleges kulcs
az oszlopon hívott azonosítót.
Ez egy kissé bonyolult módon meghatározva számossága
és így tovább, mint amely a méret a mező bájtban.
De most is van egy területen, természetesen azonosító, ami -
Természetesen ID ami történik előre és egyedi, OK.
Én ezt a előre számunkra.
Szóval, miért van ez a - hadd csökken ez a vita kedvéért.
Tudod, mit tettem?
OK. Tehát, a korábbi, az egyik veszélyek az a GUI eszköz
mint ez, amikor mi voltunk létre ezt a join tábla,
a tanfolyam oktató tábla, Emlékeztetünk arra, hogy én meg
hogy szeretnék index ezen a területen
és az index ezen más területen.
A mellékhatása ellenőrzése mind a két doboz
ugyanazon a képernyőn, hogy a phpMyAdmin következtetni, hogy a
hogy szeretnék nem kettő külön indexek,
hogy szeretnék a csatlakozni index általában csak akkor hasznos,
vagy a leghasznosabb, amikor keresés az nem egy mező
de mind a két területen.
És ezért kellett őket összekapcsol ott
így esett ez az oka annak, hogy volt, nem az, amit akartam.
Inkább megyek hogy újra ezt itt.
Én megyek, hogy a tanfolyam azonosító
alatt több vagyok akartam mondani, hogy adjunk index.
És én megyek alá oktató ID és mondjuk hozzá index.
És most, ha mi, kattintson ide észre van három indexek,
egy elsődleges és ahogy szánt egy-egy minden
azon idegen kulcsok.
És én hívom, mert a külföldi Természetesen ID a táblázatban térképek
hogy melyik mező, csak a világos, a másik asztalhoz.
Az elsődleges kulcs neve azonosító, A táblázatban nevű tanfolyamok,
és ugyanazon üzlet a másik.
De most, egy érdekes trükk és tényleg technika.
Csak ment előre, és hadd csinálni, hogy egy kicsit lassabban.
Az ugyanazon a képernyőn, értesítés azt mondja kapcsolat nézetben itt.
Én kattintson erre, és most észre én kap, hogy csinál egy pár korlátok.
Szóval, az egyik a upsides is
nem csak a fogalmilag idegen kulcsok és egyéb táblák
mintha már csak az van hogy meghatározza az index
őket, lehet, hogy a adatbázis segítségével még több
integritásának biztosítása Az ezen a területen.
Pontosabban, én most adja át ez a csökkenés
le, hogy a tanfolyam azonosító mező
A táblázatban valóban térképeket a courses.id.
Hasonlóképpen, oktató aláhúzás ID leképezve instructors.id.
Nos, miért van ez hasznos?
Nos, észre, a jobb oldalon oldalán, amit úgy tűnik most.
Most már tanítani adatbázis, ha Henry
például valaha visszavonul és a sor eltűnik
Az oktató a tábla összesen ezáltal, hogy
törölt, tudok ezen keresztül lépcsőzetes megközelítés biztosítja,
hogy a tanfolyamok tanít a már nem jár vele.
Én tanítani az adatbázisban törölni a sorok
ebben az úgynevezett join tábla automatikusan, ha Henry vagy ha egy
az ő tanfolyamok eltűnik.
Nos, miért van ez vonzó?
Igen?
[Hallható Megjegyzés]
Csak meg kell csinálni, ha és hosszabb távon, nem igaz?
Ez nagyon egyszerű, ha a fajta az emberek jönnek és mennek, tanfolyamok jön
és megy, az adatbázis lehetne csak kap tele tanfolyamok
és a kar, hogy nem hosszabb releváns a adathalmaz.
És az adatokat kezd Nagyon rendetlen, piszkos és áporodott,
így itt is rendezni
A érvényre néhány ezeket a korlátokat.
Igen?
[Hallható Megjegyzés]
Úgy tudja útján ezt.
Ez az a képernyő, ahol a vagyunk megadása kapcsolat
között idegen kulcs és az elsődleges kulcs.
Tehát minden az elnevezési egyezmények utaltam
a korábban csak egyezmények.
Nincs belső értelme.
Ez az a képernyő ami csak akkor hasznos,
után megadott indexek Minden ilyen területen, mint mi.
És ez a legördülő mi egy pár dolgot, például
Ha a kurzus törlésre lehet tulajdonképpen megakadályozza, hogy a törlés
történjen, ha egy sor a táblázatban
az csak azt mondom, korlátozása.
Más szavakkal, Henry nem lehet nyugdíjba
amíg nem elválasztja őt a CS51 és CS1.
Szóval ez egy jó dolog.
De járhat hibák a kódban
ha nem számít arra, hogy, vagy mi lehet a kaszkád,
a kaszkád hasonló, mint Cascading Style Sheets
és a lépcsőzetes vízesés azt jelenti, hogy ha egy -
Ha Henry visszavonul, így - a szerzés törölt
így lesz a sor itt törlődnek.
Nincs művelet nem jelent semmit, vagy null egyfajta hasznos, ha kedves
A kérsz történelmi rekord Henry miután tanított CS51,
de csak azt, hogy a mező semmis, így a sorok nem
de nem tovább jár vele.
Tehát ezek nagyon erős technikák, amelyek segítségével
és ki kell használnia annak ellenére, érdeklődés különösen
A takarít meg magad.
Hadd, hogy említést a néhány utolsó simítás van,
összetevőket, amelyekkel , ami hasznos lehet
tervünk az adatbázis-tervezés.
Arra is van választás az adatbázis motor
hogy használja a kódban.
Ha még nem ismeri A CS161 lehet, hogy -
vagy akár 61, lehet, hogy általában ismernie kell fájlrendszert.
És ott van a dolgok mint, NTFS és HFS +
és X2FS4 [fonetikus] és a 3. és így tovább.
Van különböző módon Az adattárolásra az asztalon.
Ugyanígy vannak különböző módon adattárolásra
adatbázisban alapértelmezés szerint legalábbis a Készülék
A legújabb verzió A MySQL.
Már az adatbázis-motor néven, NoDB,
, amely támogatja a pár szép képességgel.
De a másik gyakori egy szintén úgynevezett MyISAM és még egy másik
hogy lehet használni a memória, ami azt jelenti, nem tesz semmit
a lemezen, csak tartsa a dolgok a memóriában.
Az esetek többségében valószínűleg nem baj csak most kezdődik
A NoDB, de olyan projektek amelyek általában bevonják magas
a behelyezés például mint egy csomó gyors fakitermelés,
több száz dolog másodpercenként vagy ezer dolog.
Bármikor van egy Sok dolog lesz
be az adatbázisban akkor ez a fajta
az alacsonyabb szintű döntések kezdenek bekapcsolódni.
A teljes szöveg funkció például csak akkor működik, MyISAM
úgy, hogy van egy következménye.
De lehet felidézni ezt, nézzük Legalább motiválni, hogy miért érdekel
a NoDB különösen.
A verseny feltételeit általában az, hogy mit?
Rendben, ez egy utalás egy példa néhány
Az lehet, hogy hallotta a az elmúlt években, hogy 161 vagy 50
ahol van egy szobatársa, mind a ketten nagyon szeretem a tejet,
az egyik, hogy hazaér először nyílik A hűtőben nincs tej,
zárja be a hűtő séta az egész utcákon CVS és kap
összhangban vásárolni egy kis tejet.
Eközben, a szobatársam jön vissza.
Ő is szereti a tejet.
Nyissa ki a hűtőszekrény és a rájön, nincs tej.
Itt is, majd elmegy a tárolja, talán a többi CVS.
Gyors előre néhány perc később gyere vissza, és most mindkettő
A vásárolt tejet.
Az egyik most megy elrontani, mert nem
, mint a tej, hogy sok és ez a probléma, nem igaz?
Mivel mind a ketten ellenőrzik az állam néhány változó
és egy döntés alapján rajta bár az állam
, hogy a változó lényegében a folyamatban megváltozott,
mindennek lassan vége a mennyi időt vesz igénybe
eljutni, és a CVS.
Tehát mi is egyfajta ostoba valós a világ megoldás a problémára?
Hagy egy megjegyzés, nem igaz?
Ez történt az elmúlt időben.
Mindig hagy egy megjegyzést, vagy lakatot a dolog, a szó szoros értelmében.
És én azt mondom lakat, mert a Ha mégis, vagy vett CS161,
zár alapvető gondolat, hogy ilyen a világ.
Így verseny körülmények merülnek fel továbbá az adatbázisban világon
és lehet, hogy emlékszem, talán a CS50 finanszírozására ha volt 50,
ezt a kódot, hogy valóban adott titeket a specifikáció
abban az időben úgy, hogy a működése az úgynevezett atomi.
Ha akarta, ebben a esetben, vegyél egy részét az állomány
és az állomány bizonyos sajátos szimbóluma.
Azt mondta, hogy alkalmazza kódot, mint a ezt, mert ennek útján
A duplikált kulcs frissítéséhez szintaxis, amely be van építve
MySQL te hatékonyan Ennek sem a betét
vagy frissítést követően csinál egy kiválasztott, hogy
ha az állomány már létezik.
Más szóval, az analóg a világ, hogy vásárol egy állomány
a tej és a hűtőszekrény Lehet, hogy először is,
vásárlás előtt egy részét Google érdemes kiválasztani
az adatbázisból az összes részesedése a Google, hogy Dávid tulajdonában
hogy ha ő tulajdonában nulla vagy több.
Amint látod, ha övé nulla vagy több van
hogy majd tegye a következőket.
Meg sem kell, hogy nem egy betét
ha a saját nulla, mert nincs sorban David még
vagy meg kell csinálni egy frissítést ha legalább elméletben kívánt
hogy egy-egy sorban felhasználó.
A probléma kiválasztása hogy a részvények száma
majd frissíteni vagy behelyezése lehet megszakítani
valaki egy másik számítógépes terminál próbál vásárolni
vagy eladni néhány Dávid részesedése a készletek, hogy
jó célokra vagy sort rosszindulatú célokra.
Ez olyan, mint megy a boltba amikor a szobatársam visszajön
és ellenőrzi az állam A változó.
Tehát ez a szintaxis idején ami egyfajta megfelelő
A CS50, elkerüli, hogy probléma összesen.
És ez csak nem minden az, hogy varázslat zár az Ön számára,
de most ilyen jellegű A projektek a kurzus
amely nagy valószínűséggel magában bonyolultabb adathalmazok,
nem lehet elérni Mindig ilyen atomicitás.
Minden úgy történik egyszerre, vagy egyáltalán nem
megszakítás nélkül olyan elegánsan.
És így MySQL, a másik adatbázis motort,
támogatás a dolgokat hívott zárak,
amellyel meg lehet mondani, zár ez asztalra úgy, hogy csak az egyik kezelésére
és általában csak egy felhasználó érintse meg bármely időpontban
írni és olvasni, és akkor oldhatja fel.
Ez egy példa az egyik A MySQL saját referenciák,
ahol, ha van, mint egy bank véve, hogy próbálsz
levonni pénzt majd adjunk hozzá pénzt.
Lehet, hogy győződjön meg róla, hogy mindkét
olyan dolgok történnek együtt
úgy, hogy nincs matematikai hibák
és senki sem veszteség pénz, valahogy.
A probléma a zárak bár az adatbázis
ez általában azt jelenti, hogy az egész asztal le van zárva,
ami azt jelenti, ha száz ember próbál
hogy az üzleti a bank online ugyanazt az összeget
az idő csak az egyik belőlük egy időben.
Ami hülyeség, különösen szervereken manapság
hogy a nyolc természetesen 16 Persze, van egy hatalmas
memória, nincs oka folytatásokban minden
a tranzakciókat, ha ezek a ügyfelek csak megy
hogy befolyásolja a saját sorok.
Tehát NoDB lehetővé teszi, hogy dolgokat intelligensebb
és ez általában lesz megközelítés szedése kódot,
ahogy Ön valamit az úgynevezett a tranzakciót.
És ezt általában PHP kódot,
Ruby kódot, Python, mindegy.
De az SQL-kódot, ami végül fel is használt ez,
általában.
Kezdje tranzakció akkor Adjon meg két vagy több lekérdezés
kívánt végre összesen
megszakítás nélkül , vagy egyáltalán nem.
Ott is lehet némi válassza kimutatások
vagy valamilyen törli és frissítéseket.
De a jó dolog az, hogy a adatbázis lesz elég okos
, hogy megbizonyosodjon arról, hogy csak akkor zárja a sorokat ők valóban
részt ebben a frissítések vagy kijelöli és törli.
Tehát, ha van ezer sorok és te csak megérintette három
őket, csak az, hogy részhalmaza A tábla le lesz zárva
ami azt jelenti, a többi 99 ügyfelek érintse meg a sorok
anélkül, hogy folytatásokban és lelassította az Ön által.
Eközben ez a legszebb szempont a tranzakciókat.
Ezek a tranzakciók a értelemben, mint 161 a fájlrendszeren,
ők tranzakciós
ami azt jelenti, hogy tekercs vissza, akkor a visszavonás őket.
Ez olyan, mint a parancs vagy ellenőrzése F adatbázisok.
Ha úgy gondolja, részben végig minden
a különböző adatok működés, lő, valami rosszul megy.
Ön szó végre a különböző SQL query roll back
és az összes ilyen trend - minden Az állítások végre
után azt a Start tranzakció eltűnik
mintha soha nem történt meg,
amely egy hihetetlenül hatalmas dolog.
És ezek a fajta a dolgok természetesen 50 is sort
A söpörni a szőnyeg alá, és csak ilyen feltételezik
, hogy minden rendben lesz.
De ha egyszer elkezdi gondolkodás valós projektek
és a valódi felhasználók és a integritását az adatbázis,
ezek a fajta tervezési döntések
hogy lesz fontos.