>> Visas tiesības.
Tātad, bez papildu ADO, SQL, Strukturēta vaicājumu valoda.
Tātad, jūs, iespējams, izmanto šo pie vismaz CS50, varbūt CS165,
varbūt savu individuālie projekti.
Un ko tas SQL ļauj jums darīt, ar SQL Server plašāk?
Yeah?
[Nedzirdams Piezīme]
Labi, ka bija ļoti drošais veids, kā pateikt to.
Jā. Tātad tas ļauj jums uzglabāt datus
un vēl svarīgāk ļauj Jūs vaicājumu datu.
Un tas ir solis uz priekšu
izmantot kaut ko vienkāršāku, piemēram, CSV, labi.
Atdalot ar komatu Mainīgie.
Līdzīgas vērtības.
Tāpat ļauj ietaupīt Informācija viena rinda
teksta failā.
Bet kas ir negatīvie CSV failu, lai uzglabātu datus,
pat ja jūs faktiski saņemt rindas un kolonnas no tā?
Jā.
>> Jums nav "ir pats organizācijas
efektivitāte [dzirdams].
>> Jums nav vienādi organizācijas efektivitāti.
Ko tu ar to domā?
>> Nu, piemēram, [dzirdams] ir, piemēram, primārās [nedzirdama].
>> OK. Jā.
>> Tas ir relāciju datu bāzes Jums var būt vairākas datu bāzes
saistīti viens ar otru ļoti specifiskos veidos.
>> OK. Labs.
>> Tas ir [dzirdams] noteikt CSV.
>> Un ļaujiet man iekniebt mazliet terminoloģija.
Tāpēc vairākas tabulas ietvaros datu bāzē, pārliecinieties,
un kas pārsniedz to, kas jūs varat darīt ar vienu CSV.
Bet tiešām ierobežojums ar CSV Es teiktu, ir
ka neefektivitāte to visu.
Tas ir ļoti viegli izkārtojumu.
Bet, ja jūs vēlaties darīt vaicājumu, kas ir darba laiks
jebkura atlases vaicājumu uz CSV failu?
Es domāju, tas ir liels vecs [dzirdams] labi, "izraisīt sliktākajā gadījumā,
tie pieauga pašā apakšā.
Pat ja jūs būtu sakārtoti visu CSV failu, ja jūs nezināt,
ka sākumā, labi, jūs joprojām nāksies
meklēt viss.
Tātad, starp lietām Mēs ejam, lai iegūtu
izmantot faktisko datu bāzē, izmantojot valodu
piemēram, SQL ir, mēs varam vaicājumu tas, un mēs varam iepriekš
, datu bāzes dizaineri norādīt, kādi ir lauki
, kas bija iespējams, nāksies jautājumus par tā, ka cilvēki
pie MySQL vai Microsoft vai Oracle,
kurš ir veikusi datu bāzi jūs izmantojat varat darīt visu
par smago darbu norādītas, OK,
ņemot miljoni šo IDS.
Kā mēs varam izkārtojums - tiem, kas atmiņā?
Daži no koka veida struktūru iespējams,
tā, ka tad, kad jūs faktiski izpildīt Select,
tas ir kaut kas ir logaritmiska vai logaritmisko
gada logaritmiska laikā diezgan nekā patiesībā nododot
kaut lineārā.
Tāpēc mēs saņēmām daudz sniegumu, ka veidā.
Un mēs varam arī uzglabāt daudz vairāk Datu vieglāk "izraisīt SQL
Serveris parasti glabājas RAM kaut daļas
par to var uzglabāt uz diskā un jūs droši vien zināt, ko tagad
ka RAM parasti ātrāk nekā diskiem,
tā ka ir laba lieta.
Un mēs varam rīkoties laiksakritība daudz labāk.
Ja esat veicis 165 vai 161, Jūs zināt, ka, ja divi cilvēki mēģinātu
darīt to pašu uzreiz uz sistēmu,
sliktas lietas vispār var notikt.
Tātad, starp citām funkcijām, mēs var iegūt, ja mēs izstrādājam mūsu galdiem
jo pareizais ceļš ir labāku atbalstu un drošību
kad runa ir par laiksakritība.
Tātad, divi cilvēki divās daļās
pasaulē, izmantojot pašu mājas lapā, ja viņi abi mēģināt
nopirkt kaut ko pats laiks, ka rīkojums nav gatavojas
iet vienlaicīgi.
Kaut viņi būtu serializēja kāds cits, nevis mūsu pašu -
kāds cits, nevis sevi.
Datu bāze darīt, ka mums.
Tad, kad tas ir visvienkāršākais veids,
SQL ļauj mums vaicājumu relāciju datu bāzes.
Relāciju datu bāzes ir viens, kas ir viens
vai vairākas tabulas tajā parasti.
Un, ja tas ir mazliet svešs,
jūs tiešām var tikai domāju par to kā Excel vai numuru
vai Google izklājlapas.
Tas vienkārši ir rindas un kolonnas un parasti top katras
Šo rindu ir nosaukums par to.
Tātad tas varētu būt ID ailē nosaukumu kolonna,
adrese kolonnas un tā tālāk.
Un tad jūs varat būt vairāki šādas tabulas, ja vēlaties
lai sāktu ko veic dažāda veida datiem.
Bet jūs varat atgādināt vismaz No CS50, ka mēs mēģinājām
lai dotu jums GUI balstītu instruments [dzirdams]
lai pārvaldītu savu datu bāzi.
To sauca phpMyAdmin.
Tāpēc tas ir tikai sagadīšanās, ka tas tika uzrakstīts PHP, tiešām,
bet tas bija tikai tīmekļa priekšējā galā ar datu bāzi.
Un caur dažādām cilnēm un saites, jūs varētu sākt
konfigurēt datu bāzi par sevi.
Bet labs instruments, lai sāktu get nedaudz ērtāku
ar arī komandrindas klientu.
Tātad, ja, izmantojot CS50 Appliance vai tiešām, izmantojot jebkuru makro datoru
kas ir komandrindas MySQL klients, jūs varat arī darīt to veida
no vecās skolas, kā šis.
Kā malā MySQL projekta vismaz atvērtā koda versiju
par to tagad sauc MariaDB par dažādu iemeslu dēļ, jūs varat lasīt
uz augšu uz Wikipedia, bet tas ir pašu programmatūru,
tas pats sintakse un tā tālāk,
diezgan daudz pašu kodu bāzi.
Un tad, kad es esmu pie šīs liks Es tagad var mijiedarboties
ar savu datu bāzi daudz manuāli.
Tāpēc sakāms, ļaujiet man iet uz priekšu
un vienkārši atvērt termināļa logu.
Man gadījās būt, izmantojot CS50 Appliance, bet jūs varat darīt
par lielāko daļu jebkurā sistēmā kas jums tiesības
instalēta programmatūra.
Un es esmu gatavojas darīt MySQL-u lietotājvārdu John Harvard
šajā konkrētajā sistēmā,-p paroli, ka es tipa
kas nedaudz vairāk droši ar hitting Enter.
Tagad es esmu piedāvāts.
Es esmu gatavojas rakstīt tumšsarkanā šajā CS50 Appliance
un tagad es redzu būtībā ka tas pats screen.
Bet tur ir komandas tagad ka mēs varam sākt rakstīt
piemēram, liecina, datu bāzes, un kas notiek, lai parādītu man visu
no datu bāzēm, kas man ir jau ir izveidots sistēmā,
diezgan daudz to pašu sarakstu Jūs varētu redzēt phpMyAdmin.
Tur ir pāris citi, piemēram, informācijas shēmu un testu,
kas, ja jūs kule apkārt CS50 Appliance, mēs slēpt dažas
Šo zemāka līmeņa tabulās
bet tie esam bijuši tur visu šo laiku.
MySQL patiesībā ir zems īpašības, piemēram, lietotājvārdi
un paroles datu bāzē pati par sevi, ne par savu pieteikumu
ka Jums varētu būt darbojas uz augšu no tā.
Tātad iepriekš, šodien, es izveidots pāris datu bāzes,
no kuriem viens sauc courses50.
Izredzes ir daži no jums ir izmantojuši CS50 Protams iepirkšanās rīks,
kas ir liels interfeiss sekretāra kursu katalogs.
Un tas ir patiešām jauki datu kopa, lai runātu par "iemeslu,
viens, mēs esam sava veida visu protams, iepazinušies ar kursiem
un instruktori, un tikšanās vietas un visu veida
parasto lietas Universitātes,
bet tas ir arī ieguva dažas interesantas iespējas
projektēšanai.
Tāpēc mēs domājam, ka mēs gribētu izmantot jēdziens kursa kataloga
un iepirkšanās līdzeklis, kā piemērs visā šodien, lai sakārtotu
kadra daži no konstrukcijas lēmumi, mums ir, lai padarītu.
Tāpēc sāksim tur.
Pieņemsim, ka es tiešām gribēju pārstāvēt super vienkāršāko
Protams, iepirkšanās rīkiem.
Un vienkāršākais pasaule Es varu iedomāties, un viens ir
, kurā ir kursiem un tur ir instruktori.
Un pieņemsim, lai labad diskusijas
ka katrs kurss ir vismaz nosaukumu.
Tātad, pieņemsim sākt ieskicēt šo out.
Es esmu gatavojas izmantot phpMyAdmin tāpat kā ērtāk,
tāpēc mums nav veids, kas visas vaicājumiem manuāli.
Bet šeit es esmu manā courses50 datubāzē.
Ja svešs ar šo, tas būs ļoti viegli, kad jūs nirt
, lai savu projektu ja vēlaties to izmantot.
Es esmu gatavojas, lai radītu tabula sauc Kursi
un es varu domāt tikai viena lauka
tagad, nosaukums, protams.
Es iešu uz priekšu un teiksim man vienu kolonnu.
Tagad, kā jūs atceraties jums interfeiss, kas ir mazliet
kā šis.
Un otra otrādi atklāti gada phpMyAdmin ir tas, ka sava
Sevis instruktāžas un izmantojot dropdowns, var kārtot
un redzētu iespējas dizains lēmumus.
Tāpēc es esmu gatavojas sniegt katrs kurss vārdu.
Tas ir vārds šajā slejā.
Un kā par savu datu tipu?
Lielākā daļa no jums vajadzētu zināt, Vismaz daži no šiem datu tipiem
No iepriekšējas pieredzes.
Kas ir vajadzīgs par kursa nosaukums?
Sharon?
>> Varchar.
>> OK, varchar kas ir Mainīgs Char.
Un ko tas, ka nozīmē vairāk tehniski?
[Nedzirdams Piezīme]
OK. Tātad, tas ir string.
Un VAR aspekts un tas nozīmē ko?
Mainīgs. Bet tas, ko tas nozīmē?
Yeah?
[Nedzirdams Piezīme]
Tieši tā. Tātad, tas ir mainīgs rakstzīmju skaitu
virknē augšu zināmā maksimāli.
Tātad, šeit ir mūsu pirmā dizaina lēmums.
Mums tiešām ir jāizlemj cik baiti maksimāli
piešķirt katru šādu virkni.
Vispārīgi runājot, jūs vēlaties, lai veida nepadara to par pārāk mazs,
nav padarīt to pārāk liels "Izraisīt skaidrs
ja tas ir pārāk mazs, jūs vienkārši gatavojas sākt truncating datu
un jūs zaudēsiet informāciju.
Un, ja tas ir pārāk liels, jūs vienkārši veida stāsta datubāzi
sagaidīt un optimizēt vairāk datu
nekā tas tiešām var kādreiz.
Tātad, kas ir saprātīgs sajūta numurs nosaukuma kursu?
60? Labi, tāpēc 60.
Tas šķiet diezgan saprātīgi
ja vien tur nav izņēmumi, kas.
Tur tiešām nav grūti, ātri noteikums.
Lai būtu godīgi, jo vēsturisku iemeslu dēļ daudz
un cilvēki izvēlēsies 255 "Izraisīt gadiem, kas bija sava veida
nokavējuma maksimumā, izmantojot 8 baiti - 8 biti, savu skaitītājs.
Es gribētu vairāk [dzirdams] var izmantot pilnvaras 2
bet tas ir sava veida nozīmes.
Tātad, mēs varam iet ar 60.
Kas šķiet saprātīgs tik ilgi
kā mēs galu galā nav žēl to "Izraisīt tas ir augšējā robeža.
Tagad, pieņemsim pretējo lēmums tika veikts,
nav mainīgo simboli, bet tikai char jomā.
Tātad, atšķirībā no C un C + +, char nenozīmē vienu char
un datubāzes, kas parasti ir noteikts skaits
rakstzīmju virknes.
Kādas būtu otrādi un / vai negatīvie manas izvēles 60
par char jomā, vietā varchar?
Tas ir tieši pirmā šāda veida Lēmuma jums ir, lai
apskatot [fonētiskā] out Projekta ar saviem partneriem.
Jā, Sharon vēlreiz.
[Nedzirdams Piezīme]
Labs. Tātad, ja nosaukums ir mazāk
nekā 60, tad jūs izšķērdēt kāds tas delta ir
no 60 līdz faktiskais garums.
Tāpēc, ka vienkārši jūtas izšķērdīgs, vairāk baiti nekā jums nepieciešams.
Bet kāpēc tas pastāv?
Protams, tur ir daži otrādi.
Yeah?
[Nedzirdams Piezīme]
Pārliecināts. Tāpēc dažreiz jūs varētu zināt fiksēto numuru
burtu, piemēram, 10 cipari par tālruņa numuru, piemēram.
Bet kurš rūpējas, piemēram, kāpēc ne tikai teikt 11 vienalga
vai kāpēc ne teikt 60 vienalga ar varchar?
Kādas priekšrocības mēs saņemam zinot un projektēšana
uz noteiktu numuru rakstzīmju?
[Nedzirdams Piezīme]
Jūs esat uz pareizā ceļa.
Tātad, tas ir optimizācija, bet tas tiešām ir - jā?
[Nedzirdams Piezīme]
OK. Labs. Let 's fokusa uz šo pēdējo daļu.
Tā indeksācija.
Tātad izrādās, ja jūs iepriekš zināt, ka visi
Jūsu laukiem dodas būt 60 rakstzīmes,
jūs tiešām domājat, ka tas kolonna Excel datu bāzē
, kam ir ļoti taisni, kreisās malas
un labās malas malas
jo katra kolonna ir 60 rakstzīmes plats.
Tas nozīmē, ka šis virkne ir 60 rakstzīmes attālumā
no šīs virknes, 60 rakstzīmes prom no šī viena
un tas viens un tas viens.
Tātad, tāpat kā toreiz, kad jūs uzzināja C, jums bija brīvpieejas
pasaulē masīviem, pati ideja šeit.
Ja tiek pārstāvēta jūsu kolonna izmantojot tikai noteikta garuma rakstzīmēm,
jūs varat efektīvi indekss nejauši uz 60 vai 120 vai 180
un jūs varat saņemt individuāli stīgas daudz ātrāk.
Tad, ja tā vietā, jūsu kolonna bija taisni kreisās malas tā runāt
bet ļoti izturīgs tiesības malas uz kolonnu
tāpēc, ka jūs varētu ir 10 rakstzīmes,
15 rakstzīmes, 5 rakstzīmes.
Tāpēc tas arī ir tradeoff.
Un dažkārt tikai caur tiesu un kļūda
un eksperimenti Jūs varat izrēķināt
, kas īsti taisnība zvanu ir, bet tie ir veidi
par jautājumiem, kas vajadzētu iet
caur jūsu prātus un / vai galdi, kad runa ir laiks
veidot savu datu bāzi.
Tātad, ne vienmēr taisnība atbildēt, bet jums vajadzētu
vismaz ir dažas teikums vai divi prātā
backup neatkarīgi lēmums jūs veicat.
Labi.
Tā ļauj saglabāt ritināšanu Jo liek šeit
ka ir phpMyAdmin UI.
Tātad, noklusējuma vērtība vārds, man vajadzētu norādīt
ka tai būtu jābūt noklusējuma vērtības Null?
Ko jūs domājat?
Var, protams, ir null vārdu?
Vienkārši jūtas dīvaini, vai ne?
Es nevaru iedomāties nevienu nenosaukts kursus Hārvardas.
Un varbūt tur ir dažas neskaidra stūra gadījums
ja kurss ir dots numurs
un profesors nav izvēlējušies vārdu par to, bet -
Es domāju, lai heck ar, ka,
piemēram, pieņemsim nav pat apnikt atbalstot to.
Es teiktu interesēs par jauku tīru datubāzi,
pieņemsim norādīt, ka jūs nevarat noklusētā vērtība null.
Alternatīvi, mēs varētu darīt kaut kas līdzīgs untitled kursu
, kas nav atšķirībā Mac OS un Windows darīt
veidojot mape, piemēram,
bet tur, kas padara nedaudz vairāk sajūtu
lai cilvēks redzētu kaut ko.
Mēs runājam par back-end datubāzi, iespējams
par kursu katalogs.
Tāpēc man nav īsti pat patīk ideja par piešķirot tai
in Bez nosaukuma kursu nosaukumos
jo tas nav īsti notiek, lai palīdzētu ikvienam.
Liksim to, kā nav, kas nozīmē, ka tad, kad jūs ievietojiet
šajā datu bāzē, jums ir dot Katrs kurss nosaukumu
kas jūtas nedaudz tīrītājs man.
Labi.
Tātad ritināšanu tālāk, apkopošanu.
Tas vienkārši ir jādara ar rakstzīmju kopas un plauktiņš
Ja jūs esat kādreiz redzējuši piemin Zviedru
phpMyAdmin, kas ir "Izraisīt cilvēkiem
kurš rakstīja phpMyAdmin bija zviedru.
Ir tas, ka PHP vai tas ir MySQL?
Viens no diviem, es aizmirsu nesagatavots.
Bet tas ir par vēsturisku iemeslu dēļ
bet jūs varat izteikt katru raksturs angļu valodā
ka jūs varētu ar zviedru tāpēc tas ir lielā mērā nav jautājums.
CS50 Appliance, lai gan ir , ko izmanto - konfigurēta, lai izmantotu UTF-8,
lai vispār būtu nav pop up par jums.
Atribūti.
Lai neviens no tiem ir ļoti būtisks.
Es redzu binārā, neparakstītu Neparakstīts zerofill,
un atjaunota pašreizējā laika atzīmi.
Ka lauks attiecas tikai kādu ciparu jomā
vai kādu laiku laukus.
Tāpēc mēs izlaist kas pilnībā.
Null. Var šajā jomā būt nulle?
Tā nav. Mums jau ir ka veida sarunas.
Tāpēc mēs nevēlamies noklusējuma vērtība.
Mēs nevēlamies, lai to null.
Kas par indeksu?
Tur ir četras izvēles šeit.
Ko tas nozīmē, ja mēs norādām
ka šī rinda iet būt primārā atslēga?
Domāšana atpakaļ uz CS50 vai CS165 ja esat spēruši.
[Nedzirdams Piezīme]
Tieši tā. Tāpēc primārā atslēga pēc definīcijas ir joma
, kas unikāli identificē katra rinda šajā tabulā.
Un jūs varat paļauties uz to, ko darīt ka unikālu identifikācijas.
Tātad, ko tas nozīmē tad vienkārši ir unikāls?
Nu, veida šie divi ir sava
gada ar sekām zem motora pārsega.
Bet kopumā, primārā atslēga ir veida līgumu veicat
ar datu bāzes lieta.
Kad man vaicājumu meklē, protams,
Es esmu gatavojas izmantot šo konkrētajā jomā.
Un mēs atgriezties kāpēc mēs varētu būt divi
šādas izvēles šeit, pirmējā vai unikāls.
Unikāls vienkārši saka, šis laukā būs unikāls
bet es neesmu īsti izdarot veida verbālās saistību šeit
izmantot šo lauku darīt manu meklēšanu
iemeslu dēļ mēs redzēt tikai brīdi.
Ja mēs norādiet vietā indeksu, ko tas nozīmē, lai norādītu
ka laukam ir indekss par to?
Yeah?
[Nedzirdams Piezīme]
Tieši tā. Tas ir bijis optimizēta vaicājumu.
Tāpēc jums - datu bāzes servera, Oracle, MySQL, neatkarīgi,
parasti strādā tās burvju aizkulisēs, kad jūs noklikšķiniet
šo iespēju un pēc tam noklikšķiniet Saglabāt un tas tiks veidots
up parasti koka struktūru, B-koki, ja esat redzējuši
vai dzirdējis off, kas ir ļoti īss izskata koks
kas dod jums ļoti jauki logaritmisko īpašības
kad meklēšanu datiem.
Ja jums nav jānorāda indekss uz lauka, kas notiek
būt darbojas laiku meklējot
par patvaļīgu [Fonētiskā] Protams, vārds?
Kas tas ir?
[Nedzirdams Piezīme]
Ak, [dzirdams], lineāras, vai ne?
Ja tas tur nav optimizācijas nodrošināta ar datu bāzi
un jūs neesat domājuši datubāze, kāda veida
Datu gaidīt.
Vislabāk varat darīt, ir pārbaude viss, kad jūs meklējat
kādu vērtību, jo īpaši ja tur varētu
patiesībā ir dublikāti.
Pilna teksta tikmēr, mēs viļņu mūsu rokās tagad.
Bet parasti tā ir Rādītāja tips, kas ļauj jums
optimizēt atslēgvārdu meklē uz lauka.
Tātad tas varētu būt labs kandidāts
lai, piemēram, kursa aprakstā kur jūs varētu būt pāris
Šā panta un jūs varētu vēlas darīt Apakšvirkni spēlēs.
Pilna teksta parasti let jums, ka diezgan efektīvi.
AI, tas ir briesmīgs veida paskaidrojumu, bet, ja mēs lidināties
pār to jūs redzēsiet Auto pieaugumu.
Nav piemērojams gan šeit bet auto pieaugums ir noderīga
lai, piemēram, int laukā, jo datubāzē parūpēsies
procesa plus plusing to katru reizi, kad jūs to ievietot.
Tā, ka pat tad, ja divi cilvēki burtiski noklikšķiniet uz Iesniegt
vienlaicīgi un cenšas izveidot rindu kaut
datu bāzē, kas ir viens no viņiem saņems numurs I,
citi saņems numuru I plus 1.
Jums nav jāuztraucas
apmēram divus numurus piešķirti vienādi, ja tu būtu
to darīt sevi kodu.
Labi.
Tāpēc es veida, piemēram, ja mēs esam ieguvuši nosaukumu būt.
Tātad, pieņemsim, noklikšķiniet uz Saglabāt.
Tas ir labs dizains par datu bāzes tabulu?
Un kā malā, ja sarūsējis par SQL vai kārtojat
vienkārši vienmēr nepievērš acs to, kas notiek,
Es varētu būt drukāti tieši tā -
šie trīs virzieni, kas melnā un baltā tūlītēju
komandrindas klients vai es varētu darīt
ka kodu programmiski.
Tāpēc viss phpMyAdmin ir dara man ir tikai ietaupot man pūles
atcerēties dažreiz sintakse un rakstīt, kas paredzēti
piemēram, garlaicīgs komandām.
Labi.
Tāpēc tas nav justies kā Labākais dizains, viens lauks, tabula.
Tagad mēs varētu būt lietas, piemēram, profesoru
un atrašanās vietas un apraksti.
Bet pat tad, izmantojot tikai vārdu
lai noteiktu kursu nejūtas ideāls.
Kas parasti ir mēs esam darījuši pagātnē
Ja jūs esat izmantojis datu bāzes unikāli rindas?
Neizmantojat varchars parasti.
Yeah?
[Nedzirdams Piezīme]
Jā. Tāpēc parasti kursu ID.
Tātad, visbiežāk pieeja šeit īpaši
ja izmanto sistēmu faktiski ir tikai
izmantot numuru, piemēram, veselam skaitlim.
Tātad, ļaujiet man iet uz priekšu un darīt to.
Un mēs varam izdarīt dažus veidi, bet paziņojums, ja es tuvinātu
kas apakšā šeit.
Es esmu gatavojas teikt pievienot vienu kolonnas beigās tabulas,
parasti tikai vizuāli ērtības jūs likts ID
sākumā tabulas kaut arī tam nav reālas
funkcionālā ietekme.
Tāpēc es esmu gatavojas teikt pievienot vienu kolonnas
sākumā tabulā.
Es esmu gatavojas noklikšķiniet uz iet, ka dod man atpakaļ šo UI šeit.
Sauksim šo ID.
Ja mēs domājam, mēs esam nāksies ne vairāk darīt 4 miljonus kursi
int lauks ir labi.
Mēs pat varētu sarukt to uz leju
bet telpa ir lēts tā, kas tiešām rūpējas.
Bet mēs cenšamies rakstīt Facebook tagad
varētu nebūt slikti paredzēt lielas ints
kas dod mums 64-bitu ints
bet tad tu esi burtiski divkāršot bitu skaitu
ka jūs izmantojat, tik nelielas Tradeoff
bet kaut izskatīt.
Tagad tas ir mulsinoši mantojums lieta.
Jūs varētu atcerēties izmantot MySQL
ka jebkurā laikā jūs atzīt int lauka jūs bieži redzēt vairākus
blakus tai līdzīgu skaitu 10.
Tam nav nekāda sakara ar lielums skaita
vai bitu skaitu.
Kas ir saistīts ar numuru rakstzīmju, kas tiek izmantoti
vizuāli displeju ka int joma
ja izmanto termināla logu.
Tātad, mēs varam redzēt, ka pēc brīža.
Tātad, nevajag maldināt ierakstot skaitļus
tur pat ja tas ir efektīvi jautā mums
vienu šeit.
Vairāk nekā šeit, es esmu gatavojas iet uz priekšu un saka neparakstītu.
Nav nekāda iemesla, lai atkritumu visas mūsu negatīviem skaitļiem
jo datu bāzē parasti notiek
uzņemties pozitīvu vērtības vai null.
ID noteikti nedrīkst būt nulle.
Un ko jūs domājat par indekss šajā ID jomā?
Lai tas galvenais.
Tātad, ko tad, ja, piemēram, es varu domā tikai par vienu CS164 protams
Hārvardā un tikai viena CS50 kursu Hārvardas
un tas ir diezgan patiess vispārējais
ka tur varbūt izņēmumi [Dzirdams] Gan semestri
vai kaut kas dīvaini, piemēram, ka.
Bet vēl būtiskāk ir tas, kāpēc tas ir labāk
izmantot skaitlisko neatņemama ID identificētu kursus, nevis
ne tikai unikālu stīgu?
Yeah?
[Nedzirdams Piezīme]
Labi, interesanti.
Tātad, ja mums bija sava veida cross-uzskaitīti kursi.
Tātad, tas ir labs piemērs.
Es neesmu pārliecināts, ka es būtu atrisināt ka, lai gan
, dodot viņiem pašu ID numurs, ja tas ir
kur jūs iet ar to.
Nē? OK. Bet noteikti stūra lietu izskatīt.
Ja ir sava veida - mums ir nepieciešams kaut kāda veida
no aliasing potenciāli.
[Nedzirdams Piezīme]
Pārliecināts.
[Nedzirdams Piezīme]
Tas ir labs piemērs.
Nosaukums varētu mainīties laiks, pilnīgi pamatoti.
Kas vēl?
[Nedzirdams Piezīme]
Žēl, vēlreiz saku.
[Nedzirdams Piezīme]
Jā, tieši tā.
Tik tiešām, tas ir reālā atspēkojums ir
ka, izmantojot 32 bitu int ir iespējams, būs ātrāk
par dažu mainīgo garums char jomā.
Pirmajā gadījumā var burtiski iederēties reģistru,
nemaz nerunājot par daudz mazāku atmiņas nospiedumu.
Pēdējā gadījumā, jūs gatavojas kas ir jādara kūrortu [fonētiskā]
string salīdzinājumus, kas sevi ar lineāru
ar izmēru string iespējams.
Tātad, tas ir tikai jauki optimizācija,
, un jo īpaši tas notiek
ļaujiet mums darīt to, ko sauc par Pievienojas efektīvāk
tikai brīdi.
Tāpēc pieņemsim darīt.
Mēs norādīts, ka tas ir primārais
jo man nav īpaši grib kopt vai domājat, ka
par to skaits ir kursa.
Ļaujiet viņiem uzņemties neatkarīgi no vērtības, viņi vēlas.
Es esmu gatavojas teikt auto pieaugumu lai es varētu uzticēt šo detaļu.
Kā malā jūs varētu zina, ka Harvard
vismaz tiešām ir unikāla numuri kursiem.
Man nav jauna savākt ko tas kursi ir.
Es zinu, ka CS50 ir kataloga numurs ir 4949,
pilnīgi patvaļīgi.
Bet tur ir dīvaini stūra gadījumi, ka pat
šajā registrarial izgāztuvē protams katalogs datiem,
dažreiz kursi, vecas kursi ir vairāki, piemēram, 4.
Bet tehniski tas lauks ir char joma
tas vienkārši sākas ar 0004.
Tātad arī šeit, jums ir jābūt uzmanīgiem par nošķirot
starp lietām, piemēram, Protams, kataloga numurs
kas varētu būt dažas cilvēku jēdziens noteikta garuma, 0004,
un jums nevajadzētu uzglabāt ka piemēram, ar ints.
Šāda veida jomā būtu jāuzglabā citur.
Tātad Harvard, ja mēs faktiski padarot kursu
iepirkšanās rīks, tas ir iespējams, nav pietiekams
uz ciparu kursiem tikai ar 1, 2, 3, 4.
Mēs, iespējams, nāksies
ir cits lauks sauc kataloga numurs,
, kas ir arī paredzēts būt unikāls Based
cilvēktiesību konvencijas šeit bet tas nav labākā izvēle
unikālu identifikatoru, jo tas varētu būt dažāda garuma.
Tas varētu būt četri simboli, tas varētu būt pieci.
Patiesībā, es domāju, ka daži gadiem viņi pārvietojas
līdz piecas rakstzīmes "Cēlonis bija vairāk nekā 999 kursi
kopā vai kaut kas tamlīdzīgs tas, vai 9999 kursus.
Tātad, kas varētu būt piemērs kur lauks nav galvenais
bet tas ir unikāls.
Un e-pasta adresi ir vēl viens.
Jūs varētu vēlēties, tas ir unikāls
bet ne obligāti Jūsu primārā atslēga.
Labi.
Tāpēc ļaujiet man sprādziena no otra tabula daudz ātrāk, nekā šo vienu.
Tāpēc es esmu gatavojas nosaukt šo viens Instruktori un es esmu gatavojas
sniegt šo kopā kolonnu skaits no diviem.
Es esmu gatavojas mācīties manu mācība, kas gūta pēdējo reizi.
Es esmu dodas uz zvanu pirmā kolonna ID.
Es esmu dodas uz zvanu Otrajā ailē vārds.
Es esmu arī gatavojas darīt varchar.
Es esmu gatavojas pieņemt nē profesors ir nosaukums ilgāk
nekā 60 rakstzīmes, taču Tagad tas varētu būt stumšanas to
ar dažiem gariem nosaukumiem, īpašu cilvēki ar vidējiem nosaukumiem.
Tas ir sods par šodienu.
Tāpēc pieņemsim ritināt nekā šeit.
Veidosim šo neparakstīts vēlreiz.
Veidosim šo primāro.
Un mēs pieļaut divos eksemplāros nosaukumi
gadījumā, ja ir divi John Smita vai kaut kas tamlīdzīgs.
Un tagad mums ir divas tabulas.
Tāpēc tagad, tas begs Jautājums, kā es varu piesaistīt
ar instruktoru ar kursu?
Es jūtu, es veida got priekšā sevi
jo, ja instruktors māca kursu,
mans pirmais instinkts būtu faktiski iet atpakaļ
uz kursiem realizēt šo nebija laba ideja.
Ļaujiet man patiešām pievienot vienu kolonnu beigās tabulas,
noklikšķiniet uz iet, un es ņemšu nosaukt šo instruktors.
Un es ņemšu padara šo varchar un es ņemšu padara šo 60.
Un varbūt es atstāt to null tagad
ja kurss ir ne ir neparakstīta ar instruktoru
kas dažreiz notiek pirms Termins sākas un noklikšķiniet uz Saglabāt.
Kurš no šiem dizainparaugiem Vai jūs dodat priekšroku?
Pirmais, kur mēs esam atsevišķie instruktora tabula
vai otrais kur mēs tikai pievienot lauku ar kursu?
Tātad, tas ir cieši saistīt instruktors ar kursu.
[Nedzirdams Piezīme]
OK. Labs. Bet ļaujiet man push atpakaļ.
Tas ir tikai tik vienkārši, kā es varētu vienkārši ierakstiet personas vārdu
šajā tabulā, tāpat, protams, ka ir kāda vērtība, vai -?
[Nedzirdams Piezīme]
Labi.
Nu, ļaujiet man būs grūti šeit.
Tātad, ļaujiet man teikt, ka šis kurss ir CS51
un es zinu, tas ir mācīts Šogad divi cilvēki.
Tātad, Henry Leitner un Jesse Tova, bet -
tāpēc es ņemšu tikai likt komatu starp diviem, pa labi.
Es esmu patiešām labi CSV no vakardienas.
[Nedzirdams Piezīme]
Tieši tā, taisnība.
Tiklīdz jūs izmantot lai kaut kas līdzīgs šim,
kas var justies saprātīgi un jūs varētu justies
piemēram, tas ir sava veida gudrs.
Es esmu veida aizņēmumu vienu Ideja, kas ir strādāt labi,
aizņemties jaunu ideju un kārtot tos apvieno.
Jūs esat veida pilnīgi sakaut punktu, izmantojot datu bāzi
pirmajā vietā "cēlonis tad, ja viena no vērtībām
izmantot tas ir ātrāks meklējumi jo dažādu indeksu
un tabulas, kas var ir izveidojuši jums
ar datu bāzes dzinējs pati.
Tagad, ja jūs vēlaties, lai meklētu visiem kursiem
ka Jesse māca, tagad jums ir to darīt apakšvirkni atbilst par visiem
no instruktora laukiem,
kas faktiski nozīmē lineāro meklēt vēlreiz, "izraisīt jums
lai atrastu šo patvaļīgu kopu trīs rakstzīmes jebkur
šajā instruktora jomā pirms
kas varbūt sekoja ar komatu.
Tāpēc tas noteikti nav bode arī.
Tātad, ļaujiet man iet atpakaļ uz galda.
Ļaujiet man iet uz priekšu, lai kursus, atsaukt to.
Es esmu gatavojas tikai iet priekšu un nometiet šo tīrumu.
Un, ja jūs vēlaties, lai izdarīt manuāli,
sintakse ir ALTER TABLE kursi DROP instruktors.
Tāpēc iesim uz priekšu un teikt, jā, ka.
Un doties atpakaļ uz šo iepriekšējo ideju
kur man ir atsevišķs tabula instruktori.
Bet tagad tas jūtas mazliet kā es varu likt kursu
veicot galda un instruktors
ar instruktora galda, bet es kaut kā ir nepieciešams, lai savienotu divus.
Un kā jūs ierosina mēs to darām?
[Nedzirdams Piezīme]
Labs. Tāpēc pieņemsim darīt.
Un jūs varētu pieprasīt šo tabula teorētiski neko.
Es esmu gatavojas apzināti sauciet to, kā daudz
ietvaru būtu to sauc, starp tiem,
Laravel kā jūs redzēsiet mazliet.
Es esmu gatavojas to nosaukt kursu uzsvērt instruktors.
Izmantojot vienskaitlī šajā attiecas uz katru no vārdiem
un visi mazie burti atkal, un arī ar -
Tad alfabēta sakārtoti no kreisās uz labo pusi.
Tas ir pilnīgi patvaļīga, bet tā mēdz būt konvencijas
ir daudz šīm sistēmām PHP citās valodās.
Cik kolonnas man ir nepieciešams tas, ko mēs saucam pievienoties galda,
pievienoties divi citi tabulas kopā?
Trīs kolonnas?
Kuriem viens - ko viņi varētu būt?
[Nedzirdams Piezīme]
OK. Labs. , Kas darbojas.
Un mēs varētu tehniski sagriež stūri šeit, bet daudz
ietvaru, jo īpaši tas joprojām dod pat šīs rindas
unikālu ID, lai gan semantiski rinda
ka mums patiešām rūp, vai kolonnas, ko mēs tiešām rūpējas
aptuveni ir pēdējās divas no ko jūs teicāt, protams, ID
un instruktors ID.
Tātad, pieņemsim to izdarītu.
Es aicinu šo rindu tikai ID, tāpat kā mēs to darījām agrāk.
Bet tas viens es esmu gatavojas zvanīt kursu ID.
Šis viens es esmu gatavojas zvaniet instruktora ID.
Un es esmu gatavojas norādīt, ka visi
no tām ir parakstīti Jo es vēlos
lai palielinātu savu 4 miljardiem int diapazons.
Neviens no viņiem ir null.
Es esmu gatavojas noteikt, ka ID joprojām ir galvenais.
Un atkal, tas ir tikai konvencija,
daudz sistēmu pat ja Jums nav atrisināt
fundamentāli nepieciešama unikāls identifikators rindā,
izrādās, tas ir ērti kods, SQL, kas notiek
lai automātiski radīts mums.
Tāpēc es ņemšu atvaļinājumu, ka primārais.
Bet tagad, es veida ir dizaina lēmums,
Protams ID un instruktors ID.
Kas indeksi ja tādas ja viņi saņem?
Ja es ņemšu atvaļinājumu nav indeksi, kāda ir saistība?
Kas ir saistība?
Sniegumu kā agrāk, vai ne?
Ja nav indeksa, Vislabāk varat darīt, ir sava veida
gada [dzirdams] caur Visa lieta meklē numuriem.
Tāpēc, ka nejūtas gudri.
Tas būtu primārais?
Tātad, kāpēc ne?
Kāpēc nav primārais?
[Nedzirdams Piezīme]
Perfekta. Tāpēc mēs roll out [fonētisko] primārais.
Mums jau ir izvēlējušies.
Tātad, tas būtu unikāls?
[Nedzirdams Piezīme]
Labs. Tātad, ja jūs pieņemat viens instruktors par kursu,
pilnīgi fine.
Un tas noteikti ir konkrēts gadījums
bet mēs jau atbaida vienu varbūt pazīstams piemērs.
CS51 ieguva divi instruktori tāpēc mēs esam veida
tagad ieskrūvē šajā lietā.
Ja mēs to atļauj tikai viens instruktors,
mēs patiešām varētu darīt ceļu ar pievienoties galda vispār,
doties atpakaļ uz iepriekšējo pieeju
un neliek personas vārdu varbūt taču instruktora ID.
Ja jūs zināt, katru Protams, kā tikko viens instruktors var būt tikai
viena kolonna.
Bet atšķirības ir , kas ieguva mums nepatikšanas.
Labi.
Tātad, tas būtu unikāls?
Nē Pilns teksts nav justies piemērojams.
Kā mēs teicām iepriekš, ka tas
par līdzīgu apakšvirkni saskaņojot apraksti.
Tātad, ko par indeksu?
Nu, indekss ir iespējams Mūsu labākais kandidāts
kas stāsta MySQL optimizēt meklējumiem, par to
vai ļaujiet man izstrādāt, optimizēt meklēšanu vai pievienojas
kā mēs redzēsim tikai brīdi
tāpēc, ka viņi nedaudz efektīvāka
nekā jebkas tikai lineāri.
Vēlos auto soli šajā jomā?
Līdz ar to nav, jo taisnība mātes elements eksistē
kursos galda.
Tas ir, ja tas ir gatavojas saņemt plus,
kā arī tad, kad tas ir faktiski ievietota.
Lūk, tas viss notiek manuāli ievietots
mums jādomā ar kodu.
Tā ļauj vienkārši norādīt ka gan laukums ID
un instruktors ID ir indeksi.
Tagad mēs iesim uz priekšu un saglabāt.
Un tagad, tikai, lai parādītu Jūs sarakste
starp to, kas ir jauka GUI draudzīgs interfeiss
un komandrindas interfeisu.
Ļaujiet man iet uz priekšu un darīt pēc šajā MySQL ātri.
Es esmu gatavojas teikt lietošanas courses50
kas ir patvaļīga nosaukums Es devu šai datubāzei.
Un tagad, man nav pat atcerēties to, ko mēs darījām.
Tāpēc ļaujiet man rakstīt rādīt tabulas
un vispār semikoliem būs jūsu draugs šeit
pabeigt vaicājumu.
Un tur tas ir.
Tātad, šeit ir rindas vai drīzāk tabulas, kas mums ir šeit.
Tagad, es aizmirst to, ko Protams izskatās,
tāpēc ļaujiet man darīt aprakstīt kursi un tagad es redzu sava veida ASCII
vai versija par to, kas phpMyAdmin darīja
un es redzu, ka ID ir int.
Tur ir, ka 10.
Ko tas nozīmē?
Tas tikai nozīmē, ka tad, kad tas ir parādīts tas notiek, lai
līdz 10 rakstzīmes termināļa logu.
Tas ir nullable?
Nē Tas ir primārā atslēga.
Vai tas ir noklusējuma vērtība?
Nē Un papildus, kas ir īpaša karogi, piemēram, auto pieaugumu.
Tāpēc pieņemsim tikai darīt pāris gada ātri ievietošanas šeit.
Es esmu gatavojas iet uz augšu līdz - pieņemsim tikai teikt.
Pieņemsim mainīt stāvokli slaidam
kur es veida iepriekš sagatavoties šo.
Tas ir kopsavilkums, tad, visi trīs no šīm tabulām.
Es jau tikko manuāli drukāti pirmo komandu.
Un šeit, es devos uz priekšu un rakstiet citus par jums.
Tas ir tikai stilistiskā lieta.
Vispār, daudzi cilvēki ierakstiet SQL visu cepures
un tad tabulu nosaukumi un lauku nosaukumi ar mazajiem burtiem,
ja tikai tāpēc, ka tas veida stendi
, kādas ir jūsu terminoloģija un kas ir datu bāzē sintakse.
Tāpēc šeit mēs esam trīs galdi, kursi, instruktori,
un kursi instruktori.
Slaidu es jau iepriekš, Man nebija ID lauku
bet tas nav reāli slikti vispār.
Mēs vēlētos redzēt Trešajā slejā tur.
Es biju darījis šeit?
Tāpēc tagad ļaujiet man ierosināt mēs ķekars ievietošanas.
Tātad, šeit ir daži dati, Es pietuvinātu objektu
Tāpēc es esmu gatavojas ierosināt ka kursos,
mēs tikai galā ar trim kursiem.
Un es izvēlējos šos trīs "Izraisīt viņi pārstāvi
kādas jaukas - tie ir dažas jaukas īpašības.
CS1, CS50, CS51, viņi ir pieaugošās ID
bet to, ID ir tas, kas nav nekādas nozīmes.
Tas ir tikai kārtību, kādā tie auto iekļauta ar mani.
Kā par instruktoru?
Tāpēc tagad, jo Henry Leitner māca gan CS1 un CS51,
Tas ir sava veida izdevīgs Ietekme uz mūsu dizainu.
Un Jesse māca CS51 un Malan māca CS50.
Tāpēc tagad - vai drīzāk tās ir tikai tiem cilvēkiem, unikālo ID.
Un kursi un instruktori, - kursu pasniedzējiem, paziņojums šeit.
Protams ID1, kas Tika CS1 tiek mācīta
Instruktora ID1 kurš ir Henry.
Protams ID2, ko es domāju, ka bija CS50 tiek mācīts
Instruktora ID2, kas ir Malan.
Un tad visbeidzot, CS51, un paziņojums mums ir divas rindas.
Un tagad tas ir iemesls, kāpēc pievienoties tabula ir spēcīgs tiek mācīts
gan Henry un Jesse.
Tātad tas ir viss, naudas sodu un labi,
Bet es varu tikko atceros off augšpusē
no manas galvas, kas ir kas šeit.
Kā jūs varat iespējams nodarbojas ar, ka kodu,
bez cietie kods lietas?
Nu, tas ir, ja SQL pati sāk kļūt par mūsu draugs.
Un es esmu gatavojas ierosināt mēs varam rakstīt šādi.
Es darīšu šo pie in faktiskais ātri.
Ļaujiet man iet uz priekšu un ievietot šīs lietas.
Tātad, uz kursiem tabulā pieņemsim darīt tieši to, ko mums bija
Pirms brīža.
Es esmu dodas uz priekšu un saka, pieņemsim ievietot CS1 un CS50.
Pieņemsim ievietot dažus rindas uzreiz, CS51.
Tagad, ļaujiet man iet uz priekšu un saglabāt.
Labi, tāpēc es esmu tikai atjaunošanās ātrāk
kā es varu attiecības mēs tikko redzējām uz ekrāna.
Tāpēc šeit mēs esam Leitner, šeit mums ir Malan.
Let 's dod sevi citu rindu, un Tova.
Tagad ļaujiet man saglabāt to.
Un es daru to apzināti vienā un tajā pašā secībā.
Nē, es aizmirsu, lai dotu šis auto pieaugums.
Ļaujiet man ātri noteikt šo.
Es noteikt to online kodu.
Tas neizdevās, jo malā.
Tas, ka es nevarēju ievietot Leitner un Malan
un Tova neizdevās, jo man nav norādīt identifikācijas numuru, lai gan
tas gaida vienu un I aizmirsu, lai pārbaudītu auto pieaugumu,
kas nozīmē, ka tie visi bija pēc noklusējuma kļūst nulle.
Bet kas tad ir pretrunā ar kuru īpašums, kas mēs esam precizēts.
Primārā atslēga tika pārkāptas tāpēc tas nav pat man to darīt.
Tāpēc ļaujiet man noteikt šo.
Tagad, ļaujiet man iet atpakaļ uz Ievietot cilni šeit un norādiet
ka es gribu Leitner, Malan un vēl viena rinda, Tova.
Un tagad visbeidzot, vienīgais viens, kas ir nedaudz grūti
atcerēties ir tas, protams, instruktors.
Pieņemsim ievietot tagad, Protams ID1 ir instruktors ID1
tā ka ir CS1 un Henry.
Protams ID2 ir instruktors ID2 kas ir CS50 un Malan.
Un tad pēdējie, mums ir jāuztraucas par ir, protams ID3
kas ir CS51, tiek mācīts
pēc kursa instruktors 1, kas ir Henry.
Un trīs, kā arī mācīja līdz 3, kas ir Tov.
Tāpēc, cerams, tagad mēs esam pārbūvēts šī -
damn it, man bija tas pats.
Protams instruktors nepieciešams auto pieaugumu.
Labi.
Es darīšu to ātrāk šoreiz, Protams 1, kursa 1, 2, 2.
Un tagad visbeidzot, mēs CS51 kas ir kursu ID3 un Henry.
Un protams, ID3 un Jesse.
Kas izskatās labi.
OK. Tāpēc tagad, iesim atpakaļ termināļa loga.
Tātad, ja es aprakstīt kursus mēs redzam.
Ja es vēlos redzēt kursus I Can tagad darīt izvēlēties zvaigzne no kursiem,
daļēji resnās zarnas, un tagad mēs redzam šīs vērtības.
Un tagad, ko vēl vēlos darīt?
Izvēlieties zvaigzne no instruktoriem, tas ir, kā es gaidīju,
un izvēlieties zvaigzne no kursiem - Protams pasvītrojums instruktors.
Tātad, kā es varu tagad pievienoties šīs tabulas?
Tā skaistums ir izvēlējies ID vērtības šādā veidā ir
ka, ja jūs domājat par ņemot kursu tabulu
un instruktors galds un pēc tam ievietojot
starp šiem diviem savā prātus kursu instruktors
Tabulā varat veida līnijas up visus šos ID kolonnām
lai jūs tos apvienot viens masveida kolonnas, kas ir visas
informācijas mums rūp.
SQL sintakse šim ne vienmēr ir skaidrs,
bet pieņemsim redzēt, ja mēs varam to izdarīt.
Tātad izvēlieties zvaigzne no kursiem,
un tur ir maz veids kā mēs to varam izdarīt.
Es esmu gatavojas hit Enter tikai veida formāta lietas labi,
bet tas bultiņa ir tikai simptoms klienta puses rīku,
tam nav nekāda darīt ar SQL pati.
Tātad izvēlieties zvaigzne no kursiem.
Es esmu gatavojas tagad pievienoties kursi tabula
par kursa instruktors tabulā.
Kā? Uz lauka, ko sauc par courses.id līdzinoties kurss
uzsvērt instruktors dot to, kas ir vārds
atbilstošā lauka šeit, ka es gribu pāris.
Tas nav ID.
It's - ko, žēl?
>> Course ID.
Labi, ļaujiet man attālinātu.
Bet es gribu, lai šo vienu soli tālāk.
Es esmu tagad izdarījusi tabulu, un tas viens.
Tagad es vēlos, lai vilktu tas puisis tik labi.
Tātad, ļaujiet man vēl pievienoties šim viss
par instruktora tabula par ko?
Protams, pasvītrojums instructor.instructor id
līdzinoties instructors.id.
Lai mēs varētu būt rakstīts šis vaicājums dažos veidos.
Kārtība, kādā es did this nav tik svarīgi.
Es tikko veida darīja to manuprāt, no kreisās puses uz labo.
Mēs būtu varējuši izdarīt to Jo daži dažādos veidos
bet, ja man tagad ir Semikola un hit Enter,
Paziņojums es saņemt atpakaļ jaunu pagaidu tabulu, rezultāts, kas
tā sakot datu bāzē runāt.
Un ko man ir šajā lieta?
Man ir uz ID, nosaukumu, cits ID, kas ir veida sajaucot
man brīdī, Protams ID,
instruktors ID, ID, un vārds.
Tātad, beigās, dienā mums ir tiesības datiem tagad.
Es redzu, ka CS1 tiek mācīts ar Leitner, CS51 ir mācīts
ko Leitner un Tova, un CS50 māca Malan.
Bet es esmu nedaudz nervozēja par šī neskaidrība Esmu izveidojis.
Kas ir neskaidrība Es esmu atsaucoties uz?
Yeah?
[Nedzirdams Piezīme]
Ir trīs ID kolonnas.
Tātad, mēs faktiski var noteikt šo un Mēs ejam, lai faktiski iet
atlikt mūsu sistēmā galu galā, lai palīdzētu mums ar to,
bet izrādās, ka tur ir atslēgvārds SQL sauc S,
kur jūs varat norādīt alias, jaunu nosaukumu laukā
lai mēs varētu izvairīties no tā neskaidrību vispār.
Bet saprata, ka, ja mums nav risināt kaut kā ar
ka atslēgvārdu vai sistēma,
tur ir iespējams, tas neskaidrība, ja jūs mēģināt
Lai piekļūtu ID lauku tāpēc, protams, ir tie,
ar dublikātu nosaukumiem tur.
Tāpēc tas ir pievienoties un es domāju, ka savā prātā pret acīm, labākais veids, kā
domāt par to tiešām ir veikt divas tabulas,
līnija tos ar Veidā, ka jūs vēlaties.
Un tas ir tā sauktais iekšējais pievienoties nozīmē
ka mēs esam apvienojot tabulas šeit.
Ir arī citi veidi pievienojas, ka mēs varētu saskarties
laikā, piemēram, vairāk nekā ārējā pievienojas,
bet lielākā daļa šo ir iespējams, visbiežāk
rekonstruēšanai datus.
Ko mēs esam darījuši tagad parasti, ko sauc
normalizējot savus datus, lai tur nav dublēšanās jebkur
jūsu tabulās.
Un dublēšanās, es būtu nozīmēja, ka pirmo pieeju.
Ja mēs būtu minēts Leitner un Tova vairākās vietās
datu bāzē, tas nav Parasti labākais lēmums
it īpaši, ja tās nosaukums varētu mainīt virsstundas vai gadījumā, ja
laulības, pirmslaulību uzvārds spēku mainīt sevi, jūs vienkārši vēlaties vienu
kanonisko vieta dažiem datu vērtība, piemēram, nosaukumu.
Labi.
Tātad, lai Atgādinājums, mēs esam bija dažas dizaina lēmumus darīt
un vissvarīgākie iespējams samazināt līdz aptuveni
Šo izvēli indeksu.
Bet ļaujiet man norādīt viena cita lieta, kā labi.
Ja es dodos atpakaļ uz phpMyAdmin,
viena iezīme jūs nevarēsiet ir radušās pirms
šādi.
Ja es eju uz kursu instruktors, Man jau bija norādīts, ka daži
un šīs lietas ir indeksi.
Bet ļaujiet man iet uz struktūru tab, protams instruktors.
Ļaujiet man uzklikšķiniet tagad indeksi un paziņojums sekojošo.
Man ir norādīts šeit, ka ir primārā atslēga
uz kolonnas sauc ID.
Tas ir diezgan sarežģīts veids, norādot cardinality
un tā tālāk, kā atsauces uz lauka lielums baitos.
Bet tagad man ir arī cits lauka, protams ID, kas ir -
Protams ID, kas tiek darīts iepriekš un unikāls, OK.
I did this one in iepriekš mums.
Tātad, kāpēc tas ir - ļaujiet man piliens tas labad diskusijas.
Ak, jūs zināt, ko es izdarīju?
OK. Tātad, agrāk, ir viens no briesmas, izmantojot GUI rīku
kā šis, kad mēs bijām Izveidojot šo pievienoties galda,
Protams instruktors galds, atceros, ka esmu norādījis
ka es gribu indeksu Šajā jomā
un indeksu par šo citā jomā.
Blakusparādība pārbaudot abas šīs kastes
vienā ekrānā ir tāds, ka phpMyAdmin Tiesa secināja, ka,
ka es gribu nevis divi atsevišķi indeksi,
ka es gribu pievienoties indeksu, kas parasti ir tikai noderīgi
vai ļoti noderīgi, ja jūs meklējot nevis viena joma
bet gan no šīm jomām.
Un tas ir iemesls, kāpēc mums bija tos savienot tur
tāpēc es samazinājās to "iemesls, kas nebija tas, ko es paredzēts.
Drīzāk, es esmu gatavojas pārtaisīt šo šeit.
Es iešu uz kursa ID
un ar vairāk es esmu tikai teiksiet pievienotu indeksu.
Un es iešu ar instruktors ID un teikt, pievienojiet indeksu.
Un tagad, ja mēs noklikšķiniet šeit novērojat mums ir trīs indeksi,
viens galvenais un kā es paredzēta vienu katram
Šo ārvalstu taustiņus.
Un es aicinu to ārvalstu, jo Protams ID šajā tabulā kartes
, uz kuru lauks, tikai, lai būtu skaidrs, citā tabulā.
Primārā atslēga aicināja ID, tabulā sauc kursi,
un tajā pašā galā uz otra.
Bet tagad, ir interesants triks un tiešām tehniku.
Es tikai gāja uz priekšu un ļaujiet man darīt nedaudz lēnāk.
Tajā pašā ekrānā, paziņojums tā saka attiecību viedokli šeit.
Es noklikšķiniet uz šo un tagad paziņojums es nokļūt darīt dažus ierobežojumus.
Tātad, viens no upsides arī
ne tikai ar konceptuāli ārvalstu atslēgas un citām tabulām
kā mēs esam tikai par ir ka, nosakot indeksu
par tiem var būt datubāze jums palīdzēt vēl vairāk
nodrošināt integritāti gada šajā jomā.
Precīzāk, es tagad var norādīt, izmantojot šo kritumu
noteikts, ka kurss ID lauks
Šajā tabulā faktiski kartes uz courses.id.
Tāpat, instruktors pasvītrojums ID plānots instructors.id.
Tagad, kāpēc tas ir noderīgs?
Nu, ievērosiet, labajā pusē labajā pusē, kas parādās tagad.
Es tagad var mācīt datu bāze, ja Henry
piemēram, kādreiz aiziet pensijā un viņa rinda pazūd
no instruktora galda kopumā tādējādi ir
svītrots, es varu ar šo kaskādes pieeju nodrošināt
ka jebkuri kursi viņš māca, ir vairs nav saistīti ar viņu.
Es varu iemācīt datu bāzi izdzēst rindas
Šajā tā saucamajā pievienotos tabulas automātiski, ja Henry vai ja viena
viņa kursu pazūd.
Tagad, kāpēc tas ir pārliecinošs?
Yeah?
[Nedzirdams Piezīme]
Jums tikai ir jādara vienu reizi un ilgākā termiņā, vai ne?
Tas ir ļoti ērti, ja veida cilvēki nāk un iet, kursi nāk
un iet, jūsu datu bāzi varētu tikai iegūt pakaišiem ar kursiem
un ar fakultāti, ka nav vairs attiecas uz datu kopu.
Un jūsu dati sāk iegūt ļoti netīrs un netīrs, un sastāvējies,
tāpēc šeit mēs varam sakārtot
un izpildīt dažus no šie ierobežojumi.
Yeah?
[Nedzirdams Piezīme]
Tā zina, kā ar to.
Tas ir ekrāns, kurā mēs norādot saikni
starp ārējo atslēgu un primārā atslēga.
Tātad visas nosaukumiem konvencijas I pieminēja
lai ātrāk ir tikai konvencijas.
Nav raksturīga nozīme.
Tas ir ekrāns kas ir tikai noderīgs
Pēc tam, kad norādīts indeksus Katrā no šīm jomām, kā mēs to darījām.
Un šī nolaižamā mums dažas lietas, piemēram
ja kurss ir izdzēsts, jūs varat faktiski novērst, ka dzēšana
no notiek, ja tur ir rinda šajā tabulā
, vienkārši sakot, ierobežošana.
Citiem vārdiem sakot, Henry nevar doties pensijā
kamēr mēs nošķirt viņu No CS51 un CS1.
Tātad, tas ir laba lieta.
Bet tas varētu izraisīt kļūdas jūsu kodu
ja jums nav paredzēt, ka, vai arī mēs varam būt kaskādi,
kaskādes līdzīgi kā, piemēram, kaskādes stila lapas
un kaskādes ūdenskritums nozīmē, ka, ja -
ja Henrijs dodas pensijā tā - līdz kļūst svītrots
tā būs viņa rinda šeit saņemt svītrots.
Nekāda darbība ir nekas vai null ir sava veida noderīgi, ja jūs veida
un vēlaties kādu vēsturisku rekordu no Henry tam mācīja CS51,
bet jūs vienkārši vēlaties, ka lauku būt null lai rindas tur
bet tas nav vairs saistīta ar viņu.
Tāpēc tie ir ļoti spēcīgs metodes, ko jūs varat
un jāizmanto, lai gan procentu īpaši
ietaupot jums no sevis.
Tāpēc ļaujiet man pieminēt Pāris gala detaļas šeit,
sastāvdaļas, ar kuru , kas varētu būt noderīgi
kā mēs plānojam datu bāzes dizains.
Jums ir arī izvēle pāri datu bāzes dzinējs
ka jūs izmantojat savu kodu.
Ja Jūs esat iepazinušies gada CS161 jūs varētu -
vai pat 61, jūs varētu vispār iepazinušies ar failu sistēmas.
Un tur ir lietas piemēram, NTFS un HFS +
un X2FS4 [fonētiskā] un 3, un tā tālāk.
Ir dažādi veidi, uzglabāt datus par galda.
Tāpat ir tur dažādi veidi, kā uzglabāt datus
datubāzē pēc noklusējuma vismaz Appliance
ar jaunāko versiju MySQL.
Mēs esam izmantojot datu bāzes dzinēju sauc, NoDB,
kas atbalsta dažas jaukas funkcijas.
Bet cits izplatīts ir arī sauc MyISAM un vēl viens
, ko var izmantot, ir atmiņa, kas nozīmē, nelieciet neko
diskā, tikai glabāt lietas atmiņā.
Par lielāko daļu jūs, iespējams, neko nepareizi tikko sākusies
ar NoDB, bet par visiem projektiem kas mēdz iesaistīt augstas likmes
ievietošanas, piemēram, piemēram, daudz ātras mežizstrādi,
simtiem lietas sekundē vai tūkstošiem lietām.
Anytime jums sīkumi daudz kas notiek
uz datu bāzē Tad šī veida
lēmumi par zemāka līmeņa sāk iesaistīties.
Pilns teksts iezīme Piemēram darbojas tikai MyISAM
tā, ka ir saistība.
Bet jūs varbūt atceraties šo, pieņemsim vismaz motivēt, kāpēc mēs rūpējamies
par NoDB jo īpaši.
Rase nosacījumi parasti attiecas uz to, ko?
Labi, tas ir mājiens uz piemēru dažus
un jūs varētu būt dzirdējuši gadus iepriekš, vai 161 vai 50
kur jums ir kaimiņiem, jums abiem tiešām patīk pienu,
viens no jums izpaužas mājās pirmo reizi atver ledusskapis nav piens,
aizveriet ledusskapis staigāt pāri ielas līdz CVS un saņem
rindā, lai nopirktu pienu.
Tikmēr, jūsu kaimiņiem nāk atpakaļ šeit.
Viņa arī patīk pienu.
Atvērt ledusskapi un realizē pienu.
Lūk, viņa pēc tam dodas uz uzglabāt, varbūt citu CVS.
Ātri uz priekšu, dažas minūtes vēlāk jūs nākt atpakaļ un tagad abi
un esat nopircis pienu.
Viens no tiem ir tagad gatavojas sabojāt, jo jums nav
piemēram, piens, ka daudz, un šī ir problēma, vai ne?
Jo jums abiem pārbaudīti stāvokli dažu mainīgo
un pieņēma lēmumu, pamatojoties par to, lai gan state
Minētā mainīgo būtībā bija procesā tiek mainīts,
visi ir tā lēni laika daudzums, kas nepieciešams,
nokļūt uz un no CVS.
Tātad, kas ir sava veida stulba real Pasaules risinājums šai problēmai?
Atstāt piezīmi, labi?
Tas ir noticis pēdējo reizi.
Vienmēr atstājiet piezīmi vai piekaramo atslēgu lieta burtiski.
Un es saku atslēga, jo ja jūs lietojat vai ņēma CS161,
atslēga ir būtiska ideja šāda veida visā pasaulē.
Tāpēc sacensību apstākļi var rasties arī šajā datubāzē pasaulē
un jūs varētu atcerēties varbūt no CS50 finansēšanai, ja jums bija 50,
tas kods, kas mēs patiesībā deva jūs puiši specifikācijā
tajā laikā, lai jaunu darbība ir ts atomu.
Ja jūs vēlētos, jo tas gadījumā, nopirkt daļu krājumu
un krājums ir daži īpaši simbols.
Mēs teicis jums izmantot kodu, piemēram, to, ka, izmantojot šo
par dublikāta galveno atjauninājumu sintakse, kas ir veidota
MySQL jūs faktiski darot vai nu ieliktņa
vai atjauninātajā pēc darot izvēlieties redzēt
ja krājums ir jau tur.
Citiem vārdiem, analogs pasaules iegādāties krājumu
Piena un ledusskapja varētu būt, pirmkārt,
Pirms iegādāties daļu Google jūs varētu vēlēties, lai izvēlētos
no datubāzes visiem akcijas Google, ka Dāvids pieder
lai redzētu, vai viņš pieder nulle vai vairāk.
Kad jūs redzat, ja viņš pieder nulle vai vairāk, jums ir
, lai pēc tam rīkojieties šādi.
Jums ir vai nu to darīt ievietot
ja viņš pieder zero "cēloni tur nav rindu David vēl,
vai arī jums ir jādara atjauninājumu ja vismaz teorētiski vēlaties
ir viena rinda uz vienu lietotāju.
Problēma ir izvēlēties ka akciju skaits
un tad atjaunināšanu vai ievietojot var pārtraukt
kāds cits citā datoru terminālu mēģina nopirkt
vai pārdot kādu no Dāvida akcijas akciju neatkarīgi
labiem mērķiem, vai kārtot gada ļaunprātīgos nolūkos.
Tas ir tāpat kā iet uz veikalu ja jūsu kaimiņiem saņem atpakaļ
un pārbauda valsts mainīgā.
Tāpēc šis sintakse laikā kas bija sava veida piemērota
par CS50, novērš, ka problēma vispār.
Un tas vienkārši dara visu, kas burvju atslēga, lai jūs,
bet tagad ar šiem veidiem projektu par šo kursu
kas, visticamāk, būs ir saistīti ar sarežģītākām datu kopas,
Jūs nevarat sasniegt vienmēr tas Atomitāte.
Viss notiek uzreiz vai nemaz
bez pārtraukuma tik eleganti.
Un tā MySQL, cits datu bāzes dzinējs,
atbalsta lietas, ko sauc slēdzenes,
, kurā jūs varat teikt lock tabula tā, ka tikai viens treat
un parasti ir tikai viens lietotājs var pieskarties to jebkurā brīdī
lasīt, ne rakstīt, un tad jūs varat atslēgt to.
Tas ir, piemēram, no vienas MySQL pašu atsauces,
kur, ja jums ir, piemēram, banku vērā, ka jūs mēģināt
atskaitīt naudu no un pēc tam pievienot naudu.
Jūs varētu vēlēties, lai pārliecinieties, ka gan
no šīm lietām notikt kopā
tāpēc, ka nav matemātiskās kļūdas
un neviens zaudējumi nauda, ​​kaut kā.
Problēma ar slēdzenēm gan datu bāzē ir
tas parasti nozīmē visa tabula ir bloķēta,
kas nozīmē, ja jums ir simts cilvēki cenšas
veikt darījumus ar savu banku tiešsaistē, tajā pašā apmērā
gada laikā tikai viena no tos var iet laikā.
Kas ir stulba, jo īpaši serveros mūsdienās
ka ir astoņi kursu, 16 Protams, ir milzīga summa
atmiņas, nav iemesla serializēja visiem
Jūsu darījumiem, ja tie klienti ir tikai gatavojas
mijiedarboties ar savām rindām.
Tāpēc NoDB ļauj jums darīt lietas vairāk viedo
un parasti tas tiks pieeju, jūs uzņemt kodu,
kā jūs izmantojat kaut ko sauc par darījumu.
Un jūs to izdarītu parasti PHP kodu,
Ruby kods, Python, neatkarīgi.
Bet SQL kodu, kas ir galu galā izmanto tas,
parasti.
Sākt darījumu tad jūs norādīt divus vai vairākus vaicājumus
ka jūs vēlaties, lai izpildīt vispār
bez pārtraukuma vai nav vispār.
Tur pat var būt daži atlasīt paziņojumus
vai daži dzēš vai atjauninājumus.
Bet jauka lieta ir tas, ka datubāze būs pietiekami gudrs
lai pārliecinātos, ka tas būs tikai bloķētu rindas viņi faktiski
iesaistīti šajā jaunumiem vai arī izvēlas vai dzēš.
Tātad, ja jums ir tūkstošiem rindu un jūs tikai pieskaras trīs
no tiem, tikai to, ka apakšgrupa tabulas tiks bloķēta
kas nozīmē, ka šie citi 99 klienti var pieskarties savas rindas
bez serializēja un palēnina jums.
Tajā pašā laikā, tas ir jaukākais aspekts darījumiem.
Tie ir darījumi ar sajust, piemēram, 161 par failu sistēmu,
viņi darījumu
kas nozīmē, ka jūs varat roll tos atpakaļ, varat atsaukt tos.
Tas ir kā komanda vai kontrolēt F no datu bāzēm.
Ja jūs atklājat daļa ceļu cauri visiem
Jūsu dažādu datu operācijas, šaut, kaut kas notiek nepareizi.
Jūs burtiski izpildīt atšķirīgs SQL vaicājumu atritināt
un visas šīs tendences - visi no apgalvojumiem jūs izpildītajiem
pēc sakot sākums Darījums pazūd
tā, it kā viņi nekad nav noticis,
kas ir pārsteidzoši spēcīgs lieta.
Un šīs ir veidi lietas, protams, 50 mēs kārtot
no slaucīt zem paklāja, un jūs vienkārši veida pieņemt,
ka viss būs labi.
Bet tad, kad jūs sākat domāt par reāliem projektiem
un reālā lietotājiem un integritāti jūsu datu bāzē,
tie ir veidi Dizaina lēmumu
, kas būs svarīgs.