>> Allt í lagi.
Svo án frekari fjaðrafok, SQL, Structured Query Language.
Svo, þú notaðir líklega þetta á kosti í CS50, kannski í CS165,
kannski í eigin persónuleg verkefni.
Og hvað þýðir SQL láta þig gera, í SQL Server almennt?
Já?
[Inaudible Athugasemd]
OK, það var mjög öruggur vegur af orðatiltæki það.
Já. Svo það gerir þér að geyma gögn
og fleiri mikilvægur leyfa þú fyrirspurn fyrir gögn.
Og þetta er skref fram á við
frá því að nota eitthvað einfaldara eins og CSV, hægri.
Kommu aðskilin breytur.
Svipuð gildi.
Álíka láta þig spara upplýsingar ein röð
í textaskrá.
En hvað er hæðir af CSV skrá til að geyma gögn,
jafnvel þó að þú í raun fá raðir og dálka af því?
Já.
>> Þú ert ekki 'hafa sömu stofnun
skilvirkni [inaudible].
>> Þú ert ekki það sama skipulag skilvirkni.
Hvað meinarðu?
>> Jæja, eins og [inaudible] hafa eins aðal [inaudible].
>> OK. Já.
>> Það er Venslagagnagrunnur þú getur haft marga gagnagrunna
tengd við hvert annað í mjög sérstökum hætti.
>> OK. Gott.
>> Það er [inaudible] að setja CSV.
>> Og láta mig klip smá hugtakanotkun.
Svo margar töflur innan gagnagrunni, viss,
og það gengur lengra þú getur gert með bara einn CSV.
En í raun er takmörkun með CSV Ég myndi halda því fram er
að óhagkvæmni af þessu öllu.
Það er mjög auðvelt að skipulag.
En ef þú vilt gera fyrirspurn, hvað er í gangi tími
allir velja fyrirspurn á CSV skrá?
Ég meina það er stór gamla [inaudible], rétt, þvi í versta tilfelli,
Þeir stóðu á mjög botn.
Jafnvel ef þú hefðir raðað öllu CSV skrá, ef þú veist ekki
að upfront, vel, þú ert enn að fara að hafa
til að leita í heild hlutur.
Svo, meðal hluti við erum að fara að fá
frá því að nota raunveruleg gagnagrunni með tungumál
eins SQL er að við getum fyrirspurn það og við getum í fyrirfram
og gagnasafn hönnuðir tilgreina hvað eru reitir
sem voru líklega að fara að hafa Spurningar um svo að fólk
á MySQL eða Microsoft eða Oracle,
hver hefur gert gagnagrunninn þú ert að nota getur gert allt
af vinnusemi vangaveltur út, OK,
gefið milljón af þessum IDS.
Hvernig getum við skipulag - þá út í minni?
Einhvers konar tré uppbygging kannski,
þannig að þegar þú gerir reyndar keyrt Veldu,
það er eitthvað sem er lógaritmískum eða lógaritmískum
af lógaritmískum í tíma frekar en í raun og veru devolving
í eitthvað línuleg.
Þannig að við fengum mikið af árangur sem leið.
Og við getum einnig geymt mikið meira gögn fleiri fúslega þvi SQL
Server er yfirleitt geymd í RAM, jafnvel þótt hlutar
af það gæti verið geymd á diski og þú veist líklega við nú
sem RAM er yfirleitt hraðar en diskur,
svo er það gott.
Og við getum einnig séð concurrency miklu betra.
Ef þú hefur tekið 165 eða 161, þú veist að ef tvær manneskjur reyna
að gera það sama í einu á kerfi,
slæmur hlutur getur yfirleitt gerst.
Svo meðal annarra eiginleika sem við hægt að fá ef við hönnun tables
á réttan hátt er betri stuðning og öryggi
þegar það kemur að concurrency.
Svo, tveir í tveimur hlutum
í heiminum því að nota sama website, ef þeir báðir reyna
til að kaupa eitthvað á sama tími, sem til þess er ekki að fara
til að fara í samtímis.
Einhvern veginn að þeir myndu vera serialized af öðrum en okkar eigin -
einhver annar en við sjálf.
Gagnagrunnurinn mun gera það fyrir okkur.
Svo þegar það er einfaldasta formi,
SQL leyfir okkur fyrirspurn Venslagagnagrunnur.
A Venslagagnagrunnur er eitt sem hefur einn
eða fleiri töflur í því venjulega.
Og ef þetta er lítið framandi,
þú getur í raun bara að hugsa um þetta sem Excel eða tölur
eða Google töflureiknar.
Það hefur bara raðir og dálka og yfirleitt efst á hverri
þessara lína hefur nafn fyrir það.
Þannig að þetta gæti verið ID dálki nafn dálki,
heimilisfang dálki og svo framvegis.
Og þá er hægt að hafa margar svo borðum ef þú vilt
að byrja að leggja út mismunandi gerðir af gögnum.
En þú getur muna að minnsta kosti frá CS50 að við reyndum
að gefa þér GUI-undirstaða tól [inaudible]
til að stjórna þinn gagnasafn.
Það var kallað phpMyAdmin.
Svo það er bara tilviljun að það var skrifað í PHP, virkilega,
en það var bara a vefur-undirstaða framan enda við gagnagrunn.
Og í gegnum mismunandi flipa og tengla getur þú byrjað
að stilla upp gagnagrunn fyrir sjálfan þig.
En gott tól til að byrja að fá a lítill fleiri þægilegur
með er einnig stjórn-lína viðskiptavinur.
Svo ef þú notar CS50 Tæki eða bara nota einhverjar fjölvi PC
sem hefur stjórn lína MySQL viðskiptavinur, þú getur líka gert það svoleiðis
af gamla skólanum, eins og þetta.
Sem innskot í MySQL verkefninu, amk opinn uppspretta útgáfa
af það er nú kallað MariaDB fyrir ýmsar ástæður sem þú getur lesið
upp á Wikipedia en það er the sami hugbúnaður,
það er sama setningafræði og svo framvegis,
laglegur mikill the sami kóða stöð.
Og svo þegar ég er á þessu hvetja Ég get nú samskipti
með gagnagrunninum mínum miklu meira handvirkt.
Svo dæmi um, láta mig fara á undan
og bara opna A endastöðvar.
Ég varð að vera með CS50 Tæki en þú getur gert þetta
á flestum hvaða kerfi í sem þú átt rétt
hugbúnaður setja í embætti.
Og ég ætla að gera mysql-u fyrir notendanafninu John Harvard
á þessari tilteknu kerfi,-p um lykilorð sem ég mun slá
í aðeins meira tryggilega við hitting á Enter.
Nú er ég beðin.
Ég ætla að slá Crimson í CS50 Tæki
og nú sé ég í raun að sama skjá.
En það er skipanir nú að við getum byrjað að skrifa
eins sýna gagnagrunna og það er að fara að sýna mér allt
gagnagrunna sem ég hef nú þegar búið í kerfinu,
laglegur mikill the sami listi þú vildi sjá í phpMyAdmin.
There 'a par af öðrum eins upplýsingar stefið og próf,
sem ef þú pota í kring í CS50 Appliance, fela við nokkur
þessara lægra stigi borðum
en þeir hafa verið það allan þennan tíma.
MySQL hefur í raun lágu stigi eignir eins og notendanöfn
og lykilorð fyrir gagnagrunninum sjálft, ekki fyrir umsókn þína
sem þú gætir verið í gangi á ofan á það.
Svo fyrirfram, í dag, ég búin nokkra gagnagrunna,
einn sem er kallaður courses50.
Stuðlar eru sumir af þú hefur notað CS50 auðvitað versla tól,
sem er stór tengi fyrir Kennsluskrá dómritara er.
Og þetta er í raun ágætur Gagnasett að tala um 'málstað
einn, við erum svona allt augljóslega þekki námskeið
og leiðbeinendur og fundur og allur tegund
af venjulegum hlutum af háskóla,
en það er líka got sumir áhugaverð tækifæri
fyrir hönnun.
Þannig að við héldum að við myndum nota hugmyndin af kennsluskrá
og versla tól sem er dæmi allan dag til að raða
rammanum sumir af the hönnun ákvarðanir sem við verðum að gera.
Svo skulum byrja þar.
Segjum sem svo að ég vildi í raun að tákna ofur einfaldasta
Auðvitað versla verkfæri.
Og einfaldasta heimurinn Ég get ímyndað mér og einn er
þar sem það eru námskeið og það eru leiðbeinendur.
Og við skulum gera ráð fyrir að sakir umræðu
að sérhver sjálfsögðu hefur að minnsta kosti nafn.
Þannig að við skulum byrja að skissa þetta út.
Ég ætla að nota phpMyAdmin bara til hægðarauka,
þannig að við þurfum ekki að slá út öllum fyrirspurnum handvirkt.
En hér er ég í mínum courses50 gagnasafn.
Ef ókunnur með þetta, verður það vera mjög auðvelt þegar þú kafa
í eigin verkefni ef þú vilt nota það.
Ég ætla að búa til borð sem heitir Námskeið
og ég get bara hugsa af einu sviði
fyrir nú, nafn námskeiðs.
Ég ætla að fara á undan og segja gefa mér einn dálk.
Nú, eins og þú manst að þú færð viðmót sem er dálítið
eins og þetta.
Og annar kosti hreinskilnislega af phpMyAdmin er að það raða
sjálf-leiðbeina og að gegnum dropdowns, getur þú flokkað
af að sjá hvað hægt er þín hönnun ákvarðanir eru.
Þannig að ég ætla að gefa hvert sjálfsögðu nafn.
Það er nafnið á þessum dálki.
Og hvernig óður í gögn gerð þess?
Flest ykkar ættu að vita á kosti sumum af þessum tegundum gagna
frá fyrri reynslu.
Hvað er viðeigandi fyrir heiti námskeiðs?
Sharon?
>> Varchar.
>> OK, varchar sem er Variable Char.
Og hvað gerir það þýtt fleiri tæknilega?
[Inaudible Athugasemd]
OK. Svo það er strengur.
Og var þáttur af felur það hvað?
Breytu. En hvað þýðir það?
Já?
[Inaudible Athugasemd]
Nákvæmlega. Svo er það breytilegt fjölda stafa
í strengnum upp að einhverju hámarki.
Svo hér er fyrsta okkar hönnun ákvörðun.
Við höfum í raun að ákveða hversu mörg bæti hámarks
að úthluta til hvers slíkt band.
Almennt talað, þú vilt konar ekki að gera það of lítið,
ekki gera það of stór Þvi augljóst
Ef of lítið þú ert bara fara að byrja truncating gögn
og þú munt missa upplýsingar.
Og ef það er of stór, þú ert bara konar segja gagnagrunninn
að búast við og að bjartsýni fyrir fleiri gögn
en það gæti reyndar alltaf fá.
Svo er það sanngjarnt tilfinning tala um nafn á námskeiði?
60? OK, svo 60.
Það virðist nokkuð sanngjarnt
svo lengi er að það er engin undantekningar á því.
Það er í raun engin harður, fljótur reglu.
Til að vera heiðarlegur, að sögulegar ástæður mikið
af fólk velur 255 Þvi í mörg ár sem var eins konar
sjálfgefna hámarki með 8 bœti - 8 bitar eins og gegn þínu.
Ég myndi meira [inaudible] gætu notað vald 2
en það er tegund af óviðkomandi.
Svo við getum farið með 60.
Það virðist sanngjarnt svo lengi
eins og við á endanum sé ekki eftir því Þvi það er efri bundið.
Nú býst hið gagnstæða ákvörðunin hafði verið tekin,
ekki breytilegir stafir en bara bleikjan sviði.
Svo ólíkt C og C + +, bleikju þýðir ekki eina bleikju
og gagnagrunna sem yfirleitt þýðir föst tala
stafa í streng.
Hvað væri kosti og / eða hæðir af mínum velja 60
fyrir bleikju sviði, í stað þess að varchar?
Þetta er einmitt í fyrsta tagi ákvörðun sem þú þarft að gera
þegar eftirlitsmaður [hljóðrétt] út af verkefni með samstarfsaðilum.
Já, Sharon aftur.
[Inaudible Athugasemd]
Gott. Þannig að ef nafnið er færri
en 60 þá þú ert að sóa hvað sem Delta er
á milli 60 og þess Raunveruleg lengd.
Þannig að bara finnst eyðslusamur, fleiri bæti en þú þarft.
En hvers vegna er það til?
Víst er það einhver kosti.
Já?
[Inaudible Athugasemd]
Viss. Svo stundum gæti vita fasta númerið
af stöfum eins 10 stafi símanúmeri til dæmis.
En hver blíðuhót, eins hvers vegna ekki bara segja 11 samt
eða hvers vegna ekki að segja 60 engu að síður með varchar?
Hvaða kostur fáum við með því að þekkja og hanna
fyrir ákveðinn fjölda af stöfum?
[Inaudible Athugasemd]
Þú ert á réttri leið.
Svo það er hagræðingu en það er í raun um - já?
[Inaudible Athugasemd]
OK. Gott. Áhersla skulum á þeirri seinni hluti.
Svo flokkun.
Svo kemur í ljós ef þú vita fyrirfram að allt
sviðum eru að fara að vera 60 stafir,
þú getur raunverulega hugsa um þetta dálki í Excel Gagnasafn
sem hafa mjög beinn, vinstri réttlætanlegt
og hægri réttlætanlegt brúnir
því sérhver dálkur er 60 stafir á breidd.
Það þýðir að þetta band er 60 stafir burtu
frá þessum streng, 60 stafir í burtu frá þessu einn
og þetta og þetta.
Svo bara eins og til baka þegar þú lært C, þú hefðir handahófi aðgang
í heimi fylki, Sama hugmynd hér.
Ef dálkurinn er fulltrúa nota aðeins fasta Sérstafir lengd,
þú getur í raun vísitölu handahófi til 60 eða 120 eða 180
og þú getur fengið á sig strengir miklu hraðar.
Þá ef í stað, í dálkinum hafði beinn vinstri brún svo að segja
en mjög harðgerður hægri brún aftur til súlunnar
vegna þess að þú gætir hafa 10 stafi,
15 stafir, 5 stafir.
Þannig að þetta er of tradeoff.
Og stundum aðeins í gegnum réttarhöld og villa
og tilraunir er hægt að reikna
hvað virkilega rétti kalla er en þetta eru þær tegundir
af spurningum sem skal fara
í gegnum huga þinn og / eða töflur þegar það kemur tími
að hanna gagnagrunninn.
Svo, ekki endilega rétt svara en þú ættir
að minnsta kosti hafa sumir setningu eða tvær í huga
að taka afrit af hvað ákvörðun sem þú gerir.
Allt í lagi.
Svo skulum halda hreyfast í leiðbeiningunum hér
sem eru UI phpMyAdmin er.
Svo, sjálfgefið gildi fyrir nafn, ætti ég að tilgreina
að það ætti að vera hafa sjálfgefið gildi null?
Hvað finnst þér?
Getur auðvitað hafa núll nafn?
Bara finnst undarlegt, ekki satt?
Ég get ekki hugsað um hvaða ónefndum námskeið í Harvard.
Og kannski er það einhver hylja horn tilfelli
þar sem auðvitað er úthlutað einstakri tölu
og prófessorinn hefur ekki valið nafn fyrir það en -
Ég meina, að Heck með það,
eins skulum ekki einu sinni nennir að styðja það.
Ég myndi segja í þágu af fallegu hreinu gagnagrunni,
skulum tilgreina að þú getur ekki með sjálfgefna gildið null.
Að öðrum kosti, getum við gert eitthvað eins og titils sjálfsögðu
sem er ekki ólíkt með Mac OS og Windows gera
þegar þú býrð til möppunni til dæmis,
en það sem gerir smá meira vit
þannig að mönnum sjá eitthvað.
Við erum að tala um bak-endir gagnasafn væntanlega
fyrir kennsluskrá.
Þannig að ég í raun ekki einu sinni eins og the hugmynd af því að gefa henni
í untitled nöfn námskeiðs
þar sem það er í raun ekki fara til að hjálpa þeim.
Svo skulum láta þetta sem enginn, sem þýðir að þegar þú setur
í þessum gagnagrunni, þarftu að gefa hverjum auðvitað nafn
sem líður svolítið hreinni mér.
Allt í lagi.
Svo hreyfast frekar samanburði.
Þetta hefur bara að gera með stafatöflum og whatnot
ef þú hefur einhvern tíma séð nefnir sænsku
í phpMyAdmin sem er Þvi fólki
sem skrifaði phpMyAdmin voru sænsku.
Er að PHP eða er það MySQL?
Einn af tveimur, ég gleymdi offhand.
En það er af sögulegum ástæðum
en þú getur tjáð á hverjum staf í ensku
að þú gætir með sænsku svo er það að mestu leyti a non-tölublað.
The CS50 Appliance er þó notaður - stilltur til að nota UTF-8,
þannig að almennt ætti ekki skjóta upp fyrir þig.
Eiginleika.
Svo enginn af þessir ert raunverulega skiptir máli hér.
Ég sé tvöfaldur, óundirritaður, Óundirritaður zerofill,
og á uppfærslu núverandi timestamp.
Því sviði gildir aðeins fyrir sumir tölugildi sviði
eða sumir tími sviðum.
Þannig að við munum sleppa yfir sem alveg.
Null. Getur þessi reitur verið tómt?
Svo neitun. Við höfum nú þegar þessi tegund af samtölum.
Þannig að við viljum ekki sjálfgefið gildi.
Við viljum ekki það að vera núll.
Hvað um vísitölu?
Það er fjórir kostir hér.
Hvað þýðir það ef við tilgreint
að þessi röð er að fara að vera aðal lykill?
Hugsa til baka til CS50 eða CS165 ef þú hefur tekið hana.
[Inaudible Athugasemd]
Nákvæmlega. Svo aðal lykill samkvæmt skilgreiningu er svæðið
sem auðkennir Hver lína í töflunni.
Og þú getur treyst á það að gera sem einstakt auðkenni.
Svo, hvað þýðir það þá bara að vera einstök?
Jæja, svona hefur þessi tvö svoleiðis
af undir þýðingu undir hetta.
En almennt, aðal lykill er konar samning þú gerir
við gagnagrunn hlutur.
Þegar ég geri fyrirspurnir leita að sjálfsögðu,
Ég ætla að nota þetta tilteknu sviði.
Og við munum koma aftur til hvers vegna við gætum átt tvo
slíkt val hér, aðal-eða einstök.
Unique segir bara, þetta sviði er að fara að vera einstakt
en ég er ekki alveg að gera eitthvað konar munnleg skuldbindingu hér
að nota þessi sviði að gera leit minni
af ástæðum sem við munum sjá í aðeins augnablik.
Ef við að skilgreina stað vísitölu, hvað þýðir það að tilgreina
að sviði hefur vísitölu á það?
Já?
[Inaudible Athugasemd]
Nákvæmlega. Það hefur verið bjartsýni fyrir fyrirspurnina.
Svo þú - gagnagrunnur miðlara, Oracle, MySQL, hvað,
mun almennt vinna galdur hennar bak við tjöldin þegar þú smellir
þessi valkostur og síðan smellt Vista og það mun byggja
upp venjulega tré uppbyggingu, B-tré ef þú hefur séð
eða heyrt af sem er mjög stutt-útlit tré
sem gefur þér mjög gott lógaritmískum eiginleikum
þegar leitað er á gögnum.
Ef þú tilgreinir ekki Index á sviði, hvað er að gerast
að vera í gangi tími leita
fyrir handahófskennt [Hljóðrétt] Auðvitað nafn?
Hvað er það?
[Inaudible Athugasemd]
Ó, [inaudible], línuleg, ekki satt?
Ef það það er engar hagræðingar veitt í gagnagrunn
og þú hefur ekki hugsað gagnagrunninum hvers konar
af gögnum til að búast.
Besta sem þú getur gert er að stöðva allt þegar þú ert að leita
fyrir nokkrum gildi, einkum ef það gæti
í raun vera afrit.
Fullur-texti á meðan, við munum veifa höndum okkar fyrir nú.
En almennt, þetta er tegund af vísitölu sem leyfir þér
til bjartsýni fyrir leitarorð leitar á sviði.
Þannig að þetta gæti verið góður frambjóðandi
fyrir eins og námskeiðslýsingu þar sem þú gætir hafa a par
liða og þú gætir vil gera undirstrengur leiki.
Fullur-texti mun almennt láta þú gerir það nokkuð vel.
AI, þetta er hræðilegt konar útskýring en ef við sveima
yfir það sem þú munt sjá Auto vöxtur.
Ekki við bæði hér en Auto vöxtur er gagnlegt
fyrir eins sviði int vegna þess gagnagrunnur mun gæta
af því ferli plús plusing það í hvert skipti sem þú gera óákveðinn greinir innleggi.
Svo að jafnvel ef tvær manneskjur bókstaflega smellir á Senda
á sama tíma og reyna til að búa til röð á einhvern hátt
í gagnagrunninum, einn af þá mun fá númer I,
hitt mun fá fjöldi I auk 1.
Þú þarft ekki að hafa áhyggjur
um tvær stærðir sem úthlutað samur ef þú værir
til að gera þetta sjálfur í kóða.
Allt í lagi.
Svo einsog þar við höfum fengið nafnið að vera.
Svo skulum smella á Vista.
Er þetta góð hönnun fyrir gagnagrunni töflunni?
Og eins til hliðar ef Rusty á SQL eða þú raða
þess bara alltaf snúa að blindu auga til hvað var að gerast,
Ég hefði getað slegið einmitt þessi -
þessir þrír línurnar sem svart og hvítt hvetja
í stjórn lína viðskiptavinur eða ég hefði getað gert
að í kóðanum kerfisbundið.
Svo allt phpMyAdmin er að gera fyrir mig, er bara að safna mér fyrirhöfn
að muna stundum setningafræði og slá út fyrir
eins leiðinlegur skipunum.
Allt í lagi.
Þannig að þetta er ekki líða eins og Besta hönnun, einn akur borð.
Nú við gætum haft hlutir eins og prófessora
og staðsetningar og lýsingar.
En jafnvel þá, með því að nota nafn aðeins
að bera kennsl á námskeið ekki finnst hugsjón.
Hvað almennt hafa við gert í fortíðinni
ef þú hefur notað gagnagrunna að einstaklega raðir?
Ekki nota varchars venjulega.
Já?
[Inaudible Athugasemd]
Já. Svo yfirleitt námskeið ID.
Svo er algengasta nálgast hér sérstaklega
þegar þú notar ramma er í raun bara
til að nota númer eins heiltala.
Svo láta mig fara á undan og gera þetta.
Og við getum gert þetta í nokkrar leiðir, en taka eftir ef ég súmma
í á the botn hér.
Ég ætla að segja bæta við einum dálka í lok töflunnar,
yfirleitt bara fyrir sjón þægindi sem þú setur auðkenni
í upphafi í töflunni jafnvel þótt það hafi engin alvöru
hagnýtur áhrif.
Þannig að ég ætla að segja bæta við einum dálka
í upphafi í töflunni.
Ég ætla að smella Go, sem gefur mér aftur þessa UI hér.
Skulum kalla þetta skilríki.
Ef við höldum að við erum að fara að hafa ekki meira gert 4 milljónir námskeið
sviði int er fínn.
Við gætum jafnvel minnka hana niður
en rúm er ódýr svo hver raunverulega annt.
En, við erum að reyna að skrifa Facebook nú,
gæti ekki verið slæmt að sjá fyrir stóra ints
sem myndi gefa okkur 64-bita ints
en þá sem þú ert bókstaflega tvöföldun á fjölda bita
að þú ert að nota, svo lítil tradeoff
en eitthvað til að íhuga.
Nú, þetta er ruglingslegt Legacy hlutur.
Þú gætir muna frá því að nota MySQL
að hvenær sem þú lýsa int sviði sem þú munt oft sjá fjölda
við hliðina á henni eins og númer 10.
Það hefur ekkert að gera með stærð fjölda
eða fjölda bita.
Sem hefur að gera með fjölda stafa sem eru notaðar
að sjónrænt sýna að Int sviði
þegar a umferðamiðstöð gluggi.
Svo við getum séð það í smá stund.
Svo, verið ekki afvegaleiða með því að slá númer
þar jafnvel þó að það er raun að spyrja okkur
fyrir einn hér.
Hérna, ég er að fara að fara á undan og segja óundirritaður.
Það er engin ástæða til úrgangs allar neikvæðar tölur okkar
þar sem gagnagrunnur er almennt að fara
að gera ráð fyrir jákvæð gildi eða null.
The ID ákveðið ætti ekki að vera núll.
Og hvað finnst þér um vísitala fyrir þessu ID sviði?
Skulum gera það fyrst og fremst.
Svo, hvað ef, þótt, eins og ég get bara hugsa um einn CS164 sjálfsögðu
við Harvard og aðeins einn CS50 námskeið í Harvard
og það er nokkuð mikið satt í heild
að það er kannski undantekningar [Inaudible] bæði annir
eða eitthvað undarlegt eins og þessi.
En meira í grundvallaratriðum, hvers vegna er það betra
að nota tölugildi óaðskiljanlegur ID til einstaklega þekkja námskeið frekar
en bara einstakt band?
Já?
[Inaudible Athugasemd]
OK, áhugavert.
Þannig að ef við hefðum svoleiðis kross-skráð námskeið.
Svo er það gott dæmi.
Ég er ekki viss um að ég myndi leysa að þó
með því að gefa þeim sömu Kennitölu ef það er
þar sem þú varst að fara með það.
Nei? OK. En ákveðið horn mál að íhuga.
Ef það er tegund af - við þurfum einhvers konar
af aliasing hugsanlega.
[Inaudible Athugasemd]
Viss.
[Inaudible Athugasemd]
Það er gott dæmi.
Nafnið gæti breyst með tími, algerlega sanngjarnt.
Hvað annað?
[Inaudible Athugasemd]
Því miður, segja aftur.
[Inaudible Athugasemd]
Já, einmitt.
Svo í raun, það er alvöru clincher er
að nota 32-bita int er líklega að fara að vera hraðari
en einhverju breyta lengd bleikju sviði.
Í fyrra tilvikinu, getur bókstaflega passa í skrána,
svo ekki sé minnst mikið minni minni fótspor.
Í síðara tilvikinu, ætlar þú að fara að þurfa að gera úrræði [hljóðrétt]
til band samanburð sem í sig með línulega
í stærð sem band hugsanlega.
Svo, það er bara gott hagræðingu,
og einkum það er að fara
að láta okkur gera það sem kallast Tengja skilvirkari
á aðeins augnablik.
Svo skulum gera það.
Við munum tilgreina að þetta er fyrst og fremst
því ég er ekki sérstaklega vilja til að kæra eða hugsa
um hvað tala er af námskeiðinu.
Láta þá taka á hvað gildi sem þeir vilja.
Ég ætla að segja Auto vöxtur svo ég geti útvista því atriði.
Eins og í hliðar og þú gætir vita að Harvard
amk ekki hafa einstakt tölur fyrir námskeiðum.
Ég hef enga recollection hvað þetta námskeið er.
Ég veit að CS50 er verslun númer er 4949,
alveg handahófskennt.
En það er undarlegt horn tilvikum í að jafnvel
í registrarial sorphaugur af kennsluskrá gögn,
stundum námskeið, gamlar námskeið hafa a tala eins og 4.
En tæknilega að sviði er char sviði
sem einfaldlega byrjar með 0004.
Svo hér líka, þú þarft að vera varkár óður greina
milli hlutina eins og Kennsluskrá númer
sem gæti fengið manneskju hugtakið fasta lengd, 0004,
og þú ættir ekki að geyma sem til dæmis f ints.
Þannig sviði að að geyma annars staðar.
Svo í Harvard, ef við vorum raun að gera námskeið
innkaup tól, það er sennilega ekki fullnægjandi
til fjölda námskeiða með aðeins 1, 2, 3, 4.
Við erum líklega að fara að hafa
að hafa öðru sviði kallað verslun númer,
sem er einnig ætlað að vera einstakt Byggt
á mönnum samninga hér en það er ekki besti kosturinn
fyrir einstakt auðkenni vegna það gæti verið breytilegri lengd.
Það gæti ekki verið fjórir stafir, það gæti verið fimm.
Í raun held ég nokkrar árum þeir flytja
málstað fimm stafir "Það voru meira en 999 námskeið
í heild eða eitthvað eins og að, eða 9.999 námskeið.
Svo, það gæti verið dæmi þar sem svæðið er ekki aðal
en það ætti að vera einstakt.
Og netfang er annað.
Þú vilt kannski að það að vera einstakt
en ekki endilega aðal lykill þinn.
Allt í lagi.
Svo láta mig Bang út aðra Tafla miklu hraðar en þetta eina.
Þannig að ég ætla að kalla þetta Einn Leiðbeinendur og ég ætla
til að gefa þetta upp á samtals fjöldi dálka tveimur.
Ég ætla að læra minn lexía frá síðasta sinn.
Ég ætla að hringja fyrsta dálki ID.
Ég ætla að hringja í Annar dálkur Nafn.
Ég ætla líka að fara að gera varchar.
Ég ætla að gera ráð ekki prófessor hefur nafn lengur
en 60 stafir, þó Nú gæti þetta verið að þrýsta það
með sumir lengi nöfn, sérstök fólk með Skírnarnafn.
Það er allt í lagi í dag.
Svo skulum fletta hérna.
Skulum gera þetta án undirritunar aftur.
Skulum gera þetta aðal.
Og við munum leyfa Afrit nöfn
ef það er tveir John Smith eða eitthvað svoleiðis.
Og nú höfum við tvær töflur.
Svo nú er þetta bidur spurning hvernig get ég tengt
í stundarkennari við námskeiðið?
Mér líður eins og ég konar fékk á undan mér
því ef kennari kennir námskeið,
Fyrsta eðlishvöt mín myndi í raun að vera að fara til baka
til námskeið átta sig á, þetta var ekki góð hugmynd.
Leyfðu mér að bæta í raun einn dálk í lok töflunnar,
smelltu fara og ég ætla kalla þetta kennara.
Og ég ætla að gera þetta varchar og ég ætla að gera þetta 60.
Og kannski ég leyfi það null nú
ef að námið er ekki verið óundirritaður í kennari
sem stundum gerist áður tíma byrjar og smellir á Vista.
Hver af þessum hönnun gera þú vilja?
Fyrsta þar sem við höfum Tafla Aðskilja kennari er
eða annað þar sem við bara bæta við reit á námskeiðið?
Svo það er náið tengjast stundarkennari við auðvitað.
[Inaudible Athugasemd]
OK. Gott. En láta mig ýta aftur.
Það er bara svo einfalt eins og ég get réttlátur tegund í nafni viðkomandi
í þessari töflu, eins og vafalaust sem hefur einhverja gildi eða -?
[Inaudible Athugasemd]
Allt í lagi.
Jæja, láttu mig vera erfitt hérna.
Svo láta mig segja að þetta námskeið er CS51
og ég veit að það er kennt þessu ári með tvær manneskjur.
Svo, Henry Leitner og Jesse Tov en -
þannig að ég ætla bara að setja kommu milli, hægri.
Ég er virkilega góð í CSV frá fyrra.
[Inaudible Athugasemd]
Einmitt, ekki satt.
Eins fljótt og þú grípa að eitthvað eins og þetta,
sem gæti fundið sanngjarnt og þú might feel
eins og þetta er góður klár.
Ég er tegund af láni einn hugmynd sem er að vinna vel,
láni ný hugmynd og konar sameina þær.
Þú ert góður af algerlega sigra að benda á að nota gagnagrunninn
Í fyrsta lagi af því að Ef eitt af þeim gildum
að nota það er hraðari leit vegna hinna ýmsu vísitölur
og töflur sem geta að byggja upp fyrir þig
af gagnagrunninum vél sjálft.
Nú, ef þú vilt leita fyrir alla námskeið
að Jesse kennir, nú þú hefur að gera undirstrengur passa á alla
af leiðbeinandinn sviðum,
sem í raun þýðir línulega leita aftur því þú ert
að finna þessi mörk sett af þremur stöfum hvar
í leiðbeinendahlutverkið sviði undan
innan kannski fylgt með kommu.
Svo þetta örugglega ekki Bode vel.
Svo láta mig fara aftur að borðinu.
Leyfðu mér að fara á undan til námskeið, losa það.
Ég ætla bara að fara undan og sleppa því sviði.
Og ef þú vilt að gera þetta með höndunum,
setningafræði er ALTER TAFLA námskeið DROP kennari.
Svo skulum við fara á undan og segja já við því.
Og fara aftur í þetta fyrr hugmynd
þar sem ég hef sérstakt Tafla fyrir kennara.
En nú líður þetta aðeins eins og ég get sett námskeið
í töflunni Námskeiðið er og kennari
í töflunni leiðbeinanda með kennslusnúru, en ég einhvern veginn þarf að tengja þetta tvennt saman.
Og hvernig myndir þú leggjum við til að gera það?
[Inaudible Athugasemd]
Gott. Svo skulum gera það.
Og þú getur hringt í borð í orði neinu.
Ég ætla að vísvitandi kalla það hvað mikið
af ramma myndi kalla það, meðal þeirra,
Laravel sem þú munt sjá í bita.
Ég ætla að kalla það auðvitað undirstrika kennari.
Using eintölu í þessu tilfelli fyrir hvert orð
og alla lágstöfum aftur, og einnig með the -
þá stafrófsröð raðað frá vinstri til hægri.
Þetta er algerlega handahófskennt en það hefur tilhneigingu til að vera venju
í fullt af þessum ramma í PHP á öðrum tungumálum.
Hversu margir dálkar þarf ég þetta það sem við köllum ganga borð,
að ganga tvær aðrar töflur saman?
Þrír dálkar?
Hver einn - hvað myndu þeir vera?
[Inaudible Athugasemd]
OK. Gott. Sem virkar.
Og við gátum tæknilega skera horn hér en mikið
af ramma í lagi myndi samt gefa jafnvel Þessar raðir
einstakt auðkenni jafnvel þó merkingu röðinni
að við í raun sama um eða dálkarnir sem við í raun sama
um eru, tveimur síðastnefndu það sem þú sagðir, að sjálfsögðu ID
og kennari ID.
Svo skulum gera þetta.
Ég kalla þetta röð bara ID, bara eins og við gerðum áður.
En þetta eina sem ég ætla að hringja ID námskeið.
Þetta eina sem ég ætla að kalla kennari kenni.
Og ég ætla að tilgreina að öll
af þeim eru óundirritaður Því ég vil
að hámarka 4 mín milljarða Int svið.
Enginn þeirra ætti að vera núll.
Ég ætla að tilgreina að ID ætti samt að vera aðal.
Og aftur, þetta er bara venju,
a einhver fjöldi af ramma jafnvel ef þú ekki flokka
af grundvallaratriðum þarf að Auðkenni fyrir röð,
það kemur í ljós að það er þægilegt fyrir kóðann, því SQL sem er að gerast
að vera sjálfkrafa mynda fyrir okkur.
Svo ég leyfi það sem aðal.
En nú, ég konar hafa hönnun ákvörðun,
ID námskeið og kennari ID.
Hvað Vísitölur ef einhver ættu þeir að fá?
Ef ég ætla að láta ekki vísitölur, hvað er vísbendingu?
Hvað er vísbendingu?
Árangur eins og áður, ekki satt?
Ef það er ekki vísitölu, Besta sem þú getur gert er góður
af [inaudible] gegnum heild hlutur að leita að tölum.
Þannig að ekki finnst sviði.
Ætti það að vera aðal?
Svo hvers vegna ekki?
Hvers vegna ekki aðal?
[Inaudible Athugasemd]
Fullkominn. Þannig að við rúlla út [hljóðrétt] aðal.
Við völdum þegar það.
Svo ætti það að vera einstök?
[Inaudible Athugasemd]
Gott. Svo, ef þú tekur einn kennari á námskeiðinu,
algerlega fínn.
Og það er örugglega sameiginlega mál
en við setjum þegar burt einn kannski þekki dæmi.
CS51 fékk tvo leiðbeinendur þannig að við erum eins konar
af nú ruglaður í því tilfelli.
Ef við gerðum að leyfa aðeins einn kennari,
við gætum raunverulega gera leið með þátt borð að öllu leyti,
fara aftur til fyrri nálgun
og setja nafn viðkomandi kannski en ID leiðbeinanda er.
Ef þú veist hvert námskeið sem bara einn kennari er hægt að hafa bara
einn dálk.
En breytileikinn er komu okkur í vandræði.
Allt í lagi.
Svo ætti það að vera einstök?
Nei Full texta er ekki finnst við á.
Eins og ég sagði áður en það er
fyrir eins undirstrengur passa um lýsingar.
Og hvað um vísitölu?
Jæja, vísitalan er líklega Besta frambjóðandi okkar
sem segir MySQL Bjartsýni fyrir leit á þetta
eða láta mig vandaður, bjartsýni fyrir leit eða tengir
eins og við munum sjá í bara smá stund
þannig að þeir séu að lítið skilvirkari
en nokkuð eingöngu línuleg.
Vil ég að sjálfvirkt hækkar þessu sviði?
Svo nei, því hið sanna foreldri þátturinn er til
í töflu þau námskeið.
Það er þar sem það er fara að fá plús,
plús þegar það er í raun sett.
Hér, þetta er allt að fara að vera með höndunum sett
af okkur væntanlega í kóðann.
Svo skulum tilgreina einfaldlega að bæði sjálfsögðu ID
og kennari ID hafa vísitölur.
Nú munum við fara á undan og vista.
Og nú, bara til að sýna þú bréfaskipti
milli þess sem er gott GUI viðmót
og stjórn lína tengi.
Láta mig fara á undan og gera eftirfarandi á þessum MySQL hvetja.
Ég ætla að segja nota courses50
sem er handahófskennt nafn Ég gaf þessum gagnagrunni.
Og nú, ég er ekki einu sinni muna hvað við gerðum.
Svo láta mig slá sýna töflur
og almennt semikommum vil vera vinur þinn hér
að klára fyrirspurn.
Og það er það.
Svo hér eru línur eða öllu heldur borðin sem við höfum hér.
Nú, gleyma ég hvað námskeið lítur út,
svo látið mig gera lýsa námskeið og nú sé ég að raða í ASCII
eða útgáfa af því phpMyAdmin var að gera
og ég sé að ID er int.
Það er að því að 10.
Hvað þýðir það?
Það þýðir bara að þegar það er birtist það er að fara að taka
upp 10 stafi á á endastöðvar.
Er það nullable?
Nei þetta er aðal lykillinn.
Getur það hafa sjálfgefin gildi?
Nei Og aukalega sem er sérstakt fánar eins og sjálfvirkt farartæki vöxtur.
Þannig að við skulum gera bara nokkra fljótlegar ísetningar hér.
Ég ætla að fara upp til - við skulum bara segja.
Skulum breyta stöðu að skyggnu
þar sem ég svoleiðis fyrirfram undirbúa þetta.
Þetta er samantekt þá af öll þrjú af þessum töflum.
Ég þegar bara handvirkt slegið fyrsta stjórn.
Og hér fór ég á undan og slá aðra fyrir þig.
Þetta er bara stylistic hlutur.
Almennt, fullt af fólki tegund SQL staðhæfing í öllum húfur
og þá nöfn borð og sviði nöfn í lágstöfum,
ef aðeins vegna þess að það konar stendur
hvað er hugtök þinn og hvað er í gagnagrunni setningafræði.
Svo hér höfum við þrjú töflur, námskeið, leiðbeinendur,
og námskeið leiðbeinendur.
Í mynd sem ég gerði fyrirfram, Ég hafði ekki id sviði
en það er í raun ekki slæmt hjá öllum.
Við vildi bara sjá þriðja dálki það.
Hefði ég gert það hér?
Svo nú láta mig leggja til að við gerum fullt af innsetning.
Svo er hér einhver gögn, Ég súmma inn
Þannig að ég ætla að leggja að í námskeiðum,
Við einungis með þremur námskeiðum.
Og ég valdi þessar þrjár Þvi þeir eru fulltrúi
sumir ágætur - þeir hafa sumir ágætur eiginleika.
CS1, CS50, CS51, þeir hafa vaxandi auðkenni
en hvað ID er það er algerlega óviðkomandi.
Það er bara í hvaða röð þeir voru farartæki sett af mér.
Hvernig um leiðbeinendur?
Svo nú, vegna þess að Henry Leitner kennir bæði CS1 og CS51,
þetta er góður af kjörinn Ályktun um hönnun okkar.
Og Jesse kennir CS51 og Malan kennir CS50.
Svo núna - eða öllu heldur eru þetta bara einstaka auðkenni þessir menn er.
Og námskeið og kennara, - Leiðbeinendur á námskeiðinu, eftir hér.
Auðvitað ID1, sem var CS1 er kennt
við kennara ID1 sem er Henry.
Auðvitað ID2, sem ég hugsa var CS50 er kennt
við kennara ID2, sem er Malan.
Og þá loks, CS51, og taka við höfum tvær raðir.
Og nú er þetta af hverju ganga tafla er öflugur er kennt
bæði Henry og Jesse.
Þannig að þetta er allt fínt og gott,
en ég get varla muna burt the toppur
af höfðinu á mér hver er hver hér.
Hvernig getur þú hugsanlega takast á við það í kóðanum,
án þess að þurfa að harður kóðann hluti?
Jæja, þetta er þar sem SQL sjálft fer að verða vinur okkar.
Og ég ætla að leggja til að við getum tegund the hópur stuðningsmanna.
Ég skal gera þetta á í Raunveruleg hvetja.
Láta mig fara á undan og setja þessa hluti.
Svo, inn í lotum töflunni skulum gera nákvæmlega það sem við áttum
stund síðan.
Ég ætla að á undan og segja, skulum setja CS1 og CS50.
Skulum setja nokkrar fleiri raðir í einu, CS51.
Nú láta mig fara á undan og vista.
Allt í lagi, svo ég er bara skemmtun eins fljótt
og ég get sambönd við sáum bara á skjánum.
Og svo hér höfum við Leitner, hér höfum við Malan.
Við skulum gefa okkur annar röð, og Tov.
Nú láta mig spara þetta.
Og ég er að gera þá vísvitandi í sömu röð.
Nei, ég gleymdi að gefa Þetta er sjálfvirkur vöxtur.
Leyfðu mér að laga fljótt þetta.
Ég laga þetta í the online kóða.
Það mistókst eins og innskot.
Sú staðreynd að ég gat ekki setja Leitner og Malan
og Tov mistókst, vegna þess að ég gerði ekki tilgreina kennitölu þrátt
það er von á henni og ég gleymdi að athuga Auto vöxtur,
sem þýðir að þeir voru allir sjálfgefið að fá núll.
En það þá stangast sem eign sem við höfum tilgreint.
Helsti lykill var brotið svo það var ekki einu sinni láta mig gera það.
Svo láta mig laga þetta.
Nú, ég vil fara aftur til Setja flipann hér og tilgreina
að ég vil Leitner, Malan og enn einn róður, Tov.
Og nú loks, eina einn sem er svolítið erfitt
að muna er að sjálfsögðu kennari.
Skulum setja nú að Auðvitað ID1 er kennari ID1
svo er það CS1 og Henry.
Auðvitað ID2 er kennari ID2 sem er CS50 og Malan.
Og svo seinasta sjálfur við höfum að hafa áhyggjur af er auðvitað ID3
sem er CS51, er kennt
með auðvitað kennari 1, sem er Henry.
Og þrír sem einnig kennt um 3, sem er Tov.
Svo vonandi núna við höfum endurskapa þetta -
fjandinn, ég gerði það sama.
Auðvitað kennari þarf Auto vöxtur.
Allt í lagi.
Ég geri þetta hraðar í þetta sinn, Auðvitað 1, að sjálfsögðu 1, 2, 2.
Og nú loks, gera við CS51 sem hefur auðvitað ID3 og Henry.
Og auðvitað ID3 og Jesse.
Sem lítur vel út.
OK. Svo nú, við skulum fara aftur til endastöðvar.
Þannig að ef ég lýsa námskeið við munum sjá þetta.
Ef ég vil sjá námskeið sem ég get nú gert að velja stjörnu frá námskeiðum,
parhús ristli og nú sjáum við þau gildi.
Og nú, hvað annað ég vil gera?
Veldu stjörnu frá kennurum, það er eins og ég bjóst við,
og veldu stjörnu frá námskeiðum - Auðvitað undirstrik kennari.
Svo hvernig tek ég þátt nú Þessar töflur?
Svo fegurð að hafa valið The ID gildi á þennan hátt er
að ef þú hugsar um að taka námskeiðið borð
og kennari borð og síðan setja
Á milli þessara tveggja í þinn Hugum að sjálfsögðu kennari
borð sem þú getur konar lína upp allar þessar ID dálkum
þannig að þú sameina þær í Einn gegnheill dálkur sem hefur allt
af þeim upplýsingum við vænt um.
SQL setningafræði fyrir þetta er ekki endilega augljóst,
en við skulum sjá hvort við getum gert það.
Svo velja stjörnu frá námskeiðum,
og það er nokkur leið eins og við getum gert þetta.
Ég ætla að ýta á Enter bara til konar snið hluti fallega,
en það örin er bara einkenni á viðskiptavinur hlið tól,
það hefur ekkert að gera með SQL sjálft.
Svo velja stjörnu úr námskeiðum.
Ég ætla að nú ganga Námskeiðin borð
á auðvitað kennari töflunni.
Hvernig? Á sviði sem kallast courses.id jafna námskeið
undirstrika kennari punktur hvað er nafnið
á samsvarandi sviði hér sem ég vil núna.
Það er ekki ID.
It's - hvað, fyrirgefðu?
>> Course ID.
OK, láttu mig að súmma út.
En ég vil taka þetta einu skrefi lengra.
Ég hef nú gert þetta borð og þetta.
Nú vil ég að draga þessi strákur í eins og heilbrigður.
Svo, láta mig frekar taka þátt í þessu öllu saman
á kennari er borð á hvað?
Auðvitað undirstrik instructor.instructor id
jafna instructors.id.
Þannig að við gætum hafa skrifað Þessi fyrirspurn í nokkra vegu.
Í hvaða röð ég gerði þetta er ekki allt sem máli.
Ég bara svona gerði það í hugur minn frá vinstri til hægri.
Við hefðum getað gert þetta í nokkrum mismunandi vegu
en ef ég hef nú parhús ristli og ýttu á Enter,
eftir ég fá aftur nýtt tímabundinn borð, vegna sett
svo að segja í gagnasafn tala.
Og hvað þarf ég að hafa í þetta?
Ég hef á ID, nafn, annað ID, sem er góður af ruglingslegt
mér í augnablikinu, námskeið ID,
kennari ID, ID, og ​​nafn.
Svo, í lok dagsins við höfum rétt gögn núna.
Ég get séð að CS1 er kennt af Leitner, CS51 er kennt
af Leitner og tov, og CS50 er kennd við Malan.
En ég er svolítið kvíðin um þetta tvíræðni ég hef búið til.
Hvað er tvíræðni Ég vísa til?
Já?
[Inaudible Athugasemd]
Það er þrisvar ID dálka.
Þannig að við getum raunverulega festa þetta og við erum að fara til raunverulega fara
að fresta að ramma okkar lokum til að hjálpa okkur með þetta,
en það kemur í ljós að það er lykilorð í SQL heitir S,
þar sem þú getur tilgreint alias, nýtt nafn á sviði
svo að við getum forðast þetta tvíræðni öllu leyti.
En komust að því að ef við gerum ekki takast það einhvern veginn eins og með
það leitarorð eða ramma,
það er hugsanlega þetta tvíræðni ef þú reynir
til aðgang ID sviði því greinilega eru þau
með afrit nöfn þar.
Þannig að þetta er að ganga og ég held að í auga huga þíns besta leiðin
að hugsa um það í raun er að taka tvær töflur,
línu þá upp í Leiðin sem þú vilt.
Og þetta er svokölluð innri þátt í þeim skilningi
að við erum að sameina Borðin hér.
Það eru aðrar gerðir af tengir það við gætum fundur
tímanum eins ytri tengir,
en að mestu leyti þessum er líklega algengasta
fyrir enduruppbyggingu gögn.
Það sem við höfum gert nú er yfirleitt það sem er kallað
eðlilegu gögnunum, þannig að það er engin endurtekning hvar
í töflur.
Og með því að fjölföldun, myndi ég hafa valdið því að fyrstu nálgun.
Ef við hefðum getið Leitner og Tov á mörgum stöðum
í gagnagrunninn þinn, það er ekki yfirleitt besta ákvörðun
sérstaklega ef nafn gæti þeirra breyta yfirvinna eða í tilviki
hjónabands mær nafn gæti breyta sig þú vilt bara einn
Canonical staður fyrir sumir gögn gildi eins og nafn.
Allt í lagi.
Svo, til að ágrip, við höfum haft nokkrar ákvarðanir hönnun til að gera
og mikilvægustu sjálfur sennilega minnka að einhverju
þessara val af stuðla.
En láta mig benda á einn annar hlutur eins og heilbrigður.
Ef ég fer aftur til phpMyAdmin,
einn eiginleiki sem þú might ekki hafa komið upp áður er
eftirfarandi.
Ef ég fer til auðvitað kennari, Ég þegar vissi tilgreina að sumir
af þessum hlutum hafa vísitölur.
En láta mig fara í uppbyggingu flipann auðvitað kennari.
Láta mig smella nú á Vísitölur og tilkynningu á eftirfarandi.
Ég hef tilgreint hér að það er fyrst og fremst inni
var á súlunni sem kallast ID.
Þetta er nokkuð flókið leið tilgreina cardinality
og svo framvegis eins og að vísa til stærð sviði í bætum.
En nú hef ég líka annað svæðið, ID sjálfsögðu, sem er -
Auðvitað auðkenni sem er gert fyrirfram og einstakt, OK.
Ég gerði þetta einn í fara fyrir okkur.
Svo, hvers vegna er þetta - láta mig falla þetta fyrir sakir umræðu.
Ó, þú veist hvað ég gerði?
OK. Svo, fyrr, einn af Vandinn við að nota GUI tól
eins og þetta, þegar við vorum búa til þessa ganga borð,
Námskeiðið kennari borð, muna að ég tilgreint
að ég vil vísitölu á þessu sviði
og vísitölu á þetta öðrum vettvangi.
The aukaverkun af haka báðum þessum kassa
á sama skjá er að phpMyAdmin álykta frá því,
sem ég vil ekki tveir aðskilin Vísitölur,
að ég vil ganga í vísitölu sem er yfirleitt aðeins gagnlegt
eða hjálpsamur þegar þú ert leita á ekki einn reit
en báðum þessum sviðum.
Og það er hvers vegna við höfðum þá conjoin þar
svo ég lækkaði það 'orsök sem var ekki það sem ég ætlaði.
Frekar ætla ég að endurtaka þetta hér.
Ég ætla að fara á námskeiði kenni
og undir fleiri ég er bara fara að segja bæta vísitölunni.
Og ég ætla að fara undir kennari ID og segja bæta vísitölunni.
Og nú ef við smellur hér, fyrirvara við höfum þrjár vísitölur,
einn helsti Og eins og ég ætlað einn fyrir hvert
af þeim erlendum lykla.
Og ég kalla það erlenda vegna þess að ID námskeið í þessari töflu kort
sem sviði, bara til að vera hreinsa, í annað borð.
Helsti lykill sem heitir ID, í töflu sem heitir námskeið,
og sami samningur fyrir hinn.
En nú er áhugaverð, bragð og virkilega tækni.
Ég fór bara á undan og láta mig gera það svolítið hægar.
Í sama skjá, tilkynning það segir Tengsl skoða hér.
Ég smelli þessu og nú eftir að ég fá að gera nokkrar skorður.
Svo er einn af upsides einnig
sem er ekki aðeins að nota hugtök erlendum takkana og aðrar töflur
eins og við höfum bara á er að því að skilgreina vísitölu
á þá er hægt að hafa gagnasafn hjálpa þér enn meira
tryggja áreiðanleika af því sviði.
Sérstaklega, get ég nú tilgreina um þessa dropa
niður að ID sjálfsögðu sviði
í þessari töflu raun Landakort á að courses.id.
Álíka, kennari undirstrik ID varpað instructors.id.
Nú, hvers vegna er þetta að gagni?
Jæja, taka eftir, á hægri hönd hlið það virðist nú.
Ég get nú kenna gagnasafn sem ef Henry
til dæmis alltaf hættir og róður hans hverfur
af borði leiðbeinanda með kennslusnúru er að öllu leyti á þann hátt að
eytt, ég get í gegnum þetta Cascading nálgun tryggja
að allir námskeið sem hann kennir eru ekki lengur í tengslum við hann.
Ég get kennt gagnagrunninn að eyða raðir
í þessu svokallaða þátt töflu sjálfkrafa ef Henry eða ef einn
námskeiða hans hverfur.
Nú, hvers vegna er þetta sannfærandi?
Já?
[Inaudible Athugasemd]
Þú þarft aðeins að gera það einu sinni og lengri tíma, ekki satt?
Það er mjög auðvelt ef svoleiðis fólk koma og fara, koma námskeið
og fara, gagnagrunninn gæti bara fá littered með námskeið
og með kennara sem eru ekki lengur viðeigandi að gögnum.
Og gögn byrjar að fá mjög sóðalegur og óhreinum og þrá,
og svo hér við að raða
af framfylgja sumum þessar takmarkanir.
Já?
[Inaudible Athugasemd]
Það veit af vegi fyrir þessu.
Þetta er skjár þar sem við erum að tilgreina tengsl
milli erlendra lykill og aðal lykill.
Svo allt nafngiftir samninga sem ég alluded
að fyrr eru bara samningar.
Það er engin felast merkingu.
Þetta er skjár sem er aðeins gagnleg
eftir að þú tilgreint vísitölur á hver af þeim sviðum sem við gerðum.
Og fyrir þessa fellilistanum við höfum nokkur atriði til dæmis
Ef námskeið er eytt þú getur reyndar í veg fyrir að eyða
gerist ef það er röð í þessari töflu
því bara að segja, takmarka.
Með öðrum orðum Henry get ekki sest í helgan stein
þar til við decouple hann frá CS51 og CS1.
Svo það er gott.
En það gæti kallað fram villur í kóðanum þínum
ef þú von á ekki að, eða við getum haft Cascade,
Cascade svipað eins Cascading Style Sheets
og Cascading foss þýðir að ef A -
ef Henry hættir svo - með því að fá eytt
svo mun róður hans hér fá eytt.
Engin aðgerð þýðir ekkert eða null er eins konar gagnlegt ef þú góður
af vilja sumir sögulegt met af Henry hafa kennt CS51,
en þú vilt bara því sviði til vera núll þannig að raðir þar
en það er ekki lengur tengslum við hann.
Svo að þetta eru mjög öflug aðferðir sem hægt
og ætti að nota jafnvel þótt í þágu sérstaklega
að bjarga þér frá þér.
Svo láta mig gera minnst á par af lokafrágangi hér,
innihaldsefni sem sem gæti verið gagnlegt
eins og við áætlun um hönnun gagnagrunninum.
Þú hefur einnig val yfir gagnagrunninum vél
sem þú notar í kóðann þinn.
Ef þú ert kunnug af CS161 þú gætir -
eða jafnvel 61, gætir þú almennt að þekkja skrá kerfi.
Og það er hlutina eins, NTFS og HFS +
og X2FS4 [hljóðrétt] og 3, og svo framvegis.
Það er mismunandi leiðir að geyma gögn á borðinu.
Álíka eru mismunandi leiðir til að geyma gögn
í gagnagrunni sjálfgefið amk í tækið
með nýjustu útgáfu MySQL.
Við höfum verið að nota gagnasafn vél heitir, NoDB,
sem styður Nokkrar ágætur lögun.
En annar sameiginlegur einn er einnig kallað MyISAM og enn annar
sem hægt er að nota er minni, sem þýðir ekki að setja neitt
á diski, bara halda hlutir í minni.
Fyrir the hluti þú sennilega mun ekki fara úrskeiðis bara að byrja
með NoDB, heldur fyrir allar verkefni sem hafa tilhneigingu til að taka háir
ísetningu til dæmis, eins mikið af örum skógarhögg,
hundruð af hlutum á sekúndu eða þúsundir af hlutum.
Hvenær þú hafa a mikið af efni að fara
á í gagnagrunninum þá er þetta konar
á lægra styrkleikastigi ákvarðanir byrja að taka þátt.
The fullur texti lögun fyrir dæmi virkar bara í MyISAM
svo hefur það að vísbendingu.
En þú getur muna þetta, við skulum amk hvetja hvers vegna við umönnun
um NoDB sérstaklega.
Kapp skilyrði almennt er átt við hvað?
Allt í lagi, þetta er allusion til dæmis sumir
af þú might hafa heyrt í árum áður hvort 161 eða 50
þar sem þú ert með herbergisfélaga, bæði þig virkilega eins og mjólk,
einn af þú kemur heim opnar fyrst taka ísskápinn það er engin mjólk,
loka ísskápnum ganga yfir götum til CVs fá
í línu til að kaupa mjólk.
Á sama tíma, herbergisfélagi þinn kemur aftur hér.
Hún vill einnig mjólk.
Opna ísskápinn og áttar engin mjólk.
Hér fer hún þá til geyma, kannski hinum CVS.
Hratt áfram nokkrar mínútur síðar þú kemur til baka og nú bæði
af þú hefur keypt mjólk.
Einn af þeim er nú að fara að spilla því þú ert ekki
eins og mjólk að mikið og þetta er vandamál, ekki satt?
Því báðir af þú skoðað ástand einhverju breyta
og þá ákvörðun sem byggist á það jafnvel þótt ríkið
af breytunni var í raun í því ferli að vera breytt,
allt vera það rólega yfir Tíminn sem það tekur
að komast til og frá CVS.
Svo er það eins konar heimskur real heimurinn lausn á því vandamáli?
Skildu eftir miða, ekki satt?
Það gerðist síðast.
Fara alltaf nótu eða hengilás málið bókstaflega.
Og ég segi hengilás, því Ef þú tekur eða tók CS161,
læsa er grundvallaratriði hugmynd í svona veröld.
Svo kapp aðstæður geta komið upp einnig í gagnagrunninum heiminum
og þú gætir muna kannski frá CS50 fjármagna ef þú tókst 50,
þetta númer sem við gáfum reyndar þú krakkar í texta
á þeim tíma svo að þín gangur er svo kallaður lotukerfinu.
Ef þú vildir, í þessu tilfelli, að kaupa hlut af lager
og að stofninn hefur sumir einkum tákn.
Við sögðum þér að nota kóðann eins þetta, því með því að þetta
á afrit lykill uppfærslu setningafræði, sem er byggt
í MySQL sem þú ert í raun gera annaðhvort í innskoti
eða í uppfærslu eftir gera a velja að sjá
Ef birgðir er nú þegar í það.
Með öðrum orðum, hliðstæðu við heim kaupa lager
af mjólk og kæli gæti verið, fyrst,
áður en að kaupa hlut Google þú might vilja til að velja
úr gagnagrunninum allt af hlutabréf Google að Davíð eigandi
til að sjá hvort hann er eigandi núll eða fleiri.
Þegar þú sérð ef hann er eigandi núll eða fleiri sem þú átt
að þá gera eftirfarandi.
Þú þarft annaðhvort að gera að setja inn
ef hann eigin orsök Zero ' það er engin röð fyrir Davíð enn,
eða þú þarft að gera uppfærslu ef að minnsta kosti í orði sem þú vilt
að hafa eina röð fyrir hvern notanda.
Vandamálið er að velja að fjöldi hluta
og þá að uppfæra eða Innsetning mætti ​​hlé
því að einhver annar á öðrum, tölva flugstöðinni að reyna að kaupa
eða selja nokkrar af David hlutabréf hlutabréf hvort
fyrir góða tilgangi eða svoleiðis illgjarn tilgangur.
Það er eins og að fara út í búð þegar herbergisfélagi þinn kemur aftur
og kannar ástand breytunnar.
Þannig að þetta setningafræði á þeim tíma sem var eins konar viðeigandi
fyrir CS50, forðast að vandamál með öllu.
Og það er bara allt að galdur að læsa fyrir þig,
en nú með þessum tegundum verkefna fyrir þetta námskeið
sem líklega munu falið flóknari gagnagrunna,
þú getur ekki náð alltaf þetta atomicity.
Allt gerist í einu eða alls ekki
án truflana svo glæsilegur.
Og svo MySQL, annar gagnasafn vél,
Stuðningur hlutum sem kallast lokka,
þar sem þú getur sagt að læsa þetta Tafla þannig að aðeins einn meðhöndla
og yfirleitt aðeins einn notandi getur snerta það í hvaða tímapunkti
að lesa eða skrifa og þá er hægt að opna það.
Þetta er dæmi frá einum af eigin tilvísanir MySQL er,
þar sem ef þú ert eins og banka reikningur sem þú ert að reyna
að draga peninga frá og þá bæta peningar til.
Þú might vilja til ganga úr skugga um að bæði
af þeim hlutum gerast saman
þannig að það er engin stærðfræði villur
og enginn tap peningar, einhvern veginn.
Vandamálið með lásum þó í gagnagrunni er
að það þýðir yfirleitt allt borðið er læst,
sem þýðir að ef þú ert með hundrað manns að reyna
að eiga viðskipti við bankann þinn á netinu á sama magn
af tíma aðeins einn af þá getur farið í einu.
Sem er heimskur, sérstaklega á netþjónum nú á dögum
sem hafa átta námskeið, 16 Auðvitað hafa mikið
af minni, það er engin ástæða til serialized alla
af viðskiptum þínum ef þeir viðskiptavinir eru bara að fara
að hafa samskipti við eigin röðum þeirra.
Svo NoDB leyfir þér að gera hlutina meira greindur
og þetta, munu vanalega vera aðkoma er að taka í kóða,
sem þú notar eitthvað kallað viðskiptin.
Og þú gerir þetta yfirleitt í PHP kóða,
Ruby númer, Python, hvað sem er.
En SQL kóða sem er lokum notað er þetta,
venjulega.
Hefja viðskipti þá getur þú tilgreina tvo eða fleiri fyrirspurnir
sem þú vilt framkvæma með öllu
án truflana eða alls ekki.
Það getur jafnvel verið einhver velja yfirlýsingar í
eða einhver eyðir eða endurnýja.
En ágætur hlutur er að Gagnagrunnurinn verður að vera klár nóg
að ganga úr skugga um að það mun aðeins læsa raðir sem þeir eru í raun
þátt í þessu uppfærslur eða velur eða eyðir.
Þannig að ef þú fengið þúsundir raðir og þú ert bara að snerta þrjú
af þeim, aðeins að hlutmengi af töflunni verður læst
sem þýðir þeim öðrum 99 viðskiptavinir geta snerta raðir þeirra
án þess að vera serialized og dregið af þér.
Á sama tíma, er þetta ágætur þáttur til viðskipta.
Þeir eru viðskipti með vit eins 161 á skrá kerfi,
þeir eru viðskiptalegs
sem þýðir að þú getur rúlla þá aftur, þú getur losa þá.
Þetta er eins og stjórn eða stjórna F gagnagrunna.
Ef þú uppgötvar hluti leið í gegnum allar
ýmissa gagna rekstrinum þínum, skjóta, eitthvað er að fara úrskeiðis.
Þú framkvæma bókstaflega að mismunandi SQL fyrirspurn rúlla aftur
og öll þessi þróun - allt yfirlýsingar sem þú framkvæmdra
eftir að segja byrja viðskipti hverfa
eins og þeir aldrei gerst,
sem er ótrúlega öflugur hlutur.
Og þetta eru konar hlutir vissulega í 50 við að raða
af sópa undir gólfmotta og þú bara svona ráð
að allt verður að vera vel.
En þegar þú byrjar hugsa um raunveruleg verkefni
og almennir notendur og heilindi gagnagrunninn,
Þetta eru tegundir um ákvarðanir hönnun
sem eru að fara að vera mikilvægur.