>> Sawa.
Hivyo, bila wasiwasi zaidi, SQL, Muundo Query lugha.
Kwa hiyo, pengine alitumia katika angalau katika CS50, labda katika CS165,
labda katika yako mwenyewe miradi ya binafsi.
Na nini SQL basi wewe kufanya, katika SQL Server zaidi kwa ujumla?
Yeah?
[Inaudible Remark]
OK, kwamba alikuwa sana njia kupata ya kusema.
Ndiyo. Hivyo inaruhusu kuhifadhi data
na muhimu zaidi inaruhusu wewe swala kwa data.
Na hii ni hatua moja mbele
kutoka kutumia kitu rahisi kama CSV, kulia.
Comma Kinachotenganishwa Vigezo.
Sawa maadili.
Vile vile basi wewe ila habari mstari mmoja
katika faili asilia.
Lakini nini upande wa chini ya CSV faili kwa ajili ya kuhifadhi data yako,
ingawa wewe kwa ufanisi kupata safu na nguzo kutoka humo?
Yeah.
>> Huwezi 'na shirika moja
ufanisi [inaudible].
>> Huwezi kuwa sawa ufanisi shirika.
Ni nini maana?
>> Naam, kama [inaudible] na kama msingi [inaudible].
>> OK. Yeah.
>> Ni database mahusiano unaweza kuwa na database nyingi
wanaohusishwa na kila mmoja kwa njia maalum sana.
>> OK. Nzuri.
>> Ni [inaudible] kuweka CSV.
>> Na napenda tweak kidogo istilahi.
Meza hivyo nyingi ndani ya database, hakika,
na kwamba huenda zaidi ya kile unaweza kufanya na CSV moja tu.
Lakini kwa kweli kiwango cha juu na CSV Ningependa kusema ni
kwamba uzembe yake yote.
Ni rahisi sana kwa mpangilio.
Lakini kama unataka kufanya swala, nini wakati mbio
ya swala yoyote kuchagua kwenye faili CSV?
I mean ni kubwa zamani [inaudible] ni, haki, 'sababu katika hali mbaya zaidi,
wakaondoka chini sana.
Hata kama alikuwa yamepangwa zima CSV faili, kama hamjui
kwamba upfront, vizuri, bado uko kwenda na
kutafuta jambo zima.
Kwa hiyo, miongoni mwa mambo sisi ni kwenda kupata
kutumia halisi database kwa kutumia lugha
kama SQL ni tunaweza swala ni na tunaweza mapema
kama wabunifu database bayana nini ni mashamba ya
kwamba walikuwa uwezekano wa kwenda na maswali kuhusu ili watu
katika MySQL au Microsoft au Oracle,
yeyote imefanya database unatumia unaweza kufanya yote
ya kazi ngumu ya kuhesabia, OK,
kutokana na milioni ya IDS haya.
Jinsi gani tunaweza mpangilio - yao nje katika kumbukumbu?
Baadhi ya aina ya mti muundo labda,
hivyo kwamba wakati wa kufanya kweli nitafanya Chagua,
ni kitu ambacho logarithmic au logarithmic
ya logarithmic katika wakati badala ya kuliko kweli kupeleka
katika kitu linear.
Hivyo tulipata mengi ya utendaji kwa njia hiyo.
Na tunaweza pia kuhifadhi mengi zaidi urahisi data zaidi 'kusababisha SQL
Server ni kawaida kuhifadhiwa katika RAM ingawa sehemu
yake inaweza kuhifadhiwa kwenye disk na pengine kujua kwa sasa
kwamba RAM ni kwa ujumla kwa kasi zaidi kuliko disks,
hivyo kwamba ni jambo jema.
Na tunaweza pia kushughulikia concurrency bora zaidi.
Kama wameweza kuchukuliwa 165 au 161, unajua kwamba kama watu wawili kujaribu
kufanya kitu kimoja mara moja juu ya mfumo,
mambo mabaya yanaweza ujumla kutokea.
Hivyo miongoni mwa sifa nyingine sisi wanaweza kupata kama sisi kubuni meza yetu
katika njia ya haki ni msaada bora na usalama
linapokuja suala la concurrency.
Hivyo, watu wawili katika sehemu mbili
ya dunia kutumia huo tovuti, ikiwa wote wawili kujaribu
kununua kitu wakati huo wakati, ili si kwenda
kwenda katika wakati huo huo.
Kwa namna fulani wangekuwa huchapishwa na mtu mwingine zaidi ya yetu wenyewe -
mtu mwingine zaidi ya sisi wenyewe.
mapenzi database kufanya hivyo kwa ajili yetu.
Hivyo wakati ni aina ya rahisi,
SQL unatuwezesha swala a mahusiano database.
database mahusiano ni moja ambayo ina moja
meza au zaidi katika ni kawaida.
Na kama hii ni kidogo usio wa kawaida,
unaweza kweli tu kufikiri hii kama Excel au namba
au Spreadsheets Google.
Ni tu ina mistari na nguzo na kawaida juu ya kila
ya mistari wale ana jina kwa ajili yake.
Hivyo hii inaweza kuwa na ID safu, safu jina,
anwani safu na kadhalika.
Na kisha unaweza kuwa na nyingi meza kama kama unataka
kwa kuanza kuweka nje aina mbalimbali za data.
Lakini unaweza kukumbuka angalau kutoka CS50 kwamba sisi walijaribu
kukupa GUI-msingi chombo [inaudible]
kusimamia database yako.
Ilikuwa inaitwa phpMyAdmin.
Hivyo ni bahati mbaya tu kwamba hiyo ilikuwa imeandikwa kwa PHP, kwa kweli,
lakini ilikuwa ni mtandao msingi mbele mwisho wa database.
Na kupitia tabo mbalimbali na viungo, unaweza kuanza
configure database mwenyewe.
Lakini chombo nzuri ya kuanza kwa kupata kidogo vizuri zaidi
na pia ni amri ya mstari wa mteja.
Hivyo, kama kutumia CS50 Appliance au kweli kwa kutumia PC yoyote ya jumla
ambayo ina amri line MySQL mteja, unaweza pia kufanya ni aina
shule ya zamani, kama hii.
Kama kando mradi MySQL, angalau wazi chanzo version
ya ni sasa inaitwa MariaDB kwa sababu mbalimbali unaweza kusoma
juu ya Wikipedia lakini ni programu hiyo ni,
ni syntax sawa na kadhalika,
pretty kiasi sawa code msingi.
Na hivyo wakati mimi nina katika hii haraka mimi sasa unaweza kuingiliana
na database yangu zaidi manually.
Hivyo kesi katika kiwango, napenda kwenda mbele
na tu kufungua terminal dirisha.
Mimi kilichotokea kwa kutumia CS50 Appliance lakini unaweza kufanya hivyo
juu ya mfumo wa zaidi yoyote katika ambayo got haki
programu imewekwa.
Na mimi nina kwenda kufanya MySQL-u kwa jina John Harvard
juu ya mfumo huu hasa,-p kwa neno la siri kwamba mimi itabidi aina
katika kidogo zaidi salama kwa kupiga kuingia.
Sasa mimi nina ilisababisha.
Mimi nina kwenda aina bendera katika CS50 Appliance
na sasa naona kimsingi kwamba screen hiyo.
Lakini kuna amri sasa kwamba tunaweza kuanza kuandika
kama kuonyesha database, na ambayo inaenda kuonyesha yangu yote
ya database kwamba nina tayari kuundwa katika mfumo,
pretty much orodha hiyo ungependa kuona katika phpMyAdmin.
Kuna michache ya wengine kama habari schema na mtihani,
ambayo kama wewe poke kuzunguka CS50 Appliance, sisi kuficha baadhi ya
ya mbao hizo kiwango cha chini
lakini wao tumekuwa huko muda wote huu.
MySQL kweli ina kiwango cha chini mali kama majina ya watumiaji
na nywila kwa ajili ya database yenyewe, si kwa ajili ya maombi yako
kwamba unaweza kuwa na mbio juu yake.
Hivyo mapema, leo, mimi kuundwa database wanandoa,
moja ambayo inaitwa courses50.
Tabia mbaya ni baadhi ya umetumia CS50 bila shaka ununuzi chombo,
ambayo ni interface kubwa kwa msajili ya shaka catalog.
Na hii ni kweli nzuri dataset kwa majadiliano juu ya 'sababu,
moja, sisi ni aina ya wote wazi ukoo na kozi
na walimu na mkutano maeneo na aina zote
ya mambo ya kawaida ya chuo kikuu,
lakini pia ni got baadhi ya fursa ya kuvutia
kwa ajili ya kubuni.
Hivyo sisi mawazo tunatarajia kutumia dhana ya catalog bila shaka
na chombo ununuzi kama mfano katika leo kutatua
ya sura baadhi ya kubuni maamuzi tuna kufanya.
Basi hebu kuanza huko.
Tuseme kwamba mimi kwa kweli alitaka kuwakilisha rahisi super
bila shaka ununuzi zana.
Na dunia rahisi Siwezi kufikiria na moja ni
ambayo kuna kozi na kuna walimu.
Na hebu tuseme kwa ajili ya majadiliano
kwamba kila kozi ana angalau jina.
Basi hebu kuanza mchoro hii nje.
Mimi naenda kutumia phpMyAdmin tu kama urahisi,
hivyo hatuna kuwa na aina nje yote ya maswali manually.
Lakini hapa mimi niko ndani ya yangu courses50 database.
Kama usio wa kawaida na hii, ni itabidi kuwa rahisi sana mara moja kupiga mbizi
katika mradi wako mwenyewe kama Ningependa kuitumia.
Mimi nina kwenda kujenga meza aitwaye Kozi
na mimi kufikiria tu ya shamba moja
kwa sasa, jina la shaka.
Mimi nina kwenda mbele na kusema nipe safu moja.
Sasa, kama unakumbuka, kupata interface hiyo ni kidogo
kama hii.
Na kichwa nyingine kusema ukweli ya phpMyAdmin ni kwamba ni aina
binafsi kuwafundisha na kwamba kupitia dropdowns, unaweza aina
ya kuona nini inawezekana yako maamuzi kubuni ni.
Hivyo nina kwenda kutoa kila Bila shaka jina.
Hiyo ni jina la safu hii.
Na vipi kuhusu aina yake data?
Wengi wa unapaswa kujua katika angalau baadhi ya aina hizi data
kutokana na uzoefu kabla.
Nini sahihi kwa jina bila shaka?
Sharon?
>> Varchar.
>> OK, varchar ambayo ni kutofautiana Char.
Na nini kwamba maana kitaalam zaidi?
[Inaudible Remark]
OK. Hivyo ni kamba.
Na var kipengele yake ina maana gani?
Kutofautiana. Lakini ni nini haina maana kwamba?
Yeah?
[Inaudible Remark]
Hasa. Hivyo ni variable idadi ya herufi
katika kamba up kwa baadhi kiwango cha juu.
Hivyo hapa ni wetu wa kwanza uamuzi wa kubuni.
Sisi kwa kweli na kuamua jinsi ka wengi maximally
kutenga kwa kila kamba hizo.
Kwa ujumla, unataka aina ya kufanya hivyo ndogo mno,
si kufanya ni kubwa mno 'Kusababisha dhahiri
kama ndogo pia wewe tu kwenda kuanza truncating data
na utasikia kupoteza habari.
Na kama ni kubwa mno, wewe tu aina ya kuwaambia database
kutarajia na kwa kuongeza kwa data zaidi
kuliko ili kweli milele kupata.
Basi nini hisia busara namba kwa ajili ya jina bila shaka?
60? OK, hivyo 60.
Hiyo inaonekana pretty busara
muda mrefu ni hakuna isipokuwa kwa hiyo.
Kuna kweli hakuna ngumu, kwa haraka utawala.
Kwa kuwa waaminifu, kwa sababu za kihistoria mengi
ya watu kuchagua 255 'Kusababisha kwa miaka kwamba ilikuwa ni aina
ya kiwango cha juu default kutumia 8 ka - 8 bits kama counter yako.
Ningependa zaidi [inaudible] wanaweza kutumia nguvu ya 2
lakini ni aina ya maana.
Ili tuweze kwenda na 60.
Hiyo inaonekana busara muda mrefu
kama sisi hatimaye wala majuto ni 'Kusababisha kwamba ni amefungwa juu.
Sasa, tuseme kinyume uamuzi yaliyofikiwa,
chars si variable lakini tu char shamba.
Hivyo tofauti na C na C + +, char haina maana char moja
na database kwamba kwa ujumla ina maana idadi ya kudumu
wa wahusika katika kamba.
Nini itakuwa kichwa na / au upande wa chini ya kuchagua yangu 60
kwa shamba char, badala ya varchar?
Hii ni hasa aina ya kwanza uamuzi wa itabidi kufanya
wakati ukaguzi [fonetiki] nje ya mradi na washirika wako.
Yeah, Sharon tena.
[Inaudible Remark]
Nzuri. Hivyo kama jina ni wachache
zaidi ya 60 basi ni kupoteza chochote kile delta ni
kati ya 60 na halisi urefu.
Ili tu anahisi fujo, ka zaidi unahitaji.
Lakini kwa nini ni kuwepo?
Hakika kuna baadhi kichwa.
Yeah?
[Inaudible Remark]
Uhakika. Hivyo wakati mwingine wapate kujua idadi ya kudumu
ya wahusika kama tarakimu ya 10 kwa namba ya simu kwa mfano.
Lakini anayejali, kama nini si tu kusema 11 anyway
au kwa nini kusema 60 anyway kwa varchar?
Faida gani tunapata kwa kujua na kubuni
kwa idadi ya kudumu ya wahusika?
[Inaudible Remark]
Wewe ni juu ya haki ya kufuatilia.
Hivyo ni optimization lakini ni kweli ya - yeah?
[Inaudible Remark]
OK. Nzuri. Hebu lengo juu ya kuwa sehemu ya mwisho.
Hivyo Indexing.
Hivyo ni zamu nje kama wewe kujua mapema kwamba wote
ya mashamba yenu ni kwenda kuwa wahusika 60,
unaweza kweli kufikiria hii safu katika orodha ya Excel
kama kuwa sawa sana, kushoto haki
na haki haki edges
kwa sababu kila safu ni herufi 60 kote.
Hiyo ina maana kwamba hii kamba ni herufi 60 mbali
kutoka kamba hii, 60 wahusika mbali na hii moja
na hii ni moja na hii moja.
Hivyo tu kama nyuma wakati kujifunza C, alikuwa na upatikanaji random
katika ulimwengu wa arrays, sawa wazo hapa.
Kama safu yako ni kuwakilishwa kutumia chars fasta tu urefu,
unaweza ufanisi index nasibu 60 au 120 au 180
na unaweza kupata katika mmoja mmoja masharti ya haraka zaidi.
Basi, badala yake, safu yako na moja kwa moja makali kushoto ili kuzungumza
lakini rugged sana haki makali ya safu ya
kwa sababu unaweza na wahusika 10,
Wahusika 15, 5 wahusika.
Hivyo hii pia ni tradeoff.
Na wakati mwingine tu kwa njia ya majaribio na makosa
na majaribio unaweza kufikiri
nini kweli wito haki ni lakini hizi ni aina
ya maswali ambayo lazima kwenda
kupitia akili na / au yako meza linapokuja wakati
kubuni database yako.
Hivyo, si lazima haki kujibu lakini lazima
angalau kuwa na baadhi sentensi moja au mbili katika akili
Backup chochote uamuzi kufanya.
Sawa.
Basi hebu kuweka scrolling katika papo hapa
kwamba ni phpMyAdmin ya UI.
Kwa hiyo, thamani default kwa jina, anatakiwa kutaja
kwamba lazima iwe na default thamani ya null?
Unafikiri?
Je, bila shaka na null jina?
Tu anahisi weird, sawa?
Siwezi kufikiria yoyote kozi unnamed katika Harvard.
Na labda kuna baadhi ya Obscure kona kesi
ambapo bila shaka ni hasa kutokana na idadi
na profesa hana waliochaguliwa jina kwa ajili yake lakini -
I mean, kwa heck na kwamba,
kama hebu hata bother kusaidia hiyo.
Napenda kusema kwa maslahi ya ya nzuri database safi,
hebu bayana kwamba huwezi na default thamani ya null.
Vinginevyo, tunaweza kufanya kitu kama untitled bila shaka
ambayo si tofauti na Mac OS na Windows kufanya
wakati kujenga folder kwa mfano,
lakini kuna kwamba inafanya hisia kidogo zaidi
ili binadamu kuona kitu.
Tunazungumzia nyuma-mwisho database labda
kwa ajili ya kozi catalog.
Hivyo mimi si kweli hata kama wazo la kutoa ni
katika majina ya shaka untitled
tangu kwamba si kweli kwenda kusaidia mtu yeyote.
Basi hebu kuondoka kama hakuna, ambayo ina maana kwamba wakati kuingiza
katika orodha ya hii, una kutoa kila kozi jina
ambayo anahisi kidogo safi kwangu.
Sawa.
Hivyo scrolling zaidi, kulinganishwa.
Hii tu ina nini na seti tabia na mengineyo
kama wameweza milele kuonekana anataja ya Swedish
katika phpMyAdmin kwamba 'Kusababisha watu
ambaye aliandika phpMyAdmin walikuwa Swedish.
Ni kwamba PHP au ni MySQL?
Mmoja wa hao wawili, mimi alisahau offhand.
Lakini ni kwa sababu za kihistoria
lakini unaweza kueleza kila tabia ya Kiingereza
kwamba unaweza kwa Swedish hivyo ni kwa kiasi kikubwa mashirika yasiyo ya suala hilo.
CS50 Appliance ingawa ni kutumika - kimeundwa kutumia UTF-8,
ili kwa ujumla lazima si pop up kwa ajili yenu.
Sifa.
Hivyo hakuna haya ni kweli husika hapa.
Mimi naona mapacha, Unsigned, Unsigned zerofill,
na juu ya update sasa timestamp.
Shamba ambayo inatumika tu kwa baadhi ya shamba numeric
au baadhi ya mashamba wakati.
Hivyo tutaweza ruka juu ya kwamba kabisa.
Null. Je, shamba hii itakuwa batili?
Hivyo hakuna. Tayari tuna kwamba aina ya mazungumzo.
Hivyo hatutaki default thamani.
Hatutaki kuwa ni null.
Nini kuhusu index?
Kuna uchaguzi nne hapa.
Ni nini maana ya kama sisi bayana
kwamba safu hii ni kwenda kuwa muhimu ya msingi?
Kufikiri nyuma CS50 au CS165 kama umefanya kuchukuliwa.
[Inaudible Remark]
Hasa. Hivyo muhimu msingi kwa ufafanuzi ni shamba
kwamba kipekee kubainisha kila mstari katika meza hii.
Na unaweza kuwategemea ni kufanya kwamba utambulisho wa kipekee.
Hivyo, ni nini maana ya kisha tu kuwa ya kipekee?
Naam, aina ya hizi mbili ina aina
ya chini ya athari chini ya kofia.
Lakini kwa ujumla, muhimu ya msingi ni aina ya mkataba kufanya
na kitu database.
Wakati mimi kufanya maswali kuangalia kwa Bila shaka,
Mimi nina kwenda kutumia hii hasa shamba.
Na tutaweza kurudi kwa kwa nini sisi tupate kuwa mbili
uchaguzi kama hapa, msingi au ya kipekee.
Kipekee tu anasema, hii shamba ni kwenda kuwa ya kipekee
lakini mimi si kweli maamuzi yoyote aina ya ahadi matusi hapa
kutumia shamba hilo kufanya upekuzi wangu
kwa sababu tutaweza kuona katika muda tu.
Kama sisi bayana badala index, ni nini maana ya kutaja
kwamba shamba ina index juu yake?
Yeah?
[Inaudible Remark]
Hasa. Imekuwa ni optimized kwa ajili ya swala.
Hivyo - database server, Oracle, MySQL, chochote,
kwa ujumla kazi yake ya uchawi nyuma ya pazia mara moja bonyeza
kwamba chaguo na kisha bonyeza Ila na itakuwa kujenga
up kawaida muundo mti, B-miti kama wameweza kuona
au kusikia mbali ambayo ni muda kuangalia sana mti
kwamba anatoa nzuri sana mali logarithmic
wakati wa kutafuta juu ya data.
Kama huna bayana index juu ya shamba, nini kinaendelea
kuwa mbio wakati wa kutafuta
kwa holela [Fonetiki] bila shaka jina?
Nini hiyo?
[Inaudible Remark]
Oh, [inaudible], linear, sawa?
Kama hakuna optimizations tuliyopewa kwa database
na hujafikiria database ni aina gani
ya data kutarajia.
bora unaweza kufanya ni kuangalia kila kitu wakati wewe ni kuangalia
kwa baadhi ya thamani, hasa kama kuna inaweza
ukweli kuwa marudio.
Full-text wakati huo huo, tutaweza wimbi mikono yetu kwa sasa.
Lakini kwa ujumla, hii ni aina ya index kwamba utapata
kuongeza kwa keyword utafutaji juu ya shamba.
Hivyo hii inaweza kuwa na mgombea mzuri
kwa kama maelezo bila shaka ambapo unaweza kuwa wanandoa
ya aya na unaweza wanataka kufanya mechi substring.
Full-text kwa ujumla basi unaweza kufanya hivyo haki kwa ufanisi.
AI, hii ni aina ya kutisha ya maelezo lakini kama sisi hover
juu yake utaona Auto ya nyongeza.
Si husika wote hapa lakini auto nyongeza ni muhimu
kwa kama shamba int kwa sababu database itachukua huduma
ya mchakato wa pamoja plusing kila wakati unaweza kufanya kuingiza.
Ili watu hata kama mbili literally bonyeza Kuwasilisha
wakati huo huo na kujaribu kujenga mstari kwa namna fulani
katika database, moja ya wao kupata idadi mimi,
wengine kupata idadi mimi pamoja na 1.
Huwezi kuwa na wasiwasi
idadi kuhusu wawili kuwa kwa ajili identically kama ungekuwa
kwa kufanya hivyo mwenyewe katika kanuni.
Sawa.
Basi, mimi aina ya kama ambapo sisi tumepewa jina kuwa.
Basi hebu bonyeza Hifadhi.
Je, hii ni design nzuri kwa meza database?
Na kama kando kama kutu juu ya SQL au aina
ya tu daima kugeuka kipofu jicho kwa nini kinachoendelea,
Mimi naweza kuwa typed hasa kwamba -
wale mistari tatu wakati huo nyeusi na nyeupe haraka
katika mstari amri mteja au mimi wangefanya
kwamba katika kanuni programmatically.
Basi wote phpMyAdmin ni kufanya kwa yangu, kuokoa mimi tu juhudi
ya kukumbuka wakati mwingine syntax na kuandika nje kwa
kama amri tedious.
Sawa.
Hivyo hii haina kujisikia kama bora kubuni, moja shamba meza.
Sasa tunaweza kuwa na mambo kama maprofesa
na maeneo na maelezo.
Lakini hata hivyo, kwa kutumia jina tu
kutambua kozi haina kujisikia bora.
Nini kwa ujumla kuwa sisi kufanyika katika siku za nyuma
Ikiwa umetumia database kwa kipekee safu?
Si kwa kutumia varchars kawaida.
Yeah?
[Inaudible Remark]
Yeah. Hivyo kawaida bila shaka ID.
Hivyo, wengi ya kawaida mbinu hapa hasa
wakati wa kutumia mfumo ni kweli tu
kutumia namba kama integer.
Hivyo basi mimi kwenda mbele na kufanya hivyo.
Na tunaweza kufanya hivyo katika chache njia, lakini taarifa kama mimi kuvuta
katika juu ya chini hapa.
Mimi nina kwenda kusema kuongeza moja nguzo ya mwisho wa meza,
ujumla tu kwa ajili ya Visual urahisi kuweka vitambulisho
mwanzoni mwa meza ingawa hii haina halisi
kazi matokeo.
Hivyo nina kwenda kwa kusema kuongeza nguzo moja
mwanzoni mwa meza.
Mimi nina kwenda bonyeza Go, kwamba inatoa mimi nyuma UI hii hapa.
Hebu piga ID hii.
Kama tunafikiri tunakwenda na hakuna zaidi kufanyika kozi milioni 4
shamba int ni nzuri.
Tunaweza hata kuogopa chini
lakini nafasi ni nafuu hivyo ambao kwa kweli wasiwasi.
Lakini, sisi ni kujaribu kuandika Facebook sasa,
wanaweza kuwa kitu mbaya wanatarajia ints kubwa
ambayo kutupatia 64-bit ints
lakini basi uko literally mara dufu idadi ya bits
kwamba wewe ni kutumia, hivyo madogo tradeoff
lakini kitu ya kuzingatia.
Sasa, hii ni utata urithi kitu.
Unaweza kukumbuka kutumia MySQL
kwamba wakati wowote kutangaza int shamba utasikia mara nyingi kuona idadi
karibu na hiyo kama namba 10.
Ina kitu cha kufanya na ukubwa wa idadi
au idadi ya bits.
Kwamba ina nini na idadi ya wahusika ambayo hutumiwa
kwa kuibua kuonyesha kwamba shamba int
wakati wa kutumia dirisha terminal.
Hivyo tunaweza kuona kwamba katika wakati huu.
Hivyo, si kupotoshwa na kuandika idadi
huko hata kama ni ufanisi kuuliza sisi
kwa moja hapa.
Zaidi ya hapa, mimi nina kwenda kwenda mbele na kusema unsigned.
Kuna hakuna sababu ya taka yote ya idadi yetu hasi
tangu database kwa ujumla kwenda
kudhani chanya maadili au null.
ID dhahiri haipaswi kuwa null.
Na unafikiri nini kuhusu index kwa ajili ya shamba hii ID?
Hebu kufanya hivyo msingi.
Hivyo, nini kama, ingawa, kama naweza tu kufikiri ya moja CS164 bila shaka
katika Harvard na moja tu CS50 Bila shaka katika Harvard
na kwamba pretty jumla sana kweli
kwamba kuna labda isipokuwa [Inaudible] semesters wote
au kitu weird kama hiyo.
Lakini zaidi kimsingi, kwa nini ni bora
kutumia numeric muhimu ID kwa kipekee kutambua kozi badala
kuliko kamba tu ya kipekee?
Yeah?
[Inaudible Remark]
OK, kuvutia.
Hivyo kama sisi alikuwa na aina ya kozi msalaba-waliotajwa.
Hivyo kwamba ni mfano mzuri.
Mimi nina uhakika napenda kutatua kwamba ingawa
kwa kuwapa sawa ID idadi kama hiyo ni
ambapo walikuwa wanakwenda na kwamba.
No? OK. Lakini dhahiri kona kesi ya kuzingatia.
Kama kuna ni aina ya - sisi wanahitaji aina fulani
ya aliasing uwezekano.
[Inaudible Remark]
Uhakika.
[Inaudible Remark]
Hiyo ni mfano mzuri.
jina inaweza kubadilika juu ya wakati, busara kabisa.
Nini kingine?
[Inaudible Remark]
Sorry, kusema tena.
[Inaudible Remark]
Yeah, hasa.
Hivyo kweli, kwamba clincher halisi ni
kwamba kwa kutumia 32-bit int ni pengine ni kwenda kuwa kasi
kuliko baadhi ya kutofautiana urefu char shamba.
Katika kesi ya kwanza, unaweza literally fit katika kujiandikisha,
sembuse sana ndogo kumbukumbu footprint.
Katika kesi za mwisho, wewe kwenda kuwa kwa kufanya mapumziko [fonetiki]
kamba ya kulinganisha ambayo katika wenyewe na linear
katika ukubwa wa kamba uwezekano.
Hivyo, ni nzuri tu optimization,
na hasa itakuja
hebu kufanya kile kinachojulikana Lawama kwa ufanisi zaidi
katika muda tu.
Basi hebu kufanya hivyo.
Tutaweza bayana kwamba hii ni ya msingi
kwa sababu mimi si hasa wanataka huduma au kufikiri
kuhusu nini idadi ni ya kweli.
Wachukue juu ya chochote maadili wanataka.
Mimi nina kwenda kusema auto nyongeza hivyo siwezi outsource undani kwamba.
Kama katika kando waweza kujua kwamba Harvard
angalau gani na ya kipekee idadi kwa kozi.
Sina kumbukumbu nini kozi hii ni.
Najua kwamba CS50 ya idadi catalog ni 4949,
kabisa holela.
Lakini kuna weird kona kesi katika kwamba hata
katika dampo registrarial data orodha ya shaka,
wakati mwingine kozi, ya zamani kozi kuwa na idadi kama 4.
Lakini kitaalam kwamba shamba ni shamba char
kwamba tu ya kuanza kwa 0004.
Hivyo hapa pia, una kuwa na makini juu ya kubainisha
kati ya mambo kama Bila shaka idadi catalog
ambayo inaweza kuwa na baadhi ya binadamu dhana ya kudumu urefu, 0004,
na unapaswa kuhifadhi kwamba kwa mfano katika ints.
Kwamba aina ya shamba lazima kuhifadhiwa mahali pengine.
Hivyo katika Harvard, kama tulikuwa kweli kufanya bila shaka
chombo ununuzi, ni pengine si ya kutosha
kozi ya simu na tu 1, 2, 3, 4.
Sisi ni pengine ni kwenda na
kuwa na uwanja mwingine aitwaye catalog posta,
kwamba ni pia wanatakiwa kuwa kipekee kwa kuzingatia
juu ya mikataba ya binadamu hapa lakini siyo chaguo bora
kwa kitambulisho kipekee kwa sababu inaweza kuwa kutofautiana urefu.
Ni wanaweza kuwa nne chars, inaweza kuwa tano.
Kwa kweli, nadhani chache miaka iliyopita wao kuhamia
wahusika tano 'sababu kuna na zaidi ya 999 kozi
katika jumla au kitu kama kwamba, au 9999 kozi.
Kwa hiyo, ambayo inaweza kuwa mfano ambapo shamba ni si msingi
lakini ni lazima kuwa ya kipekee.
Na anwani ya barua pepe ni mtu mwingine.
Unaweza kutaka kuwa ni ya kipekee
lakini si lazima muhimu yako ya msingi.
Sawa.
Hivyo basi mimi bang nje mwingine meza kwa kasi zaidi kuliko hili.
Hivyo nina kwenda kuwaita hii moja Waalimu na mimi nina kwenda
kutoa hii jumla idadi ya nguzo ya mbili.
Mimi nina kwenda kujifunza yangu somo kutoka wakati wa mwisho.
Mimi nina kwenda kuwaita kwanza safu ID.
Mimi nina kwenda kuwaita pili safu jina la Yesu.
Mimi pia kwenda kufanya varchar.
Mimi nina kwenda kudhani hakuna profesa ina jina tena
zaidi ya herufi 60, ingawa sasa hii inaweza kuwa kusukuma
na baadhi ya majina ya muda mrefu, maalum watu na majina katikati.
Hiyo ni sawa kwa leo.
Basi hebu kitabu zaidi ya hapa.
Hebu kufanya hili unsigned tena.
Hebu kufanya msingi hii.
Na tutaweza kuruhusu majina duplicate
katika kesi kuna mbili John Smith au kitu kama hicho.
Na sasa tuna meza mbili.
Basi sasa, hii anaomba swali jinsi gani mimi kujiunga
katika mwalimu na bila shaka?
Najisikia kama mimi aina ya got mbele ya mwenyewe
kwa sababu kama mwalimu kuwafundisha Bila shaka,
silika yangu ya kwanza ingekuwa kweli kuwa kurudi
kozi kutambua, hii mara si wazo nzuri.
Hebu kweli kuongeza safu moja mwishoni mwa meza,
bonyeza Go, na mimi itabidi kuwaita Mwalimu hii.
Na mimi itabidi kufanya varchar hii na mimi itabidi kufanya hii 60.
Na labda mimi itabidi kuondoka null sasa
katika kesi bila shaka ina si wamekuwa Unsigned katika mwalimu
ambayo wakati mwingine hutokea kabla ya mrefu kuanza na bonyeza Hifadhi.
Ambayo ya miundo haya unapendelea?
Kwanza moja ambapo tuna meza tofauti mwalimu ya
au ya pili ambapo sisi tu kuongeza shamba kwa bila shaka?
Hivyo ni karibu kuhusisha mwalimu na bila shaka.
[Inaudible Remark]
OK. Nzuri. Lakini ngoja kushinikiza nyuma.
Ni rahisi tu hivyo kama naweza aina tu katika jina la mtu
katika meza hii, kama hakika ambayo ina baadhi ya thamani au -?
[Inaudible Remark]
Sawa.
Naam, napenda kuwa vigumu hapa.
Hivyo basi mimi kusema kwamba Bila shaka hii ni CS51
na Mimi najua ni kufundisha mwaka huu na watu wawili.
Kwa hiyo, Henry Leitner na Jesse Tov lakini -
hivyo mimi itabidi kuweka comma kati ya mbili, kulia.
Mimi nina mzuri katika CSV kutoka yesteryear.
[Inaudible Remark]
Hasa, kulia.
Haraka kama mapumziko kwa kitu kama hiki,
ambayo wanaweza kujisikia busara na unaweza kuhisi
kama hii ni aina ya smart.
Mimi nina aina ya kukopa moja wazo ambayo ni kazi vizuri,
kukopa wazo jipya na aina ya kuchanganya yao.
Wewe ni aina ya kuwashinda kabisa hatua ya kutumia database
katika nafasi ya kwanza 'sababu kama moja ya maadili
ya kutumia ni utafutaji kasi kwa sababu ya bahati mbalimbali
na meza ambayo inaweza kujengwa kwa ajili yenu
na injini database yenyewe.
Sasa, kama unataka kutafuta kwa wote wa kozi
kwamba Jesse kufundisha, sasa una ya kufanya substring vinavyolingana wote
ya mashamba ya mwalimu,
ambayo kwa ufanisi maana linear kutafuta tena 'sababu una
kupata kuweka hii holela ya herufi tatu mahali popote
katika shamba mwalimu kabla
ndani ya labda ikifuatiwa na comma.
Hivyo hii dhahiri hakuendani.
Hivyo basi mimi kwenda nyuma ya meza.
Hebu kwenda mbele kwa kozi, kuondoa hiyo.
Mimi nina kwenda tu mbele na kuacha shamba hilo.
Na kama unataka kufanya hivyo manually,
syntax ni ALTER TABLE kozi DROP mwalimu.
Hivyo basi kwenda mbele na kusema ndiyo hiyo.
Na kwenda nyuma ya wazo hili mapema
ambapo nina tofauti meza kwa walimu.
Lakini sasa hii anahisi kidogo kama naweza kuweka shaka
katika meza kozi na mwalimu
katika meza mwalimu lakini mimi namna fulani inahitaji kuunganishwa kati ya mbili.
Na ni jinsi gani kupendekeza sisi kufanya hivyo?
[Inaudible Remark]
Nzuri. Basi hebu kufanya hivyo.
Na unaweza kuwaita hii meza katika nadharia kitu chochote.
Mimi nina kwenda kwa makusudi kuiita nini mengi
ya mifumo ya ingekuwa simu yake, kati yao,
Laravel kama utaona katika kidogo.
Mimi nina kwenda kuiita bila shaka kusisitiza mwalimu.
Kutumia umoja katika hii kesi kwa kila moja ya maneno
na wote kesi ya chini tena, na pia kwa -
kisha alphabetically sorted kutoka kushoto na kulia.
Hii ni kinyume kabisa holela lakini inaelekea kuwa mkataba
katika mengi ya mifumo hii katika PHP katika lugha nyingine.
Jinsi nguzo wengi nahitaji katika hii kile tunachokiita kujiunga na meza,
kujiunga na wengine wawili meza pamoja?
Tatu nguzo?
Ambayo moja - gani wao kuwa?
[Inaudible Remark]
OK. Nzuri. Kwamba kazi.
Na tunaweza kitaalam kupunguza kona hapa lakini mengi
ya mifumo ya hasa bado kutoa hata safu hizi
Vitambulisho vya kipekee ingawa semantically mstari
kwamba sisi kweli huduma ya juu au nguzo kwamba sisi kweli huduma
kuhusu ni mbili za mwisho ya nini alisema, bila shaka ID
na mwalimu ID.
Basi hebu kufanya hivyo.
Mimi nitakuita hii mstari tu ID, tu kama sisi alifanya mbele.
Lakini hii mimi nina kwenda kuwaita bila shaka ID.
Hii ni moja ya mimi nina kwenda kuwaita mwalimu ID.
Na mimi nina kwenda kwa bayana kwamba wote
wao ni unsigned 'Kusababisha nataka
kuongeza 4 wangu bilioni int mbalimbali.
Hakuna hata mmoja wao lazima null.
Mimi nina kwenda bayana kwamba ID bado unapaswa kuwa msingi.
Na tena, hii ni tu ya mkataba huo,
mengi ya mifumo ya hata kama huna aina
ya kimsingi haja kitambulisho kipekee kwa mstari,
ni zamu nje ni rahisi kwa code, SQL ambayo inaenda
kuwa moja kwa moja yanayotokana kwa ajili yetu.
Hivyo mimi itabidi kuondoka kwamba kama msingi.
Lakini sasa, mimi aina ya na uamuzi wa kubuni,
Bila shaka ID na mwalimu ID.
Nini bahati kama wapo lazima wao kupata?
Kama mimi itabidi kuondoka hakuna bahati, nini maana?
Nini maana?
Utendaji kama kabla ya, sawa?
Kama hakuna index, bora unaweza kufanya ni aina
ya [inaudible] kwa njia ya jambo zima kuangalia kwa idadi.
Ili haina kujisikia smart.
Je, ni kuwa na msingi?
Hivyo kwa nini?
Kwa nini si ya msingi?
[Inaudible Remark]
Perfect. Hivyo sisi unaendelea nje [fonetiki] msingi.
Sisi tayari alichagua hiyo.
Kwa hiyo, lazima ni kuwa ya kipekee?
[Inaudible Remark]
Nzuri. Hivyo, kama wewe kudhani mwalimu mmoja kwa kila kozi,
kabisa faini.
Na kwamba ni dhahiri kesi ya kawaida
lakini sisi tayari kuweka mbali moja labda ukoo mfano.
CS51 got walimu mbili hivyo sisi ni aina
ya sasa Star katika kesi hiyo.
Kama sisi alifanya kuruhusu tu mwalimu mmoja,
tunaweza kweli kufanya njia na kujiunga na meza kabisa,
kwenda nyuma ya mbinu mapema
na kuweka si jina la mtu labda lakini ID mwalimu ya.
Kama unajua kila kozi kama tu mwalimu mmoja unaweza kuwa na haki
safu moja.
Lakini tofauti ni nini got us katika matatizo.
Sawa.
Kwa hiyo, lazima ni kuwa ya kipekee?
Hapana Nakala Full haina kujisikia husika.
Kama sisi alisema kuwa kabla ya ni
kwa kama substring vinavyolingana kwa maelezo.
Basi nini kuhusu index?
Naam, index pengine ni mgombea wetu bora
ambayo anasema MySQL optimize kwa ajili ya utafutaji juu ya hili
au basi mimi kufafanua, kuongeza kwa ajili ya utafutaji au kujiunga na
kama tutaweza kuona katika muda tu
hivyo kwamba wao ni ufanisi zaidi kidogo
kuliko kitu chochote rena linear.
Je, nataka auto nyongeza hili?
Hivyo, kwa sababu kweli mzazi hiki ipo
katika meza kozi.
Hiyo ambapo ni kwenda kupata plus,
pamoja na wakati ni kweli kuingizwa.
Hapa, hii yote ni kwenda kuwa manually kuingizwa
na sisi labda katika kanuni.
Basi hebu tu kutaja kwamba wote bila shaka ID
na mwalimu ID na bahati.
Sasa tutaweza kwenda mbele na kuokoa.
Na sasa, tu kuonyesha ninyi mawasiliano
kati ya nini ni nzuri GUI kirafiki
na amri line interface.
Hebu kwenda mbele na kufanya zifuatazo wakati huu MySQL haraka.
Mimi nina kwenda kusema matumizi courses50
ambayo ni jina holela Mimi alimpa database hii.
Na sasa, mimi hata kumbuka sisi alivyofanya.
Hivyo basi mimi aina meza show
na kwa ujumla semicolons utakuwa rafiki yako hapa
kumaliza swala.
Na huko ni.
Hivyo hapa ni safu au tuseme meza kwamba sisi hapa.
Sasa, mimi kusahau kile Bila shaka inaonekana kama,
hivyo basi mimi wala kuelezea kozi na sasa naona aina ya ASCII
au toleo la nini phpMyAdmin alikuwa akifanya
na mimi kuona kwamba ID ni int.
Kuna ni kwamba 10.
Hiyo ina maana gani?
Hiyo ina maana tu kwamba wakati ni kuonyeshwa ni kwenda kuchukua
na wahusika 10 juu ya terminal dirisha.
Je, ni nullable?
No Hii ni muhimu ya msingi.
Yanaweza kuwa na thamani default?
No Na ziada ambayo ni maalum bendera kama auto nyongeza.
Hivyo basi tu kufanya wanandoa insertions ya haraka hapa.
Mimi nina kwenda up kwa - hebu sema tu.
Hebu mabadiliko ya hali ya slide
ambapo mimi aina ya kabla ya kuandaa hii.
Huu ni muhtasari kisha ya yote matatu ya meza hizo.
Mimi tayari tu manually typed amri ya kwanza.
Na hapa, nilikwenda mbele na aina wengine kwa ajili yenu.
Hii ni Stylistic kitu.
Kwa ujumla, mengi ya watu aina kauli SQL katika mechi zote
na kisha majina meza na majina shamba katika kesi ya chini,
kama tu kwa sababu aina ya anasimama
nini ni maneno yako na nini database syntax.
Kwa hiyo hapa tuna tatu meza, kozi, walimu,
na kozi walimu.
Katika slide mimi kufanywa katika mapema, Sikuwa na shamba ID
lakini kwamba si kweli kitu mbaya wakati wote.
Tunataka kuona tu safu ya tatu huko.
Alikuwa na mimi kufanyika kwamba hapa?
Hivyo sasa napenda kupendekeza kwamba sisi kufanya rundo la insertions.
Hivyo hapa ni baadhi ya data, Mimi itabidi zoom in
Hivyo nina kwenda kwa kupendekeza kwamba katika kozi,
sisi tu kuhusika na kozi tatu.
Na mimi waliamua hizi tatu 'Sababu wao ni mwakilishi
baadhi ya nice - wao na baadhi nzuri mali.
CS1, CS50, CS51, wao na kuongeza vitambulisho
lakini nini ID ni nini ni kabisa lisilo na maana.
Hiyo tu utaratibu ambao walikuwa auto kuingizwa na mimi.
Vipi kuhusu walimu?
Basi sasa, kwa sababu Henry Leitner kuwafundisha wote CS1 na CS51,
hii ni aina ya muafaka maana kwa ajili ya kubuni yetu.
Na Jesse kuwafundisha CS51 na Malan kuwafundisha CS50.
Hivyo sasa - au tuseme haya ni tu wale watu wa kipekee vitambulisho.
Na kozi na walimu, - walimu Bila shaka, taarifa hapa.
Bila shaka ID1, ambayo ilikuwa CS1 ni kufundisha
na mwalimu ID1 ambao ni Henry.
Bila shaka ID2, ambayo mimi kufikiri ilikuwa CS50 ni kufundisha
na mwalimu ID2, ambayo ni Malan.
Na kisha mwisho, CS51, na taarifa tuna safu mbili.
Na sasa hii ni kwa nini the kujiunga na meza ni nguvu ni kufundisha
na wote Henry na Jesse.
Hivyo hii ni wote faini na nzuri,
lakini siwezi vigumu kumbuka mbali juu
ya kichwa yangu nani ni nani hapa.
Jinsi gani unaweza uwezekano kukabiliana na kwamba katika kanuni,
bila ya kuwa na ngumu code mambo?
Naam, hii ni ambapo SQL yenyewe kuanza kuwa rafiki yetu.
Na mimi nina kwenda kupendekeza kwamba tunaweza aina zifuatazo.
Mimi itabidi kufanya hili katika halisi haraka.
Hebu kwenda mbele na kuingiza mambo haya.
Hivyo, katika kozi meza hebu nini hasa tulikuwa
wakati iliyopita.
Mimi nina kwenda mbele na kusema, hebu kuingiza CS1 na CS50.
Hebu kuingiza chache zaidi safu mara moja, CS51.
Sasa, napenda kwenda mbele na kuokoa.
Haki ya wote, hivyo mimi nina tu recreating haraka
kama naweza mahusiano sisi tu kuona kwenye screen.
Na hivyo katika hapa tuna Leitner, hapa tuna Malan.
Hebu kutoa wenyewe mstari mwingine, na Tov.
Sasa basi mimi kuokoa hii.
Na mimi nina kufanya nao kwa makusudi ndani ya utaratibu huo.
No, I forgot kutoa hii ya nyongeza magari.
Hebu haraka kurekebisha hii.
Mimi itabidi kutatua tatizo hili katika code online.
Kwamba wameshindwa kama kando.
ukweli kwamba mimi hawakuweza kuingiza Leitner na Malan
na Tov wameshindwa, kwa sababu sikuwa na si bayana ID namba ingawa
ni kutarajia moja na mimi alisahau kuangalia auto increment,
ambayo ina maana wote walikuwa by default kupata sifuri.
Lakini hiyo kisha kinyume ambayo mali kwamba tumekuwa maalum.
muhimu ya msingi ilikuwa kukiukwa hivyo hakuwa na hata basi mimi kufanya hivyo.
Hivyo basi mimi kurekebisha hii.
Sasa, hebu nirejee nyuma kwa Kuingiza tab hapa na kutaja
kwamba mimi nataka Leitner, Malan na, moja zaidi mstari, Tov.
Na sasa mwisho, tu moja ambayo ngumu kidogo
kukumbuka ni bila shaka mwalimu.
Hebu kuingiza sasa kwamba Bila shaka ID1 ni mwalimu ID1
hivyo kwamba CS1 na Henry.
Bila shaka ID2 ni mwalimu ID2 ambayo ni CS50 na Malan.
Na zile za mwisho tuna na wasiwasi kuhusu ni bila shaka ID3
ambayo ni CS51, ni kufundisha
na bila shaka mwalimu 1, ambayo ni Henry.
Na tatu kama alivyowafundisha na 3, ambayo ni Tov.
Hivyo hopefully sasa tumekuwa upya hii -
damn it, mimi kitu kimoja.
Bila shaka mwalimu mahitaji auto nyongeza.
Sawa.
Mimi itabidi kufanya hivyo kwa kasi wakati huu, Bila shaka 1, bila shaka 1, 2, 2.
Na sasa mwisho, sisi kufanya CS51 ambayo ina shaka ID3 na Henry.
Na bila shaka ID3 na Jesse.
Hiyo inaonekana ni nzuri.
OK. Basi sasa, hebu kwenda nyuma kwa dirisha terminal.
Basi, ikiwa mimi kuelezea kozi tutaweza kuona hili.
Kama mimi nataka kuona masomo naweza sasa kufanya kuchagua nyota kutoka kozi,
nusu koloni, na sasa tunaona maadili hayo.
Na sasa, kile kingine mimi nataka kufanya?
Kuchagua nyota kutoka walimu, kwamba kama mimi ilivyotarajiwa,
na kuchagua nyota kutoka kozi - Bila shaka kusisitiza mwalimu.
Hivyo ni jinsi gani mimi sasa kujiunga na haya meza?
Hivyo uzuri wa kuwa waliochaguliwa Maadili ID kwa njia hii ni
kwamba kama unadhani kuhusu kuchukua meza bila shaka
na mwalimu meza na kisha kuingiza
katika kati ya hizo mbili katika yako akili mwalimu bila shaka
meza unaweza aina ya line juu ya yote ya nguzo hizi ID
ili kuunganisha yao katika moja kubwa safu kwamba ina kila
wa habari sisi huduma ya juu.
SQL syntax kwa hii si lazima dhahiri,
lakini hebu angalia kama tunaweza kufanya hivyo.
Hivyo kuchagua nyota kutoka kozi,
na kuna njia chache kama tunaweza kufanya hivyo.
Mimi nina kwenda hit Enter tu aina ya muundo mambo nicely,
lakini mshale ni dalili ya upande wa mteja chombo,
ina kitu cha kufanya na SQL yenyewe.
Hivyo kuchagua nyota kutoka kozi.
Mimi nina kwenda sasa kujiunga na kozi meza
juu ya meza bila shaka mwalimu.
Jinsi gani? On shamba iitwayo courses.id ni sawa na bila shaka
kusisitiza mwalimu dot nini jina
ya shamba sambamba hapa kwamba mimi nataka wanandoa.
Siyo ID.
It's - nini, sorry?
>> Kozi ID.
OK, napenda zoom nje.
Lakini nataka kuchukua hatua hii moja zaidi.
Nimekuwa sasa jambo hili meza na hili moja.
Sasa nataka kuvuta guy hii katika vilevile.
Hivyo, basi mimi zaidi kujiunga na jambo hili zima
juu ya mwalimu ya meza juu ya nini?
Bila shaka kusisitiza instructor.instructor id
ni sawa na instructors.id.
Hivyo tunaweza wameandika swala hili kwa njia chache.
utaratibu ambao Nilifanya hivyo si wote muhimu kwamba.
Mimi tu aina ya alifanya hivyo katika mawazo yangu kutoka kushoto kwenda kulia.
Sisi wangefanya hii katika njia chache mbalimbali
lakini kama mimi sasa na nusu koloni na hit Enter,
Taarifa mimi kupata nyuma mpya meza ya muda, matokeo kuweka
hivyo kusema katika orodha ya kusema.
Na je, mimi na katika jambo hili?
Nina juu ya ID, jina, mwingine ID, ambayo ni aina ya utata
kwangu wakati huu, Bila shaka ID,
mwalimu ID, ID, na jina.
Kwa hiyo, mwisho wa siku tuna data hivi sasa.
Naona ya kuwa CS1 ni kufundisha na Leitner, CS51 ni kufundisha
na Leitner na Tov, na CS50 ni kufundishwa na Malan.
Lakini mimi nina wasiwasi kidogo kuhusu utata huu nimekuwa kuundwa.
Nini utata Mimi nina inataja?
Yeah?
[Inaudible Remark]
Kuna nguzo ID tatu.
Ili tuweze kweli ya kutatua tatizo hili na tunakwenda kweli kwenda
kuahirisha kwa mfumo wetu wa hatimaye kutusaidia na hili,
lakini zinageuka kuwa kuna keyword katika SQL aitwaye S,
ambapo unaweza bayana pak, jina jipya kwa ajili ya shamba
ili tuweze kuepuka hili utata kabisa.
Lakini alitambua kwamba kama hatufanyi kushughulikia kwa namna fulani kama kwa
kwamba Keyword au mfumo,
kuna uwezekano wa hii utata kama wewe kujaribu
kupata shamba ID kwa sababu wazi kuna wale
na majina duplicate huko.
Hivyo hii ni kujiunga na nadhani katika macho ya akili yako njia bora ya
kufikiri juu ya ni kweli ni kuchukua mbao mbili,
line yao juu katika njia ambayo unataka.
Na hii ni kinachojulikana ndani kujiunga katika akili
kwamba sisi ni kuchanganya meza hapa.
Kuna aina nyingine ya kujiunga na tupate kukutana
baada ya muda kama nje lawama,
lakini kwa sehemu kubwa hii pengine ni ya kawaida
kwa reconstructing data.
Tumefanya nini sasa ni kwa ujumla kile kinachoitwa
normalizing data yako, ili hakuna kurudia mahali popote
katika meza yako.
Na kwa kurudia, napenda kuwa na maana ya kwamba njia ya kwanza.
Kama sisi alikuwa zilizotajwa Leitner na Tov katika maeneo mbalimbali
katika orodha yako, si kwamba ujumla uamuzi bora
hasa kama jina yao ili kubadili nyongeza au katika kesi
ya ndoa, jina msichana nguvu kubadilika unataka moja tu
mahali kisheria kwa baadhi data thamani kama jina.
Sawa.
Hivyo, kwa kurejea, tulikuwa na maamuzi kubuni chache kufanya
na ndio muhimu zaidi pengine kupunguzwa kwa baadhi
ya uchaguzi haya ya bahati.
Lakini ngoja kumweka nje Kitu kingine moja pia.
Kama mimi kurejea phpMyAdmin,
kipengele moja waweza si kuwa wamekutana kabla ni
yafuatayo.
Kama mimi kwenda kwa mwendo mwalimu, Mimi tayari hakuwa bayana kwamba baadhi
mambo haya na bahati.
Lakini ngoja kwenda muundo tab bila shaka mwalimu.
Hebu bonyeza sasa juu ya Bahati na taarifa zifuatazo.
Mimi zilizoelekezwa hapa kwamba huko ni muhimu msingi
juu ya safu aitwaye ID.
Hii ni kiasi fulani ngumu njia ya kufafanua cardinality
na kadhalika kama akimaanisha ukubwa wa uwanja wa katika bytes.
Lakini sasa mimi pia na mwingine shamba, bila shaka ID, ambayo ni -
Bila shaka ID ambayo inafanywa mapema na ya kipekee, OK.
Nilifanya hivyo moja katika kuendeleza kwa ajili yetu.
Hivyo, kwa nini ni hii - basi mimi tone hii kwa ajili ya majadiliano.
Oh, unajua nini mimi?
OK. Hivyo, awali, moja ya hatari ya kutumia GUI chombo
kama hii, tulipokuwa kujenga hii kujiunga na meza,
Bila shaka mwalimu meza, kukumbuka kwamba mimi fulani
kwamba mimi nataka index juu ya uwanja huu
na index juu ya hili nyingine shamba.
upande wa athari za kuangalia wote wa masanduku ya wale
juu ya screen hiyo ni kwamba phpMyAdmin inferred na kwamba,
kwamba mimi nataka si wawili bahati tofauti,
kwamba mimi nataka kujiunga na index ambayo ni kusaidia tu kwa ujumla
au manufaa zaidi wakati uko kutafuta kwenye si shamba moja
lakini wote wawili wa mashamba hayo.
Na kwamba ni kwa nini tulikuwa yao Conjoin huko
hivyo mimi imeshuka ni sababu ya kuwa ilikuwa si kile mimi nia.
Badala yake, mimi nina kwenda Rudia hii hapa.
Mimi nina kwenda kwa mwendo ID
na chini ya zaidi mimi tu kwenda kusema kuongeza index.
Na mimi nina kwenda chini ya mwalimu ID na kusema kuongeza index.
Na sasa kama sisi bonyeza hapa, Kumbuka hatuna na bahati tatu,
moja ya msingi na kama mimi lengo moja kwa kila
ya funguo wale wa kigeni.
Na mimi simu yake ya kigeni kwa sababu Bila shaka ID katika ramani hii meza
ambayo shamba, tu kuwa wazi, katika meza nyingine.
muhimu msingi aitwaye ID, katika meza aitwaye kozi,
na huo mpango kwa ajili ya mtu mwingine.
Lakini sasa, ni ya kuvutia hila na kwa kweli mbinu.
I just alikwenda mbele na napenda kufanya hivyo kidogo zaidi polepole.
Katika screen huo huo, taarifa inasema Uhusiano maoni hapa.
Mimi bonyeza hii na sasa taarifa mimi kupata kufanya vikwazo chache.
Kwa hiyo, moja ya upsides pia
si tu kwa kutumia conceptually funguo za kigeni na meza nyingine
kama tumekuwa tu juu ya ni kwamba kwa kufafanua index
juu yao unaweza kuwa na database msaada hata wewe zaidi
kuhakikisha uadilifu ya shamba hilo.
Hasa, naweza sasa bayana kupitia kushuka hii
chini ya kwamba shamba bila shaka ID
katika meza hii kwa kweli ramani kwenye courses.id.
Vile vile, mwalimu kusisitiza ID mapped kwa instructors.id.
Sasa, kwa nini hii ni muhimu?
Naam, taarifa, juu ya haki upande wa kile kinachoonekana sasa.
Mimi sasa wanaweza kufundisha database kwamba kama Henry
kwa mfano milele anastaafu na mstari wake kutoweka
kutoka meza ya mwalimu ya kabisa na hivyo kuwa
kuchapa, naweza kupitia hii kuachia mbinu kuhakikisha
kwamba kozi yoyote anafundisha ni tena kuhusishwa na yeye.
Niweze kuwafundisha database kufuta safu
katika hii kinachojulikana kujiunga na meza moja kwa moja kama Henry au kama mtu
kozi ya yake kutoweka.
Sasa, kwa nini hii ni kulazimisha?
Yeah?
[Inaudible Remark]
Wewe tu kufanya hivyo mara moja na muda mrefu, sawa?
Ni rahisi sana kama aina ya watu kuja na kwenda, kozi kuja
na kwenda, Mbegu yako inaweza tu kupata imejaa kozi
na kwa kitivo kwamba hakuna tena husika na kuweka data.
Na data yako kuanza kupata messy sana na chafu na stale,
na hivyo hapa tunaweza kutatua
ya kutekeleza baadhi ya haya vikwazo.
Yeah?
[Inaudible Remark]
Ni anajua kwa njia ya hii.
Hii ni screen ambapo sisi ni kubainisha uhusiano
kati ya muhimu kigeni na muhimu ya msingi.
Basi wote wa kumtaja mikataba mimi alluded
mapema ni mikataba tu.
Hakuna maana ya asili.
Hii ni screen ambayo ni muhimu tu
baada ya wewe maalum bahati juu ya kila moja ya maeneo hayo kama tulivyofanya.
Na kwa dropdown hii tuna mambo machache kwa mfano
Kama kweli ni ilifutwa unaweza kweli kuzuia kwamba kufutwa
kutoka kinachotokea kama kuna ni mfululizo katika meza hii
na kusema tu, Kuzuia.
Kwa maneno mengine Henry hawezi kustaafu
mpaka sisi decouple yake kutoka CS51 na CS1.
Hivyo kwamba ni jambo jema.
Lakini inaweza kusababisha makosa katika kanuni yako
kama huna wanatarajia kwamba, au tunaweza kuwa na kuteleza,
kuteleza sawa na kama karatasi kuachia style
na kuachia maporomoko ya maji ina maana kwamba kama -
kama Henry anastaafu hivyo - kwa kupata ilifutwa
ndivyo mstari wake hapa kupata ilifutwa.
No Action maana chochote au null ni aina ya muhimu kama aina
ya kutaka baadhi rekodi ya kihistoria ya Henry baada ya kuwafundisha CS51,
lakini unataka tu shamba hilo kwa kuwa null ili safu huko
lakini siyo tena kuhusishwa na yeye.
Basi hizi ni nguvu sana mbinu kwamba unaweza
na kutumia hata kama kwa maslahi ya hasa
ya kuokoa kutoka kwa mwenyewe.
Hivyo basi mimi msitaje michache ya maelezo ya mwisho hapa,
viungo na ambayo ambayo inaweza kuwa na manufaa
kama sisi mpango kwa ajili ya kubuni database.
Unaweza pia kuwa na uchaguzi juu ya injini database
kwamba matumizi katika code yako.
Kama wewe ni ukoo ya CS161 waweza -
au hata 61, huenda kwa ujumla kuwa na mazoea na mifumo ya faili.
Na kuna mambo kama, NTFS na HFS +
na X2FS4 [fonetiki] na 3 na kadhalika.
Kuna njia tofauti ya kuhifadhi data juu ya dawati.
Vile vile kuna njia mbalimbali za kuhifadhi data
katika database na default angalau katika Appliance
na toleo la karibuni ya MySQL.
Tumekuwa kutumia injini database kuitwa, NoDB,
ambayo inasaidia chache nzuri makala.
Lakini mtu mwingine kawaida ni pia aitwaye MyiSAM na bado mwingine
ambayo inaweza kuwa matumizi ni Kumbukumbu, ambayo ina maana si kuweka kitu chochote
juu ya disk, tu kuweka mambo katika kumbukumbu.
Kwa sehemu kubwa pengine si kwenda vibaya tu kuanzia
na NoDB, lakini kwa ajili ya miradi yoyote kwamba huwa na kuhusisha viwango vya juu vya
ya kuingizwa kwa mfano, kama mengi ya magogo haraka,
mamia ya mambo kwa pili au maelfu ya mambo.
Wowote na mengi ya mambo kwenda
juu ya katika database kisha aina hii
maamuzi ngazi ya chini kuanza kupata kushiriki.
full Nakala kipengele kwa mfano kazi tu katika MyiSAM
ili ina maana.
Lakini unaweza kukumbuka hii, hebu angalau kuwahamasisha kwa nini sisi huduma
kuhusu NoDB hasa.
hali ya mbio kwa ujumla inahusu nini?
Haki zote, hii ni dokezo kwa mfano baadhi
ya unaweza kuwa na habari katika kipindi cha miaka kama 161 au 50
ambapo una roommate, zote za kweli kama maziwa,
mmoja wenu anapata nyumbani kwanza kufungua fridge hakuna maziwa,
karibu fridge kutembea katika mitaa kwa CVS na kupata
katika line kununua baadhi ya maziwa.
Wakati huo huo, roommate yako anakuja nyuma hapa.
Yeye pia anapenda maziwa.
Kufungua friji na anatambua hakuna maziwa.
Hapa yeye basi huenda kwa kuhifadhi, labda CVS nyingine.
Dakika ya kufunga mbele chache baadaye kurudi na sasa wote
wenu kununuliwa maziwa.
Mmoja wao sasa ni kwenda nyara kwa sababu huna
kama maziwa mengi na hili ni tatizo, sawa?
Kwa sababu wote wewe kukaguliwa hali ya baadhi ya kutofautiana
na alifanya uamuzi wa msingi juu yake hata kama hali
ya kwamba variable kimsingi katika mchakato wa iliyopita,
wote kuwa ni polepole juu ya kiasi cha muda inachukua
kupata na kutoka CVS.
Hivyo ni aina gani ya kijinga kweli ufumbuzi wa tatizo kwamba dunia?
Kuondoka kumbuka, sawa?
Ni kilichotokea wakati wa mwisho.
Daima kuondoka kumbuka au kufuli kitu halisi.
Na mimi kusema kufuli, kwa sababu kama wewe kufanya kuchukua au alichukua CS161,
locking ni ya msingi wazo katika aina hiyo ya dunia.
Hivyo hali ya mbio yanaweza kutokea pia katika dunia database
na unaweza kukumbuka labda kutoka CS50 fedha kama wewe alichukua 50,
kanuni hii kwamba sisi kweli alitoa nyie katika vipimo
kwa wakati ili yako kazi ni hivyo kuitwa atomic.
Kama alitaka, katika hii kesi, kununua sehemu ya hisa
na kwamba hisa ina baadhi ishara fulani.
Tunaambiwa kutumia code kama hii, kwa sababu kwa njia ya hii
juu ya duplicate muhimu update syntax, ambayo ni kujengwa
ndani ya MySQL uko kwa ufanisi kufanya aidha katika kuingiza
au katika update baada ya kufanya kuchagua kuona
kama hisa tayari ni huko.
Kwa maneno mengine, Analog katika ulimwengu wa kununua hisa
ya maziwa na jokofu inaweza kuwa, kwanza,
kabla ya kununua sehemu ya Google unaweza kutaka kuchagua
kutoka orodha ya yote ya hisa za Google kwamba Daudi anamiliki
ili kuona kama yeye anamiliki zero au zaidi.
Mara baada ya kuona kama yeye anamiliki zero au zaidi na
na kisha kufanya yafuatayo.
Wewe ama na kufanya kuingiza
kama yeye mwenyewe zero 'sababu hakuna mstari kwa ajili ya David bado,
au una kufanya update kama angalau katika nadharia unataka
kuwa na safu moja kwa mtumiaji.
tatizo ni kuchagua kwamba idadi ya hisa
na kisha kuongezea au inserting inaweza kuwa kuingiliwa
na mtu mwingine katika mwingine terminal kompyuta kujaribu kununua
au kuuza baadhi ya Daudi hisa za hifadhi kama
kwa ajili ya mema au aina madhumuni mbaya.
Ni kama kwenda dukani wakati roommate yako anapata nyuma
na hundi ya hali ya kutofautiana.
Hivyo syntax hii wakati ambayo ilikuwa ni aina ya sahihi
kwa CS50, inazuia kwamba tatizo kabisa.
Na tu haina yote ya uchawi ya kuifungia kwa ajili yenu,
lakini sasa na aina hii ya miradi kwa ajili ya kozi hii
ambayo zaidi uwezekano wa mapenzi kuhusisha seti ngumu zaidi data,
huwezi kufikia daima atomicity hii.
Kila kitu kinachotokea mara moja au si wakati wote
bila usumbufu hivyo elegantly.
Na hivyo MySQL, mwingine injini database,
msaada mambo kuitwa kufuli,
ambapo unaweza kusema lock hii meza ili kutibu moja tu
na kwa ujumla tu moja mtumiaji anaweza kugusa katika hatua yoyote katika wakati
kusoma na kuandika na basi unaweza kufungua hiyo.
Huu ni mfano kutoka kwa mmoja ya MySQL ya marejeo mwenyewe,
ambapo kama una kama benki akaunti kwamba wewe ni kujaribu
dra fedha kutoka na kisha kuongeza fedha kwa.
Unaweza kutaka kuhakikisha kwamba wote
mambo hayo kutokea pamoja
hivyo kwamba hakuna makosa ya hisabati
na hakuna mtu hasara fedha, kwa namna fulani.
tatizo na kufuli ingawa katika orodha ya ni
kwamba kwa ujumla maana yake meza nzima imefungwa,
ambayo ina maana kama una watu mia kujaribu
kufanya biashara na benki yako online katika kiasi hicho
ya mara moja tu ya wao wanaweza kwenda kwa wakati.
Ambayo ni ya kijinga, hasa kwenye seva siku hizi
kuwa na shaka nane, 16 Bila shaka, na kiasi kikubwa
ya kumbukumbu, hakuna sababu ya huchapishwa wote
wa shughuli yako kama wale wateja ni kwenda tu
kwa kushirikiana na safu yao wenyewe.
Hivyo NoDB inaruhusu kufanya mambo zaidi akili
na hii kwa ujumla kuwa mbinu kuchukua katika kanuni,
kama wewe kutumia kitu aitwaye manunuzi.
Na kufanya hivyo kwa ujumla katika PHP code,
Ruby code, Python, chochote.
Lakini code SQL kwamba hatimaye kutumika ni hii,
kawaida.
Kuanza shughuli basi bayana maswali mbili au zaidi
kwamba unataka kutekeleza kabisa
bila usumbufu au si wakati wote.
Kuna inaweza hata kuwa baadhi kuchagua kauli katika
au baadhi ya ufutaji au updates.
Lakini jambo zuri ni kwamba database itakuwa smart kutosha
kuhakikisha kwamba itakuwa tu kufuli safu wao ni kweli
kushiriki katika updates hii au kuchagua au ufutaji.
Hivyo kama wewe got maelfu ya safu na wewe tu kugusa tatu
yao, kwamba tu subset ya meza itakuwa imefungwa
ambayo ina maana hizo nyingine 99 wateja wanaweza kugusa safu yao
bila kuwa huchapishwa na kasi na wewe.
Wakati huo huo, hii ni nicest kipengele kwa mashirikiano.
Wao ni shughuli katika kuhisi kama 161 juu ya mfumo wa faili,
wao ni wa kikazi
ambayo ina maana unaweza unaendelea yao nyuma, unaweza tengua yao.
Hii ni kama amri au kudhibiti F ya database.
Kama wewe kugundua sehemu njia zote
ya kazi yako mbalimbali data, risasi, kitu kwenda vibaya.
Wewe literally kutekeleza mbalimbali SQL swala roll nyuma
na yote haya mwenendo - wote wa taarifa yenu kunyongwa
baada ya kusema kuanza shughuli kutoweka
kana kwamba kamwe kilichotokea,
ambayo ni ya kushangaza nguvu kitu.
Na hawa ni aina ya Mambo yote bila shaka katika 50 sisi aina
ya kufagia chini ya rug na wewe tu aina ya kudhani
kwamba yote itakuwa vizuri.
Lakini mara moja kuanza kufikiri juu ya miradi halisi
na watumiaji halisi na uadilifu wa database yako,
hizi ni aina maamuzi ya kubuni
kwamba ni kwenda kuwa muhimu.