[MIZIK jwe] DAVID Malan: Tout dwa, sa a se CS50. Sa a se nan fen semèn uit. Ak jodi a, nou kòmanse ranpli nan kèk moso lè li rive bilding bagay sa yo sou entènèt la. Se konsa, sonje ke nan Lendi nou depanse yon tan anpil plis sou PHP, ki se dinamik sa a lang programmation ki pèmèt nou pwodiksyon, nan mitan lòt bagay sa yo, HTML ak lòt kontni sa yo ke nou pral vle wè. Men, nou pa te reyèlman gade nan ki jan nou ap ale nan magazen nenpòt enfòmasyon. Vreman vre, prèske nenpòt nan sa a super sit enteresan ou vizite jodi a gen kèk kalite baz done sou fen a tounen, dwa? Facebook sètènman magazen anpil nan done sou tout moun nan nou ak Gmail magazen tout nan Imèl ou yo. Se konsa, anpil lòt sit yo pa sèlman kontni estatik sa a, se enfòmasyonèl. Li nan aktyèlman dinamik nan kèk fason. Ou bay opinyon, li dènye nouvèl paj sa yo pou lòt moun. Ou jwenn mesaj, ou voye mesaj, ak pou fè. Se konsa, jodi a, nou gade pi pre nan fondman yo nan yon pwojè ke ou pral plonje nan pwochen semèn, CS50 Finans, ki se aktyèlman pral gen ou bati yon bagay ki pa nan C, men nan PHP. Yon sit wèb ki sanble yon ti kras yon bagay tankou sa ki pèmèt yo achte ak vann aksyon ki yo aktyèlman ale nan trase sou tan reyèl done stock soti nan Yahoo Finans. Se konsa, finalman, ou pral gen nan ilizyon pou tèt ou ak pou itilizatè ke w ap aktyèlman achte ak vann aksyon ak ap resevwa tan prèske reyèl dènye nouvèl yo, jere yon dosye pou yo, tout nan yo ki ki pral mande pou gen, finalman, yon baz done nan itilizatè. Se konsa, nan pwòp mo ou, espesyalman si w ap pa super abitye avèk òdinatè syans oswa baz done, ki sa èske w konnen yon baz done yo dwe kounye a, an tèm nontechnical? Kisa li ye? Kouman ou ta dekri li nan yon kolokasyon oswa yon zanmi? ODYANS: [fèbl] enfòmasyon [fèbl] DAVID Malan: Se konsa, yon lis ki gen enfòmasyon, oswa yon store-- yon lis enfòmasyon ke ou ta ka vle nan magazen sou yon bagay, tankou yon itilizatè. Ak sa ki fè itilizatè yo gen ki asosye avèk yo? Si ou se yon itilizatè sou Facebook oswa Gmail, ki sa yo karakteristik sa yo ki tout moun nan nou itilizatè yo gen? Tankou, sa ki ka gen kèk nan la kolòn nan calcul a nan ki nou mansyone dènye fwa? Paske ankò, ou kapab panse a yon baz done reyèlman kòm yon anpenpan Excel dosye oswa Google Feuy oswa Apple Numbers dosye-a. Se konsa, sa ou panse nan lè ou panse a yon itilizatè? Ki sa yo genyen? Ki sa ki nan sa? ODYANS: Yon non. DAVID Malan: Yon non. Se konsa, si non, tankou, David Malan ta dwe non an nan kèk itilizatè. Ki lòt bagay yon itilizatè genyen? ODYANS: Yon ID. DAVID Malan: Yon ID. Se konsa, tankou yon nimewo ID, tankou Harvard ou ID oswa Yale Net ID ou a oswa renmen an. Ki lòt bagay yon itilizatè ta ka genyen? ODYANS: Modpas. DAVID Malan: Yon modpas, petèt yon adrès, petèt yon nimewo telefòn, petèt yon adrès imel. Se konsa, gen nan grap nan jaden ak sa a te kapab sòt de espiral soti nan kontwòl byen vit ke pli vit ke ou kòmanse ka akonpli, o, se pou yo magazen sa a e kite yo magazen sa a epi sa. Men, ki jan nou aktyèlman fè sa? Se konsa, ankò, modèl la mantal gen pou jodi a kòm nou plonje nan aktyèl SQL, Estriktire rekèt Lang, se yon baz done ki sanble tankou sa a. Se jis ranje ak kolòn. Epi ou ka imajine Google tableur oswa nenpòt ki kantite lòt pwogram yo. Men, sa ki nan kle sou miskl, ki se nan lojisyèl baz done nou ap ale nan sèvi ak, lib ouvètman nan available-- Facebook itilizasyon li ak nenpòt kantite lòt websites-- baz done estoke bagay re- lasyon. Apre sa, yon baz done relasyon jis vle di youn ki literalman magazen done li yo nan ranje ak kolòn. Li nan kòm senp tankou sa. Se konsa, menm yon bagay tankou Oracle ki ou ka gen tande pale de jeneralman se yon baz done relasyon. Apre sa, anba kapo a, li magazen done nan ranje ak kolòn. Apre sa, Oracle chaje ou yon anpil lajan fè sa, Lè nou konsidere ke miskl chaj ou pa gen anyen pou menm bagay la. Se konsa, SQL ki pral ban nou nan omwen kat operasyon yo. Kapasite nan chwazi done, tankou lecture done, insert, efase, ak done aktyalizasyon. Nan lòt mo, sa yo se reyèlman kat operasyon yo kle ke yo pral pèmèt nou chanje bagay nan sa yo ranje ak kolòn. Zouti a ke nou pral sèvi ak jodi a espesyalman yo aprann SQL ak yo jwe ak li se ankò rele PHP MyAdmin. Li nan entènèt zouti ki baze sou. Total konyensidans ki li nan ekri nan PHP. Men, li k ap pase yo ban nou yon grafik koòdone itilizatè pou ke nou kapab aktyèlman kreye ranje sa yo ak kolòn ak Lè sa a pale ak yo via kòd. Se konsa, kite a kounye a kòmanse ki sa mwen panse ki franchman kalite pwosesis la plezi nan bati fen a tounen nan sit entènèt, pati pyès sa yo ke itilizatè pa fè sa wè, men siman fè swen sou, paske se sa olye done a prale. Se konsa, menm jan ak C ak yon ti kras mwens tankou PHP, SQL, oswa yon baz done ki sipòte SQL, gen omwen done sa yo kalite ak grap rezen lòt moun. CHAR, Varchar, INT, bigen, Desimal, ak dattim. Apre sa, nan yon antye pakèt moun sou lòt karakteristik, men kite a fè sa a pa fason pou aktyèl egzanp. Mwen pral ale nan CS50 IDE kote, an avanse, mwen te louvri sesyon an ak mwen te tou te vizite yon URL pou zouti sa a yo rele PHP MyAdmin. Ak nan pwoblèm mete sèt, nou pral di ou egzakteman ki jan pou li ale nan koòdone sa a kòm byen. Sou kwen an tèt men gòch, remake li di konferans. Epi sa jis vle di ke an avanse, mwen te kreye yon baz done yo rele konferans vid ki pa gen okenn Des nan li ankò. Gen nan pa gen ranje ak kolòn. Paske premye nan bagay nou ap ale nan fè se kòmanse yo kreye yon tab ki k ap pase nan magazen itilizatè nou an. Se konsa, literalman sou isit la a dwat la, mwen se pral di baz done a Mwen vle yon tab rele Itilizatè yo. Se konsa, sa a, se tankou dosye a ke mwen vle nan magazen tout done mwen an. Ak konbyen kolòn? Oke, kite la kenbe li senp pou kounye a. Mwen jis vle nan magazen tankou yon non itilizatè ak yon non pou yon itilizatè. Nou pral kòmanse piti. Se konsa, mwen vle de kolòn total. Apre sa, mwen pral ale pi devan epi klike sou Ale. Apre sa, lè sa a, pou sa yo kolòn, ki sa mwen pral do-- si sa a entènèt cooperates-- tout dwa, se konsa nou ap ale nan eseye sa ankò. Mwen pral yo kreye yon tab rele Itilizatè yo ak de kolòn, klike sou Ale, OK. Koulye a, nou te gen li vrèman vit. Mèsi poutèt ou, trè byen fè. Tout dwa, Se konsa, sa fè nou vle kolòn sa yo yo dwe rele? Se konsa, yon sèl k ap pase yo dwe rele Username. Se konsa, tout mwen wè isit lan-- ak koòdone nan franchman vin yon ti kras lèd evantyèlman, yon fwa ou kòmanse sezisman nan tout done sa a. Men, sa ki nan bèl se ke sòt de paradoksal, mwen kreye kolòn, men zouti an gen tankou moun fou mete yo atè nan ranje pou m 'ka configured kolòn sa yo. Se konsa, gen nan de espas vid kanpe anba Non. Ak youn nan jaden yo sa yo mwen vle rele Username, ak jaden nan lòt mwen vle rele Non. Epi kounyeya, m gen yo chwazi kalite done pou bagay sa yo. Se konsa, Lè nou konsidere ke nan Excel ak Google tableur, si ou vle yon kolòn, ou literalman jis tape Non oubyen non itilizatè, frape Antre nan. Petèt ou fè l 'fè fas fonse jis pou clarté, men sa a li. Ou pa presize nan kalite kolòn yo. Koulye a, nan Google tableur oswa Excel, ou ta ka presize ki jan done a ap founi. Ou te kapab ale nan meni an Fòma, epi ou ka presize montre sa a siy dola tankou, montre sa a tankou se yon valè k ap flote pwen. Se konsa, li nan menm jan an nan Lespri Bondye a ke sa nou ap sou yo fè, men sa a se aktyèlman pral fòse done yo yo dwe yon kalite sèten. Koulye a, menm si yon ti moman de sa mwen di gen nan kalite done sèlman yon kèk, gen nan aktyèlman yon antye anpil, e yo ap nan diferan degre nan espesifik. Apre sa, kòm yon sou kote, ou ka menm fè bagay sa yo anpenpan tankou jeyometri depo andedan nan yon baz done. Ou ka magazen bagay sa yo tankou GPS kowòdone ak aktyèlman jwenn, matematik, pwen ki fèmen nan lòt moun. Men, nou ap ale nan kenbe sa a super senp epi ale jiska isit la, tout nan sa yo rele kalite mouvman yo fisèl. Se konsa, isit la nan yon lis ki gen yon pakèt antye nan opsyon. CHAR, Varchar, TINYTEXT, MEDIUMTEXT, LONGTEXT. Lè li nan kalite akablan yo. Apre sa, malerezman, yon ti jan paradoksal nan C, yon CHAR se pa reyèlman yon CHAR. Si ou presize nan yon baz done ki kalite done ou se CHAR, sa vle di ke repons lan se wi, li nan yon CHAR, men li la youn oswa plis charaktèr. Epi ou gen ou presize konbyen charaktèr ou vle. Se konsa, sa ki nan yon tipik longè pou yon non itilizatè? Èske gen yon limit tipikman? ODYANS: [fèbl] DAVID Malan: 16 petèt? Yon bagay tankou sa. Ou konnen, li tounen nan nan jou, li itilize yo dwe uit. Pafwa li nan 16, pafwa li nan menm plis pase sa. Se konsa, sa a pa fè sa vle di, ban m 'yon sèl CHAR. Sa vle di mwen gen ou presize longè a nan jaden an, e kounye a, mwen ta ka di yon bagay tankou 16. Apre sa, nan yon komès nan isit la. Se konsa, nou pral wè nan yon ti moman ke sa a vle di yon sèl, chak non itilizatè gen yo dwe 16 karaktè. Men, rete tann yon minit, M-A-L-A-N. Si sa a non itilizatè mwen an ak mwen sèlman lè l sèvi avèk senk, ki sa ou ta pwopoze ke baz done a fè pou 11 karaktè yo lòt ki Mwen te rezève espas pou? Kisa ou tap fe? ODYANS: [fèbl] DAVID Malan: Yeah, jis fè yo tout nil. Fè yo espas. Men, pwobableman nil, se konsa yon anpil nan zewo antislach. Se konsa, sou yon bò, nou te kounye a te fè asire w ke non itilizatè mwen an ka gen plis pase 16 karaktè. Apre sa, bò la baskile nan ki se ke si mwen te gen yon non reyèlman long oswa te vle yon reyèlman long non itilizatè tankou kèk nan nou mesye ta ka gen nan ki kolèj oswa a Yale.edu, ou pa ka gen youn. Se konsa, an reyalite, si ou te tout tan tout tan anrejistre pou yon sit entènèt epi ou jwenn rele nan di modpas ou a twò long oubyen non itilizatè ou an twò lontan, li nan tou senpleman paske yon pwogramè, lè konfigirasyon baz done li, deside ke Jaden sa a pral pa gen okenn pi lontan pase sa a longè. Tout dwa, se konsa sa ki si nou kontinye nan non? Konbyen tan yo ta dwe yon Non tipik imen an ta dwe ye? Karaktè Konbyen, 16? Mwen devine nou te kapab jwenn yon moun nan sal sa a kote pa li oswa li premye plis pase non se pi long pase 16 karaktè. Se konsa, sa ki nan pi bon pase sa, 17? 18? 25? Pi gwo? 30? ODYANS: [fèbl] DAVID Malan: 5,000, o Bondye mwen an. Se konsa, sa a, se pwobableman yon desan anwo mare, va nou di. Ak isit la nou gen kalite fè yon apèl jijman. Tankou, gen nan pa gen repons isit la menm. Enfini se pa byen posib, paske nou ap evantyèlman ale nan en-nou ap ale nan kouri soti nan memwa. Se konsa, nou gen fè yon apèl jijman nan kèk pwen. Trè komen ta dwe, pou egzanp, use-- ak kite m 'presize CHAR isit la kòm fè anvan 255 te literalman nan limit anwo sou sa a baz done lojisyèl ane de sa. Se konsa, yon anpil nan moun ta jis di, amann. 255 nan limit la. Se pou nou jis itilize maksimòm la. Lè sa a se trè ridikil. Tankou, si w ap tape yon moun nan non pou 200 karaktè plis, ki yon ti kras ridikil. Men, sonje ke ASCII se pa sistèm la sèlman pou karaktè. Se konsa, espesyalman nan yon anpil nan lang Azyatik kote gen nan karaktè nou pa kapab eksprime sou Klavye tankou Etazini mwen entènèt klavye, kèk karaktè aktyèlman Leve kanpe, pran 16 Bits olye pou yo uit miyèt moso. Se konsa, sa a aktyèlman se pa tout sa ki rezonab ke nou bezwen plis espas si nou vle anfòm pi gwo karaktè pase US la anpil yo menm santre nou te te gen tandans yo diskite sou. Se konsa, nou bezwen kèk anwo mare. Mwen pa konnen sa youn nan pi bon se, men 255 se jeneralman yon yon sèl komen. 25 santi l ki ba. 16, 32 santi ki ba. Mwen ta pèdi tèt sou bò nan yon bagay ki pi wo. Men, gen nan yon komès koupe, kòm toujou. Ki sa ki se, petèt, evidan an komès koupe nan rezève 255 charaktèr pou non tout moun nan nan baz done mwen an? ODYANS: [fèbl] DAVID Malan: Ki sa ki nan sa? ODYANS: [fèbl] DAVID Malan: Li se yon anpil nan memwa, dwa? M-A-L-A-N. Mwen fèk gaspiye 250 karaktè jis nan magazen non mwen pridans, jis nan ka yon moun nan klas la gen yon non vrèman long. Sa sanble tankou yon arbitraj soufwans. Se konsa, li sanble ke SQL, sa a ak lang baz done, aktyèlman sipòte yon bagay rele varchar, oswa Varyab CHAR. Lè sa a se kalite bèl nan ke sa a pèmèt ou presize pa yon fiks lajè, men pito, yon lajè varyab. Ak plis espesyalman, se yon lajè maksimòm de jaden an. Se konsa, sa vle di ke yon non kapab pa gen okenn plis pase 250 karaktè, men li ka sètènman se mwens. Apre sa, baz done a a pwal entelijan. Si ou mete nan M-A-L-A-N, li nan sèlman ale nan sèvi ak senk, petèt sis bytes pou tankou yon fin pèsonaj nil, epi yo pa depanse yon lòt 249 oswa 250 bytes san nesesite. Se konsa, sa a sanble tankou mwen ta dwe te te kòmanse avèk istwa sa a. Men, gen nan toujou yon arbitraj. Se konsa, sou yon bò, yon non itilizatè mwen te espesifye yo dwe difisil kode nan 16, e petèt ki pa t ' rele nan dwa, petèt li se, men poukisa yo pa sèvi ak VARCHARs pou tout bagay? Li egziste pou yon rezon. Poukisa nou pa sèvi ak pou chak jaden VARCHARs ki gen longè ou pa konnen an avanse si li sanble ap yon gwo bagay, dwa? Sèvi ak sèlman kòm anpil espas kòm ou bezwen jiska limit sa a? ODYANS: pi dousman. DAVID Malan: ortograf? ODYANS: Fè li pi dousman? DAVID Malan: Oh, li nan pi dousman. Bon, sa a, se prèske toujou repons lan, franchman. Tankou, sa ki nan arbitraj la? Li swa koute plis espas oswa li te koute plis tan. Se konsa, nan ka sa a, li ta kapab pi dousman. Poukisa? ODYANS: [fèbl] pou detèmine si [fèbl]. DAVID Malan: Bon. Se konsa, ou ta ka sonje soti nan menm PSED5, ap jwe ak apwòch ou diksyonè a, si ou gen asiyen memwa dynamique oswa kenbe ap grandi yon zòn de defans, ki ka aktyèlman ap ralanti. Si ou gen yo rele malok anba kapo a ak petèt se sa ki miskl ap fè, se konsa siman ki te kapab ka a. Men, si ou panse fason tounen nan PSet-- oswa menm semèn de, lè nou te fè bagay sa yo tankou rechèch binè oswa menm rechèch lineyè, youn nan bagay ki bèl sou tout pawòl nan yon baz done oswa chak mo nan yon kolòn ke yo te egzakteman menm longè a, menm si yon pakèt antye nan karaktè moun se vid, se ke ou ka itilize aksè o aza sou done ou a, dwa? Si ou konnen ke chak mo se 16 karaktè ale, ou ka itilize konsèy aritmetik, se konsa yo pale, epi ale nan nou 16, 32, 48, 64, epi ou ka jis Ale imedyatman lè l sèvi avèk aritmetik nan nenpòt nan mo sa yo nan baz done ou yo. Lè nou konsidere ke si li nan yon Varchar, sa ou olye pou dwe fè? [TELEFÒN k ap sonnen] Si li nan yon varchar, ou pa ka sèvi ak aksè o aza. Ki sa ou gen gade pou oswa fè? Yeah? ODYANS: [fèbl] DAVID Malan: Gade a tras nan whole-- nan lis la tout antye kap chèche sa, gen plis chans? Ki kalite ki gen valè espesyal? ODYANS: [fèbl] DAVID Malan: Looking pou tèrminateur yo nil ki delimiter separasyon an nan mo yo. Se konsa, ankò, se yon arbitraj, ak gen nan pa gen repons dwat. Men, sa a se kote, espesyalman lè itilizatè ou jwenn yo dwe anpil ak chaj ou sou serveurs ou, nan kantite moun ki lè l sèvi avèk li vin segondè, sa yo, se aktyèlman desizyon nontrivial. Se konsa, nou ka kite sa yo kòm sa a, men se pou yo desann sou a dwat a isit la. Koulye a, gen nan yon koup la kolòn kote nou gen fè yon apèl jijman. Èske li fè sans yo ki pèmèt yon itilizatè a non, non itilizatè yon itilizatè a oswa yon itilizatè a Non, yo dwe nil? Sa se, jis vid. Santi l yon ti kras absurde, se konsa mwen pa ale nan tcheke sa yo bwat. Men, li vire soti nan yon baz done, ou ka di, yon moun ka opsyonèlman gen valè sa a. Kolòn sa pa gen ki aktyèlman dwe la. Koulye a, gen nan sa a gout desann meni. Apre sa, remake mwen toujou nan premye ranje a la, Se konsa, mwen ap pale de non itilizatè kounye a. Epi li vire soti ke yon baz done, kontrèman ak yon calcul senp sèlman, gen karakteristik pwisan rele endis. Apre sa, yon endèks se yon fason pou di a baz done nan avanse ke mwen moun nan menm pi entelijan pase ou. Mwen konnen ki kalite demann, chwazi oswa Insert ou efase oswa aktyalizasyon, ke kòd m 'ki pral nan fen moute fè sou baz done sa a. Mwen vle li yon anpil nan done. Mwen vle insert yon anpil nan done. Mwen vle toujou ap efase yon anpil nan done. Si m 'konnen ke mwen pral yo dwe aksè yon jaden tankou non itilizatè yon anpil, Mwen kapab di nan preemptively baz done, mwen konnen plis pase ou, e mwen vle dekrè ki ou ta dwe jaden sa a endèks. Ki kote Indexing yon jaden oswa yon kolòn vle di ke baz done a nan avanse ta dwe prete kèk ide ki soti nan, tankou, semèn kat ak senk ak sis soti nan CS50 ak aktyèlman bati yon bagay tankou yon rechèch binè pye bwa oswa yon bagay jeneralman yo te rele yon pyebwa B ke ou ta aprann nan yon klas tankou CS124 nan Harvard, yon klas algoritm, oswa nenpòt ki kantite lòt kote. Baz done a e pou l entelijan a moun ki aplike li pral konnen ki jan nan magazen ki tab nan enfòmasyon nan memwa se konsa ke fouy ak operasyon lòt yo se super vit. Ou pa oblije fè li. Ou pa oblije aplike rechèch lineyè oswa rechèch binè oswa rantre sòt oswa seleksyon sòt, nenpòt nan sa. Baz done a fè li pou ou si ou di li preemptively nan endèks sa a jaden. Epi ou ka wè tou, gen nan kèk lòt karakteristik nou ka di baz done a aplike. Ki sa ki ta sa vle di si mwen chwazi inik soti nan meni sa a, jis entwitif? Yeah? ODYANS: [fèbl] DAVID Malan: Yeah, nan non itilizatè gen yo dwe inik. Èske sa se yon bon bagay oswa yon move bagay pou yon baz done, pou yon sit entènèt ak itilizatè? Ta dwe usernames dwe inik? Yeah, pwobableman. Si se sa ki nan jaden nou itilize ou kapab konekte nan, ou pa reyèlman vle moun ki gen menm santi a oswa menm non itilizatè a. Se konsa, nou ka gen nan baz done ke se konsa aplike ke kounye a nan kòd PHP mwen oswa nenpòt lang, Mwen pa gen, pou egzanp, tcheke nesesèman fè non itilizatè sa a egziste anvan m 'kite yon moun enskri? Baz done a pa pral kite moun ki yo te rele de David oswa malans enskri nan ka sa a. Apre sa, kòm yon sou kote, menm si sa a meni sèlman pèmèt ou chwazi youn, yon endèks inik se youn sa a, se Catalogue pou pèfòmans super vit, men tou li aplike singularité. Epitou, n ap tounen vin jwenn sa a de lòt vle di nan jis yon moman. Pandan se tan, si mwen ale nan dezyèm ranje mwen an, ki se non itilizatè a la, mwen ta dwe presize ke non a yo ta dwe inik? Non, paske ou ta ka sètènman en-gen nan pa gen de David Malans nan sal sa a, gen plis chans. Men, si nou chwazi yon non diferan, nou ta ka siman gen kolizyon. Panse tounen nan Hash tab ak renmen an. Se konsa, nou sètènman pa vle fè jaden an Non inik. Se konsa, nou ap jis pral kite ke kòm priz, priz, priz, pa gen anyen. Apre sa, mwen pral kite Tout Lòt Bagay pou kont li. Vreman vre, pi fò nan sa yo jaden yo nou pa pral gen yo pran swen sou. Lè mwen se pare pou konsève pou sa a, si entènèt la kolabor, Mwen klike sou Save, ak trè, trè, trè tou dousman baz done a jwenn sove. Epi, koulye a mwen se tounen nan sa a koòdone, ki Byensir, se akablan nan premye gade. Men, tout mwen pral fè se klike sou Itilizatè yo sou pawòl Bondye yo nan tèt kite. Mwen pral ale moute isit la, klike sou Itilizatè yo, ak pa default, li te egzekite kèk SQL, men plis sou sa nan yon moman. Isit la nan jis yon rezime de sa mwen te fè. Epi yo pa enkyete ke ou wè mansyone nan Latin ak Swedish isit la. Moun sa yo ki yo se jis default a anviwònman, paske miskl orijinal, oswa PHP MyAdmin, youn nan de a ki te pase yo dwe ekri pa gen kèk moun ki Swedish. Men, li la petinan nan ka nou an isit la. Tout dwa, Se konsa, poukisa se sa a tout enteresan? Li sanble, mwen ka insert done nan yon baz done pa ekri kòd. Apre sa, mwen ale pi devan epi nan dosye m 'isit la, mwen pral ale pi devan ak pretann tankou sa a se branche ak sa yo ki baz done, ki li se pa nan moman sa a, men li pral gen lè nou jwenn nan pwoblèm mete sèt. Apre sa, mwen pral ale pi devan epi egzekite yon fonksyon rele rechèch, ki nou pral ba ou nan pwoblèm mete Kòd sèt nan distribisyon, ki pran omwen yon agiman, ki se jis yon fisèl. Yon afè de Kòd SQL. Se konsa, ou ap sou pou aprann kijan pou ekri estriktire Lang rekèt. Si m 'vle insert yon nouvo ranje nan m' baz done paske yon moun te soumèt yon fòm nan kòd m 'yo, mwen ta literalman ekri insert nan itilizatè sa ki annapre yo jaden: non itilizatè, vigil, non, valè yo, e kounye a, mwen bezwen insert yon bagay tankou Malan, ak quote, unquote 'David Malan. Epi, koulye a menm pou moun abitye avèk SQL, poukisa mwen lè l sèvi avèk quotes sèl andedan nan fisèl vèt sa a? Ki sa ki ta ka rezon ki fè yo isit la? Avi mwen se ko-Melanje de lang. Rekèt se yon fonksyon PHP, men sa pran yon agiman. Epi sa agiman te tèt li gen ekri nan yon lòt lang rele SQL, estriktire rekèt Lang. Se konsa, tout bagay ke mwen gen sèlman make isit la se lang natif sa a yo rele SQL. Se konsa, sa ki nan ak quotes yo sèl, menm jan yon chèk saniti rapid? Ale pi devan. Yo ap strings. Se konsa, quote, unquote Malan ak quote, unquote David Malan yo strings. Epi jis panse entwitif kounye a, konnen sa ou konnen sou C ak PHP, poukisa mwen pa fè sa, nan Tanp kote mwen anjeneral itilize quotes doub pou strings? Poukisa mwen pa vle fè sa? Yeah? ODYANS: [fèbl] DAVID Malan: Egzakteman. Paske mwen deja lè l sèvi avèk quotes doub sou wout la deyò nan agiman an nan fonksyon an PHP, Mwen ta jis konfonn entèprèt la. Li pa pral konnen, sa yo ale ansanm? Sa yo ale ansanm? Sa yo ale ansanm? Se konsa, mwen altène pito. Ou te kapab fè yon bagay mwen tankou sa a, quote antislach oswa antislach quote. Franchman, ki jis kòmanse jwenn anpil ilizibl ak lèd. Men, ki ta reyalize rezilta a menm kòm byen. Se konsa, si m 'te al touye sa a query kounye a, kite a wè sa ki rive. Mwen pral ale pi devan kounye a epi yo olye pase egzekite kòd la PHP, ki se kote ou pral jwe nan pwoblèm mete sèt, Mwen pral olye ale nan PHP MyAdmin. Apre sa, mwen pral manyèlman pou yo ale nan tab la SQL, ak kite m 'rale nan sou koòdone la. Apre sa, mwen pral keratin nan bagay la mwen jis tape. Apre sa, kodaj nan koulè gen chanje yon ti jan kounye a, jis paske fòma yo pwogram bagay sa yo yon ti jan diferan. Men, remake ke tout mwen te fè se mwen te di, insert nan Itilizatè yo. Mwen te espesifye, lè sa a, nan yon vigil separe parenthesized lis de la jaden ke mwen vle insert, ak Lè sa a, mwen te literalman di valè ki te swiv pa yon lòt paren, ak Lè sa a de valè yo Mwen vle ploge nan, ak kounye a pou bon mezi, Mwen pral mete yon virgules nan fen an. Se konsa, sa a se pa C. Sa a se pa PHP. Sa a se kounye a SQL, ak mwen kole li nan sa a sit entènèt ki baze entèfas sa a, se jis ale nan kite m ', le pli vit ke mwen klike sou Ale, egzekite query sa a sou baz done a kouri andedan nan CS50 IDE. Se konsa, sa se yon bon bagay. Avi ki t'ap di: yon sèl ranje eleman, li ale, super vit, 0,0054 segonn insert ke done. Se konsa, sa ki son trè an sante. Li rformate query mwen pou m 'isit la jis wè li nan sòt de koulè kode vèsyon. Men koulye a, si mwen klike sou Browse, remake ke, menm menm si gen nan yon anpil nan dezord sou ekran an, tab mwen kounye a gen de ranje. Se konsa, kite m 'ale pi devan epi fè yon lòt. Olye pou yo sa a, kite m ' ale nan tab la SQL ankò. Ak tan sa a mwen pral yon bagay tankou Insert Rob ak non l 'la pral Rob Bowden. Bowden. Se pou nou klike sou Save. Wouch, olye Ale non. Klike sou Browse ankò, epi kounye a remake mwen gen de ranje. Se konsa, sa a se jis yon konplèks fason pi plis fason pou ouvèti moute Google tableur ak jis tape yon ranje nan yon kolòn. Men, sa ki nan kle se ke nou genyen kounye a sentaks la ak ki ekri kòd lè sa a, finalman, nou te kapab aktyèlman fè kèk ak sa a. Sonje byen, sipò PHP varyab super mondyal. Ki sa ki se andedan nan dola siyen souliye jwenn nan PHP? Nou te pran yon gade nan yon sèl oswa de egzanp ki senp. Ak nan PSet6, sonje ou gen alo dot PHP ki itilize varyab sa a. Ki sa ki ale nan la? Oswa sa ki sa li ye? Yon ti kras pi fò. ODYANS: [fèbl] DAVID Malan: Li se yon nèj pitit pitit nan etalaj, ki se jis yon fason anpenpan nan di yon etalaj ki gen valè kle pè. Ak kle yo nimerik yo pa. Yo ap mo oswa strings. Ak espesifikman, ki sa moun sa yo ki valè kle pè? Ki kote yo soti? Padon? ODYANS: [fèbl] DAVID Malan: Se pa? Ki kote fè moun kle pè valè soti? Di ankò? Yon lòt fwa ankò? Eske m 'yon sèl yon bagay nan odyans? [Ri] Sa a dwat, repons lan se wi? ODYANS: [fèbl] DAVID Malan: Yeah, yo soti nan fisèl la rechèch. Se konsa, si ou remonte nan tan yo lè nou te jwe ak Google e nou te ale nan Google.com koupe rechèch kesyon mak q egal chat, si m 'te frape Antre epi si Google te aplike nan PHP, Kòd PHP ki Google te ekri ta gen aksè a siy dola souliye jwenn andedan nan yo ki se yon kle rele K ak yon valè rele chat ke li ka Lè sa a itilize te konn abitye fè yon rechèch aktyèl ak. Se konsa, an reyalite, ki sa mwen pral fè kounye a se tounen nan Kòd PHP mwen ke ou pral ankò wè plis nan nan PSet7. Ak olye pou yo rakorde nan difisil valè kode ki pa sanble tankou yon trè dinamik sou sit wèb, Mwen pral ba ou yon kol nan sa Kòd aktyèl ou ta fè. Ou ta ka mete nan de kesyon make tankou sa a. Mwen pa konnen sa non itilizatè a se. Mwen pa konnen sa a Non a pwal, Men, mwen konnen mwen kapab jwenn yo dynamique. Se konsa, si kòd la nou ap ekri kounye a se kòd a kouri sou serveurs Google a, oswa si sa a se alo dot PHP, ki vini ak PSet6, Mwen pral pase nan fonksyon an sijè rechèch jis tankou printf, de lòt agiman. JWENN, quote, unquote non itilizatè, ak JWENN, quote, non unquote. Epi, koulye a, remake ki sa a estrikti jeneral se isit la. Mwen te gen sou bò gòch la bò nan apèl la men, fonksyon sa a yo rele query nan PHP. Mwen toujou gen kòm yon premye agiman, jis yon afè de tèks. Men, sa afè de tèks se ekri nan yon lang yo rele SQL. Apre sa, franchman, li la pa yon gwo lang. Nou ap sèlman pral pale sou li fòmèlman jodi a, vrèman. Lè sa a, nan pwoblèm mete sèt, gen nan relativman karakteristik kèk ki nou ap ale nan ogmante. Mak yo kesyon, menm si, vle di ploge nan se yon valè isit la ak ploge nan yon lòt valè isit la. Apre sa, avi, mwen te omisyon sa soti nan atravè modi a quote-- l-- alantou sitasyon pi ba la make moman sa a. Mwen te omisyon sitasyon pi ba la mak alantou make la kesyon, regrèt sa, tan sa a alantou. Se konsa, sa ki nan bèl sou sa a kesyon karakteristik mak ki PHP gen tandans fè sipòte, Ruby ak Piton ak lòt lang, sa a jis vle di ploge nan kèk apresye isit la epi ou konnen ki sa? Ou konnen ki si wi ou non yo sèvi ak quotes yon selibatè oubyen quotes doub. Pa anmède m 'ak sa yo entelektyèlman entérésan detay. Men, asire w ke li nan kòrèk se konsa ke Kòd mwen an se finalman operasyonèl ak ki an sekirite, ki pral gen yon siyifikasyon anvan lontan. Koulye a, ki jan anpil agiman totalize, jis dwe klè, se query pran an fonksyon? Nenpòt moun ki vle vote pou plis pase de? Twa? Asire w, poukisa? Poukisa twa? ODYANS: [fèbl] DAVID Malan: Egzakteman. Pati nan premye se fisèl la. Agiman nan dezyèm se siy dola souliye JWENN bracket non itilizatè. Ak twazyèm agiman a se nan menm bagay, men jis non an. Se konsa, nan lòt mo, kounye a si mwen te gen yon fòm entènèt ki te gen nan jaden tèks, yonn pou non itilizatè itilizatè a la, yonn pou li oswa non li, jis tankou ou ta wè nan yon sit entènèt lè w ap enskri pou kèk sit entènèt, fòs sa a gen kòd la sou fen a tounen ki aktyèlman fè ensèsyon an kounye a nan baz done a. Koulye a, pa kontra, se pou yo vit pou pi devan. Sipoze yon itilizatè se kounye a ouvri sesyon an epi ou vle yo ekri Kòd PHP ki cheke si wi ou non moun nan ki moun ki nan jis louvri sesyon an se aktyèlman yon itilizatè, ou ka itilize trè senp sentaks. Ou ka di chwazi, se pou yo di zetwal, kote zetwal vle di tout bagay. Mwen pa konnen sa m ' vle, Se konsa, jis ban m ' tout kolòn yo nan tablo a rele itilizatè ki kote, ak sa a se bèl. Chwazi sipòte sa ki nan rele yon suppose, ki se tankou yon fason pou kalifye sa ou vle. Ki kote non itilizatè egal quote, unquote Malan. Se konsa, isit la tou, mwen te embedded andedan agiman an nan yon fonksyon PHP, yon liy nan Kòd SQL. Epi sa Kòd SQL sa a tan se literalman pral pou fè rechèch pou quote, unquote Malan. Koulye a, sa a, se pa tout sa ki itil, se konsa mwen pral sote ki ak mwen pral wete tout pwent sa a soti nan Brady, epi ale ak ploge nan olye pou yon mak kesyon isit la. Se konsa, jis yo dwe klè, ki sa ta dwe dezyèm agiman mwen dwe si yon moun te jis louvri sesyon an ak mwen vle tcheke si li se aktyèlman yon itilizatè? ODYANS: [fèbl] DAVID Malan: Yeah. Mwen tande dola souliye siy JWENN quote, unquote non itilizatè. Apre sa, ki ta dwe tounen vin jwenn mwen nenpòt nan ranje yo nan baz done m ' ki gen yon non itilizatè a Malan. Koulye a, èspere ke, mwen pral jwenn tounen zewo si pa janm Malan a te la, oswa yon sèl si li te genyen an. Mwen pa ta dwe jwenn tounen de oswa twa oswa kat. Poukisa? ODYANS: [fèbl] DAVID Malan: m 'te di inik, dwa? Senp rezon. Paske mwen di li nan te rive nan dwe inik, jis lojikman, ou ka sèlman gen zewo oswa yon sèl malans nan sa a tab baz done an patikilye. Koulye a, kòm yon sou kote, jis pou ou te wè li, menm si mwen kenbe lè l sèvi avèk JWENN e menm si PSet6 sèlman itilize Jwenn, ou kapab sètènman gen POST. Epi sonje ke se yon lòt Post teknik pou soumèt enfòmasyon ki sòti nan yon fòm, men li pa montre moute nan URL la. Li se yon ti kras pi plis an sekirite sètènman pou bagay sa yo tankou usernames ak modpas, ki PSet7 pral, an reyalite, gen pou wè ak. Se konsa, kite a fè sa nan PHP MyAdmin ak wè sa ki rive. Mwen pral pou yo ale nan miskl tab. Apre sa, remake ke valè a default pou PHP MyAdmin, jis pou yo eseye ka itil, se chwazi zetwal soti nan itilizatè ki kote yon sèl. Oke, yon sèl se toujou vre, se konsa sa a gen komik an efikas a jis chwazi tout bagay. Men, mwen pral gen yon ti kras plis pedant ak manyèlman tape soti SELECT zetwal soti nan itilizatè. Koulye a, teknikman, ou ka site non an nan tab yo. Li nan ra ki di ou gen, men remake sa yo se pa quotes nòmal ou sou klavye a US. Sa a se backtick la sa yo rele, ki se jeneralman sou bò gòch anwo kwen nan klavye ou. Men, li la ra ki ou pral aktyèlman bezwen deranje ak sa, Se konsa, mwen pral jis oblije yo de tout fason. Se konsa, kounye, kite m 'ale pi devan epi frape ale. Ak konbyen ranje mwen ta dwe jwenn tounen lè mwen chwazi zetwal soti nan itilizatè? ODYANS: [fèbl] DAVID Malan: Nimewo a nan ranje, asire w. Men, ki jan anpil moun nan sa a istwa konkrè kounye a? De, paske te gen m 'ak te gen Rob. Se konsa, si mwen klike sou Ale, mwen wè vizyèlman ki Mwen te vinn tounen, tout bon, de ranje. Genyen yon anpil nan dezord sou mòn lan ekran, men mwen sèlman wè de ranje. Nan kontras, si mwen fè sa ankò, li fè Chwazi zetwal soti nan itilizatè yo, ki kote non itilizatè egal quote, unquote Malan, kounye a si mwen klike sou Ale, M 'ap sèlman pral jwenn tounen yon sèl ranje. Epi anfen, si m 'fè yon bagay tankou sa a, ta kwè ke mwen pa pran swen sou ap resevwa tout bagay, ki se kalite san sans kounye a, paske gen nan sèlman de kolòn. Li pa tankou mwen chwazi yon kantite lajan gwo done. Sipoze mwen ale pi devan epi chwazi non KI SOTI NAN itilizatè, kote non itilizatè egal Malan, sa ki nan bèl sou SQL onètman, se ke li vrèman jis fè sa ou di li fè. Li trè somèr, men ou literalman jis di li ki sa ou vle fè. Chwazi Non soti nan itilizatè ki kote non itilizatè a egal Malan. Apre sa, li vrèman se ke eksplisit. Se konsa, kounye a si mwen frape Ale, konbyen ranje yé pral jwenn tounen? Youn, paske li nan jis Malan, èspere ke. Oswa zewo si li nan pa a, men se yon sèl omaksimòm. Ak konbyen kolòn, m'ap jwenn tounen? Konbyen kolòn? Tan sa a, mwen jis ale yo jwenn youn paske mwen pa t ' chwazi zetwal, ki se tout bagay. Koulye a, mwen chwazi jis Non, se konsa mwen jis jwenn tounen yon kolòn ak yon ranje. Apre sa, li sanble sòt de yon fason ki apwopriye ridikil, jis kap super ti tankou sa a. Se konsa, sa k ap reyèlman ap pase? Lè ou egzekite yon SQL query lè l sèvi avèk chwazi, sa w ap vin tounen soti nan baz done a se tankou yon tab pou yon ti tan ak ranje ak kolòn, petèt, men sa oblije nenpòt ki bagay ki pa te aktyèlman chwazi pa ou. Se konsa, li la tankou si yon moun te gen yon gwo calcul tout elèv yo anrejistre pou kèk gwoup elèv, epi ou di, ban m 'tout nan nevyèm ane a ki te anrejistre pou gwoup elèv nou, ki sa kolèg ou a nan gwoup elèv te ka swiv se yo te kapab jis men ou calcul a tout antye. Sa a tankou li di chwazi zetwal. Lè li nan yon ti kras anmèdan si ou sèlman te vle nevyèm ane a. Se konsa, si ou olye pou di: chwazi zetwal soti nan tab baz done kote ane egal quote, unquote nevyèm ane, li a tankou si zanmi ou nan gwoup la elèv literalman make ak kopye sèlman ranje yo nevyèm ane, kopye yo nan yon nouvo Google Feuy oswa yon dosye Excel, ak remèt ou tounen nan ki kapab lakòz dosye sèlman. Sa a tout ki k ap pase sou concept isit la. Se konsa, nan fen a, nou ka fè kèk bagay bèl anpenpan pa estoke bagay sa yo tankou usernames ak modpas ak renmen an. Men, li vire soti, nou ta dwe fè yon ti jan diferan pase sa a. Li pa ke entelijan yo sèlman magazen yon non itilizatè ak yon modpas. Yon moun pi bonè, mwen panse ke desann isit la, te sijere ke yon ID. Koulye a, yon ID ta ka tankou yon ID Harvard oswa Net ID Yale a, men li ta ka menm ki pi senp nan ka baz done nou an. Ak tout bon, ka a komen se yo gen yon lòt kolòn. Apre sa, mwen pral ale pi devan epi modifye tab mwen. Men, si ou jwe otou ak koòdone sa a pou PSet7, ou ap wè ke ou ka tcheke bouton sa-a isit la epi ajoute yon jaden nan kòmansman an nan tab la. Epi, koulye a si mwen klike sou Ale, li k ap pase ban m 'youn nan fòm sa yo ki soti nan pi bonè. Mwen pral ajoute yon jaden rele ID. Apre sa, mwen pral fè l 'yon nimerik kalite. Mwen gen yon pakèt antye nan valè pou numerics. Mwen jis ale nan chwazi yon INT ak pa enkyete sou gwosè yo disparate. Mwen pa gen ou presize yon longè oswa yon valè, paske li k ap pase yo dwe 32 Bits pa gen pwoblèm sa. Atribi, nou pa t 'wè anvan. Nenpòt enterè nan nenpòt nan sa yo opsyon meni tan sa a? Pou yon INT? Ki sa ou te pwopoze? Se pa? Èske nenpòt nan sa yo fè sans? Yeah. Yeah, siye, dwa? Anjeneral, si nou ap ale nan bay tout moun yon Nimewo inik, ki se kote istwa sa a se prale a, Mwen vrèman sèlman vle yon moun yo gen nimewo a tankou zewo ak yon sèl ak de ak twa ak kat. Mwen pa bezwen fè fas ak nimewo negatif. Li jis sanble tankou soufwans konpleksite. Mwen vle kat bilyon valè posib, pa kat milya dola valè posib, Se konsa, mwen jis double nan kapasite de INT mwen. Kòm yon sou kote, si ou vle gen rapò sa a nan yon bagay tankou Facebook, tounen nan sòt de jou m 'lè Facebook premye a soti, Mwen kwè sa yo te lè l sèvi avèk nan baz done miskl yo nan magazen yon itilizatè a idantifyan, te jis yon INT. Men, nan kou, gen nan yon anpil nan moun reyèl nan mond lan. Genyen yon anpil nan fo Facebook kont nan mond lan. Se konsa, evantyèlman, Facebook larivyè gwosè a nan yon int, se yon kat bilyon valè. Ki se poukisa, si ou gade ozalantou yo ak gen nan sit ki ka di ou sa ID inik ou se. Men, si ou pa janm te chwazi yon non itilizatè nan Facebook, ou ap wè ID inik ou yo. Mwen panse ke li pwofil PHP dot ID kesyon mak egal yon bagay. Sa se kounye a yon bagay tankou yon gwo INT, oswa yon long lontan si ou pral, ki se yon valè 64-ti jan oswa yon bagay konparab. Se konsa, menm nan mond reyèl la fè sa yo pwoblèm finalman pafwa gen pwoblèm. Epi li vire soti isit la, si mwen se bay tout nan itilizatè mwen yon ID inik, Mwen vle fè super eksplisit ak minim fè jaden sa a inik. Men, li vire soti gen nan yon sèl moso nan nomanklatur jodi a twò sa a, se yon kle prensipal. Si w ap desine yon de tab ak ou konnen an avanse ke youn nan kolòn yo nan ki tab ta dwe epi yo pral inikman idantifye ranje nan tablo a, ou vle presize li epi di baz done a, sa a se kle prensipal m 'yo. Gen ta ka Doublon nan lòt chan sa yo, men mwen di baz done a ke sa a se prensipal mwen, jaden pi enpòtan m 'yo, ki nan garanti yo dwe inik. Koulye a, sa a sanble redondants. Mwen kounye a pwopoze ke nou ajoute, pa klike Save isit la, yon called-- jaden ak mwen pral ale pi devan epi klike sou lavil Ayi, nou pral tounen vin jwenn ke nan yon moman, Save. Mwen pwopoze kounye a ke tab mwen gade tankou sa a. Mwen gen yon jaden INT rele ID, yon jaden CHAR rele Username, yon jaden varchar rele, men ID, si li nan primè ak Se poutèt sa inik, poukisa mwen jis gaspiye tan entwodwi sa efektivman se yon dezyèm inik jaden rele ID sa a, se yon INT? Non itilizatè, sonje, te deja inik, nou te di. Se konsa, jis lojikman, ou pa bezwen okenn eksperyans baz done rezon nan sa a, poukisa ta ka mwen te prezante yon INT kòm idantifyan inik mwen kòm byen? Ki sa ki nan sa a men di ankò? ODYANS: [fèbl] DAVID Malan: Random aksè pi fasil, poukisa? ODYANS: [fèbl] DAVID Malan: Yeah, li nan jis aksè chif yo. Se konsa, si ou panse a se vre wi: sa a se yon tab, tankou yon etalaj, koulye a, mwen gen Idantifyan inik ke mwen ka sote alantou. Ak pi bon pase ki toujou se ke ki jan gwo se yon INT pral fè ankò? 32 Bits oswa kat bytes. Kòman gwo se non itilizatè mwen an pral fè? Omaksimòm? 16 bytes. Se konsa, si ou se reyèlman pran swen sou pèfòmans nan kòd ou a, panse tounen nan PSET5, ta ou pito pou fè rechèch pou yon valè kat multiple oswa yon 16 valè multiple, dwa? Li reyèlman se kòm senp tankou sa. Sa ou dwe fè kat fwa kòm anpil travay pou fè rechèch pou usernames paske moun gen 16 bytes. Se konsa, ou gen yo literalman konpare tout 16 bytes yo dwe asire w repons lan se wi, sa a se non itilizatè mwen vle. Lè nou konsidere ke pou yon INT, ou ka fè l 'ak jis kat bytes. Apre sa, kòm yon sou kote pou moun enterese nan pyès ki nan konpitè òdinatè, li vire soti ou ka anfòm yon bagay tankou yon INT oswa yon valè 32-ti jan nan yon bagay rele yon enskri nan yon òdinatè CPU, ki vle di li nan super, Super vit, menm nan ki pi ba a nivo nan kenkayri òdinatè a. Se konsa, gen nan jis avantaj tout alantou. Se konsa, sa sa vle di? An reyalite, lè w ap desine yon baz done tab, prèske tout nan tan an ou menm ki pral gen pa sèlman done yo ou pran swen sou, men tou, yon bagay tankou yon idantifyan inik paske sa a ki pral se pou nou fè lòt bagay. Li kite yo vwayaj sou yon pwoblèm isit la. Sipoze ke itilizatè yo gen pa jis usernames ak non, men yo menm tou yo gen bagay sa yo tankou lavil ak eta yo ak kòd postal, omwen isit la nan peyi Etazini. Se konsa, mwen pral ale pi devan ak jis byen vit di, ban m 'twa plis kolòn nan fen a nan tab la. Lè sa a a pwal City, sa a ki pral yo dwe Eta a, ak sa a se pral yo dwe Postal. Koulye a, kalite City, ki sa done ta dwe sa a dwe, petèt? Varchar? Mwen pa konnen sa a pi long la non se. Yon kote nan Amerik, gen nan pwobableman kèk mo ridikil long, se konsa kite yo jis ale ak 255, yon ti jan istorikman oswa abitrèman. Eta a, ki sa ou vle fè? Apèl Jijman, dwa? Ki sa ki nan petèt pi efikas la? Konbyen karaktè? Petèt jis de, si nou kapab jwenn lwen ak jis ap fè, tankou, MA pou Massachusetts ak pou fè. Se konsa, mwen pral ale yon valè CHAR a de. Kòd postal nan yon yon sèl ki enteresan. Nou isit la nan 02138, se konsa ke sijere nou ta dwe sèvi ak ki sa? Se yon INT, dwa? INT, INT, kout? Kout ta travay. Se pa? CHAR oswa senk, men mwen vle yon INT. Poukisa pouse tounen sou yon INT? Konvenk m 'anba sa a. Ki sa ki nan estipid sou yon INT, lide mwen an? Yeah. ODYANS: Pran moute plis memwa. DAVID Malan: Pran moute plis memwa. Kat bytes, men w ap pwopoze yon kòd postal kòm senk bytes oswa yon moun te kòm yon CHAR, ki santi l tankou eh, sa se pa reyèlman ka-a. Oke, plezi istwa. Ane de sa, lè mwen itilize yo sèvi ak Microsoft Outlook pou imel m 'yo, Mwen evantyèlman te vle chanje nan Gmail. Se konsa, mwen ekspòte tout nan m ' kontak soti nan pespektiv kòm yon dosye CSV. Vigil separe valè, ki jis vle di ke mwen te gen tout zanmi m 'non ak dènye non ak nimewo telefòn ak kòd postal ak nan tout sa. Lè sa a, mwen te fè a erè nan ouvèti l 'kanpe nan Excel, ki se yon pwogram calcul ki konprann CSV dosye jan nou te wè. Men, Lè sa, mwen dwe te frape, tankou, Kòmandman oswa kontwòl S nan yon pwen. Apre sa, Excel aparamman nan moman an te gen yon karakteristik kijan nenpòt ki lè li wè yon nimewo, li te eseye yo dwe itil. Men, si ke nimewo te kòmanse avèk zewo, li ta jis debarase m de yo. Poukisa ou bezwen dirijan zewo sou nonm antye relatif? Yo ap san sans, matematik. Yo ap pa san sans nan sistèm nan US Sèvis. Se konsa, mwen te gen pou ane, nan jou sa a, mwen toujou gen zanmi ke lè a ra ka sa a mwen bezwen yon moun nan adrese jou sa yo, Mwen pral toujou wè ke mwen gen yon zanmi nan Cambridge, Massachusetts, 2138. Lè li nan anmèdan si w ap ap eseye sòt nan pwogramasyon jenere anvlòp oswa jis ekrir li desann. Epi sa a, paske yo te rezon sa a, Mwen te chwazi kalite a done ki mal. Se konsa, mwen renmen lide ou yo. Se pou yo sèvi ak yon jaden CHAR. Senk karaktè yo, eksepte gen yon ka kwen. Si ou toujou voye lapòs, pafwa zip kòd jou sa yo, yo ap, tankou, plis kat. Se konsa, nou bezwen yon tirè ak Lè sa a nou bezwen kat nimewo plis. Se konsa, yo dwe onèt, li te kapab ale plizyè fason diferan. Pou kounye a, mwen pral kenbe li senp ak mwen se jis pral di ke li nan yon senk valè CHAR epi nou ap ale nan sote priz nan tout antye plis kat. Men, sa yo, se kalite ki nan konpwomi. Epi ou ka panse a nan pwoblèm menm ki rive ak nimewo telefòn oswa lòt jaden. Epi, koulye a, sa a se aktyèlman yon wout san konprann yo ale desann. Sipoze tou de Rob Se mwen menm ak Ana ak Maria ak [? Davon?] Ak Andy ak lòt moun sou anplwaye a tout ap viv nan Cambridge, Massachusetts, 02138. Sa a aktyèlman santi estipid ke mwen se ajoute sou tab itilizatè m 'yo, vil, eta, ak zip. Poukisa? ODYANS: [fèbl] DAVID Malan: Di ankò? ODYANS: [fèbl] DAVID Malan: Yo ap toujou pral ale ansanm, dwa? Lè li vire soti, nou te konn panse sa a te ka a jiskaske nou limitativ fouye tout Etazini an, ak sanble ke gen yo se kèk enkonsistans kote tout ti bouk plizyè gen postal la menm, ki se etranj. Men, si nou ladann pou kounye a ke 02138 se toujou Cambridge, Massachusetts, poukisa nan mond lan ta ou sere nan baz done ou Cambridge ak MA ak 02138 pou m 'ak pou Hannah ak pou Rob ak pou [? Davon?] Ak pou lòt moun ki ap viv isit la nan Cambridge, li nan parfe redondants. Nou ta dwe jwenn lwen ak jis estoke ki sa? Jis kòd la postal. Men, Lè sa, si nou jis nan magazen kòd postal, mwen vle, pwobableman, pou sit entènèt mwen an konnen ki kote 02138 ye. Se konsa, mwen bezwen yon lòt tab. Epi sa a, OK. Ak nan reyalite, sa a se youn nan nan pwosesis konsepsyon nan desine tab ke ou pral fè nan PSet7 osi byen kijan ou vle faktè soti done komen. Jis tankou nou ve yo te faktè soti Kòd komen ak affacturage soti komen Styles soti nan CSS, isit la twò nan baz done a, si mwen sèlman bezwen 02138 inikman idantifye vil yon moun, Pa sere Cambridge, Mass pou chak itilizatè reprize nan tablo ou yo. Olye de sa, gen yon tab apa rele Zips ki ta dwe gen sa kolòn? Pwobableman yon jaden ID, jis paske, pou prensip yo nou ap pale de kounye a. Pwobableman yon jaden postal pou 02138. Lè sa a, pwobableman sa lòt kolòn? City ak eta a, men se sèlman gen yon sèl ranje pou 02138, yon sèl ranje pou 02139, yon sèl ranje pou 90210. E ke se literalman tout kòd yo postal mwen konnen. Se konsa, kounye, ki sa ou kapab fè? Sa a se yon pwoblèm, paske koulye a, mwen te gen de moso wòch plat. Se konsa, itilizatè m ', se sitou sou isit la, men enfòmasyon lavil eta yo nan sou isit la. Se konsa, li vire soti ak SQL, gen nan aktyèlman yon fason yo rantre nan enfòmasyon, epi ou pral wè sa a nan pset a. Men, li vire soti ou kapab fè yon bagay tankou sa a. Chwazi zetwal soti nan itilizatè, rantre nan zips SOU itilizatè dot postal egal zips dot postal. Ki se yon ti kras bavar, Byensir, men sa a jis vle di chwazi tout bagay soti nan la pwosesis pou pran tab itilizatè mwen ak tablo zips mwen. Join yo sou yon sèl nan jaden yo gen nan kolòn. Se konsa, fè yon bagay literalman tankou sa a, epi bay m 'tounen yon nouvo tab pou yon ti tan sa a, se pi laj, sa a, se pi gwo, ki gen tout nan la kolòn soti nan tou de nan yo. Epi ki, byen tou senpleman, ta dwe nan sentaks pou fè yon bagay tankou sa a. Se konsa, gen nan sa a pi devan, men gen k ap pase yo dwe lòt desizyon konsepsyon ou pral gen fè, pa sèlman ak endis men tou, kouri nan defi yo. An reyalite, gen nan yon defi nan nenpòt konsepsyon baz done kijan pafwa de moun ta ka vle jwenn aksè nan ranje yo menm nan baz done a tab. Se konsa, sa a se yon bagay ki nou pral rankontre nan PSet7 kòm byen. Men, mwen te panse mwen ta gade nan yon sèl atak sa a, se posib nan SQL. Ki sa ki yo se kèk nan la pwoblèm ki ka leve? Se konsa, ou pral rankontre sa a nan PSet7. Epi nou di ou kareman a sa kodaj solisyon pou pwoblèm sa a se. Men, si ou pran yon klas pi wo nivo, espesyalman nan sistèm operasyon, w ap ale nan rankontre yon pwoblèm nan atomisite, pwoblèm lan nan ap eseye fè miltip bagay tout nan yon fwa san entèripsyon. Apre sa, mwen te panse mwen ta entwodui sa a lide pou PSet7 ak yon metafò ke mwen te aprann tèt mwen nan Mago Sistèm Seltzer la opere CS164 klas ane de sa. Sipoze ke ou gen youn nan sa yo dòtwa refrijerateur nan chanm dòtwa ou a oswa kay, epi ou gen yon gou reyèl pou lèt. Se konsa, ou vini lakay sòti nan klas yon sèl jou, ou louvri frijidè a. Oh, modi li. Gen nan pa gen lèt nan frijidè an. Se konsa, ou fèmen frijidè a, fèmen pòt la, fèmen dòtwa ou, mache nan kwen an CVS, jwenn nan liy, epi yo kòmanse kouran soti nan pou kèk lèt. Apre sa, li la pral pran yon ti tan, paske moun kesye pwòp tèt ou modi kontè pran pou tout tan yo sèvi ak de tout fason. Se konsa, pandan se tan, kolokasyon nou an ap vini lakay ou. Li oswa li te reyèlman renmen lèt kòm byen. Yo vini nan sal la dòtwa, louvri frijidè a, o, reprize li. Gen nan pa gen lèt plis. Se konsa, li oswa li te tou ale alantou kwen an. Men koulye a,, depi gen nan tankou de oswa twa oswa kat CVSes ki tou pre, yo rive pou yo ale nan youn nan la yo menm diferan nan kare a. Se konsa, kounye a, kèk minit apre, tou de nan nou vini lakay ou epi pwa, pi move pwoblèm tout tan. Koulye a, ou gen twòp lèt paske li k ap pase yo ale tounen. Epi ou renmen lèt, men ou pa reyèlman renmen lèt. Se konsa, kounye, sa a te yon chè erè paske tou de nan nou te fè yon desizyon ki baze sou la eta nan kèk varyab ki te nan pwosesis la nan te chanje pa ou, amors a nan ale nan jwenn lèt. Se konsa, sa se petèt yon moun solisyon ak sa yo ki pwoblèm? ODYANS: [fèbl] DAVID Malan: Kite yon nòt, dwa? Toujou kite yon nòt, si w ap abitye avèk ki montre. Wi, ki te gen de nan nou. Se konsa, toujou kite yon nòt, oswa literalman fèmen frijidè a ak kèk kalite kadna oswa yon bagay sou tèt la tankou sa. Men, sa la aktyèlman pral yo dwe kle pwoblèm ak konsepsyon baz done, espesyalman lè ou ta ka genyen navigatè miltip, plizyè laptops, plizyè itilizatè tout ap eseye mete ajou enfòmasyon nan yon fwa. Enfòmasyon Patikilyèman sansib tankou enfòmasyon finansye, kijan ak yon komès stock sit tankou ou pral bati, sa ki si ou vle tcheke konbyen lajan ou gen ak Lè sa a si ou gen ase, achte kèk stock? Men, sa ki si yon moun lòt moun ki gen yon kont ansanm ak ou se ansanm ap yo achte kèk stock? Se konsa, li oswa li te se nan tcheke balans kont, tou de nan nou jwenn tounen menm bagay la tou repons, gen nan pa gen lèt. Ou tou de nan nou jwenn tounen repons lan, ou gen $ 100 nan kont lan. Tou de nan nou eseye fè desizyon an yo achte yon sèl pati nan kèk stock konpayi. Epi, koulye a, ki sa k ap pase? Ou gen de aksyon? Ou pa gen okenn aksyon? Pwoblèm tankou ki ka leve. Se konsa, nou pral rankontre sa. SQL atak piki, Erezman, yo se yon bagay nou pral ede w ak, men sa yo, se atrociously jou komen sa yo toujou. Se konsa, sa a se jis yon egzanp. Mwen pa fè okenn reklamasyon ki Sistèm Harvard PIN se vilnerab a atak sa a an patikilye. Nou te eseye. Men, ou konnen ke nou gen yon jaden tankou sa a. Ak Filè ID Yale a gen yon menm jan an kap ekran jou sa yo. Epi li vire soti, ki petèt a Se sistèm PIN aplike nan PHP. Men, si li were-- li a not-- yo ta ka gen kòd ki sanble tankou sa a. Yo gen de varyab. Ban m 'non itilizatè a ak modpas soti nan varyab la pòs super mondyal ke nou te pale osijè de pi bonè. Petèt Harvard gen yon sijè rechèch tankou chwazi zetwal soti nan itilizatè kote non itilizatè egal ki ak modpas egal sa. Apre sa, remake ke mwen se jis rakorde l 'nan lè l sèvi avèk notasyon a atèl Curly soti nan lòt la jou, ki vle di jis ploge nan se yon valè isit la. Mwen pa lè l sèvi avèk la kesyon mak teknik. Mwen pa gen okenn dezyèm oswa agiman twazyèm. Mwen jis literalman konstwi fisèl la tèt mwen. Pwoblèm nan, menm si, se ke si yon moun renmen yon Scroob, ki se yon referans nan yon fim, journaux nan ak yon bagay tankou sa a, epi mwen te retire pwen yo ki anjeneral kouvri moute modpas, sa ki si se li ki patikilyèman move ak modpas li petèt se 12345, pou chak fim nan rele "Spaceballs," men li kritik kalite yon sèl quote apre senk an, Lè sa a, literalman mo oubyen nan espas ki la, ak Lè sa quote, youn unquote egal quote yon sèl, men remake li te omisyon ki sa? Li te omisyon quote la sou bò dwat la ak li te omisyon quote la sou bò gòch la. Paske si atakè sa a sipozisyon Scroob a se ke pèp la ki te ekri sa a Kòd PHP pa t 'konsa byen klere, petèt yo jis gen kèk sèl quotes alantou entèpolasyon nan nan yon varyab nan aparèy òtopedik Curly? Se konsa, petèt, li te kapab kalite a ranpli te panse yo pou yo, men nan yon fason ki k ap pase kite l 'rache nan sistèm lan PIN. Nan lòt mo, ta kwè ke sa a se kòd la ak nou koulye a ploge nan sa ki Scroob tape. Lè li nan wouj, paske li nan move. Ak tèks ki kache se sa l 'tape nan, Scroob te kapab je chèch sèvè Harvard la nan konstwi yon sijè rechèch SQL fisèl ki sanble tankou sa a. Modpas egal 12345 oswa yon sèl egal yon sèl. Rezilta a nan ki, lojikman, se ke sa a pral ouvri sesyon Scroob nan si modpas li se 12345 oswa si yon sèl egal yon sèl, ki se nan kou toujou vre, ki vle di Scroob toujou vin nan. Se konsa, wout la nan ranje sa a, tankou nan yon anpil nan ka yo, ta dwe ekri plis pridans. Pou itilize yon bagay tankou nou an aktyèl fonksyon query, ki ou pral wè nan PSet7, kote nou ploge nan yon bagay tankou kesyon make isit la. Apre sa, bote nan nan fonksyon query ke nou ba ou se li defan kont sa yo sa yo rele SQL atak piki, kote gen yon moun ki tricking kòd ou a nan enjekte pwòp tèt li oswa li Kòd SQL. Paske sa fonksyon an sijè rechèch nou ba ou pral aktyèlman fè, si ou itilize sentaks la kesyon mak ak yon dezyèm ak yon agiman twazyèm isit la, se sa li te ajoute nan la D 'ki itilizatè a bay? Moun sa yo ki antislach site. Se konsa, li lannwit nenpòt potansyèlman karaktè danjere. Sa a parèt etranj kounye a, men li la pa vilnerab paske li fè sa ki pa chanje lojik la ankò paske ke tout modpas se kounye a yon quote sèl sa a, se pa, an reyalite, modpas Scroob a. Se konsa, gen nan gen kèk blag sou sa a sou ane yo. Se konsa, sa a te yon foto pran nan kèk geek nan yon pakin kijan ou ta ka konnen ke kèk vil ak eta eseye analysis lisans ou plak voye bòdwo ou oswa nan tikè ou si ou ale nan san yo pa, tankou, bagay la E-Z Pass. Se konsa, moun sa a prezime ke petèt pèp la ekri sistèm nan E-Z Pass pa t 'konsa byen klere, ak petèt yo jis anchene ansanm yon fisèl, se konsa ke li oswa li te pa t 'kapab malveyans pa sèlman ranpli te panse yo, men aktyèlman egzekite yon lòd move, ki nou pa te mansyone ankò, men ou ka pwobableman devine. Sa ki nan adisyon a efase ak Insert epi mete ajou epi chwazi, gen nan tou yon mo kle yo rele gout, ki literalman tout bagay supresyon nan baz done a, ki se patikilyèman move. Nou ka rale nan sou sa a si li nan yon ti kras difisil yo wè. Sa a, koulye a, se yon pi popilè desen ki pi ba sa a, se bèl entelijan kounye a ak konprann. [Ri] Yeah, fre. Kalite geeking deyò. Se konsa, sa yo, lè sa a, se SQL piki atak. Apre sa, yo ap tèlman fasil pou fè pou evite lè l sèvi avèk kòd a bon oswa yon bibliyotèk ki dwat. Men, ou pral wè nan PSet7, sa se poukisa nou ba ou fonksyon an sijè rechèch. Se konsa, yon koup la anons ke nou te panse nou ta ba ou la a nan nou an rete minit ansanm. Se konsa, jan ou sonje soti nan semèn zewo, nou prezante sa yo de anpoul limyè ki yo se bèl, pa sèlman paske yo ap trè, epi yo kolore, men paske yo sipòte yon bagay rele yon API, yon Aplikasyon Programmation koòdone ak nan CS50 konsa byen lwen, nou te sitou konsantre sou JWENN ak POST, men li vire soti gen nan lòt vèb HTTP tankou mete. Lè an reyalite, sa a te yon glise soti nan semèn zewo kijan si ou ekri kòd ki voye yon PSet6 la yon demann HTTP ki sanble tankou sa a ak sa a ti moso nan tèks nan pati anba a, ki te rele JSON, oswa JavaScript Notasyon objè ke nou pral pale sou semèn pwochèn, ou ka vire sou oswa fèmen oswa chanjman koulè a ​​ki kreye tout limyè tankou sa yo. Se konsa, si CS50 tou te gen nan adisyon a kèk nan tout sa yo anpoul limyè isit la nan New Haven si ou ta renmen prete yo pou pwojè final la, tou gen kèk Microsoft Gwoup Mizik yo, ki se tankou mont ke ou mete alantou ponyèt ou ki Menm jan an tou gen yon API pou ke ou ka ekri lojisyèl pwòp ou a pou yo. Nou gen yon kont ak Apple la iOS Kòd pou ke si ou gen yon Apple Watch oswa yon iPhone oswa yon iPad oswa yon iPod, ou ka ekri kòd ki aktyèlman kouri sou sa yo. Nou gen yon pakèt antye a Arduinos yo, ki se ti òdinatè ti kras san yo pa ka, esansyèlman, ke ou ka konekte via USB, tipikman nan pwòp Mac ou a oswa PC, ekri kòd ki kouri sou sa yo fizik aparèy ki souvan gen detèktè sou yo pou ou kapab kominike avèk mond reyèl la. Nou gen yon pakèt antye a Kwasans Mouvman aparèy, ki se USB aparèy pou Macs ak PC yo, isit la e ankò, nan New Haven. Men, si ou konekte li nan Mac ou a, ou ka aktyèlman kontwòl òdinatè w lan pa ekri lojisyèl ki atravè travès enfrawouj, figi konnen ki kote men yo ou yo, menm san yo pa manyen klavye ou. Nou te panse ke nou ta pataje yon rapid aperçu nan sa a, pou egzanp. [MIZIK jwe] Se konsa, nou gen yon antye pakèt moun sou bagay sa yo, tou, rele Myo Gwoup Mizik bra kote ou mete sou avanbra ou ak Lè sa a ou ka kontwole reyèl la mond oswa mond lan vityèl tankou sa a. [MIZIK jwe] Oswa, nou gen tou gen kèk Google Katon, ki se literalman, tankou, yon bwat katon, ou te kapab mete yo sou ou fè fas a, men glise nan telefòn ou nan li pou ke ou mete glas la nan ou telefòn reyèlman fèmen nan je ou. Ak Google Katon se trè bon mache nan $ 10 oswa $ 20. Apre sa, li gen lantiy ti kras ki yon ti kras koupe chanjman imaj la sou ekran an pou moun ou je l 'ban nou yon sans de pwofondè pou ke ou gen aktyèlman yon 3D anviwònman nan devan ou. Nou gen tou gen kèk Kovèti pou Samsung, ki se vèsyon an pi chè nan sa a, men sa ka Menm jan an tou glise nan yon Android telefòn ak ba ou ilizyon a de- oswa bay eksperyans nan nan reyalite vityèl. Ak nan final nou an de minit, nou te panse nou ta eseye fè sa a. Si m 'ka pwojè sa Colton gen isit la jis yo ile apeti ou, kite m 'ale pi devan epi jete moute sou ekran an gwo isit la. Kite m 'touye limyè yo. Colton, ou vle ale pi devan epi mete yo sou selilè ou pou yon moman epi pou yo rive sou sou nan an presegondè nan sèn nan? Epi ou vle project-- sa a se sa Colton wè. Koulye a, Wi-Fi nan nan isit la se pa konsa pou sa fò pou aparèy sa a ke sa a se super konvenkan, men Colton se literalman nan kote sa a majik futurist. Li sèlman wè yon sèl imaj. Ou ap wè je kite la ak dwa l ' ke nan sèvo l 'yo ansanm wanga nan yon twa dimansyon anviwònman sou figi l 'yo. Li te jis chwazi yon opsyon meni isit la. Se konsa, ankò, li te mete ekoutè sa a ak yon telefòn Samsung sou li sa a, se wirelessly previzyon sou tèt nou an. Koulye a, ou ap sou Mas, mwen panse ke? COLTON: Mwen panse ke sa. Mwen pa si [fèbl]. [Ri] DAVID Malan: Vire soti Mas gen meni sa yo. COLTON: [fèbl] kèk fre kote si nou vle ale to-- DAVID Malan: Ki kote nou vle ale? COLTON: [fèbl] DAVID Malan: Se pou nou wè kote Colton nan pran nou kounye a. COLTON: [fèbl] DAVID Malan: Se konsa, gen nan anpil diferan kote ou ka pran tèt ou. Genyen FAPIs atravè kote ou ka ekri jwèt oswa entèraksyon ki kouri, finalman, sou telefòn la. Se konsa, ou vrèman jis ekri yon app telefòn mobil. Men, gras a lojisyèl an ak kapasite yo grafik, kounye a Colton se nan sa a ti ti kras kaye. Ak nan risk pou yo boulvèse tèt nou, Colton epi mwen pral bwa alantou pou pandan y ap nan fen a nan klas isit la jodi a si ou ta renmen vini ak jwe. Epitou, n ap pote yo tounen nan semèn kap vini yo tou. San yo pa pi lwen, tarde sa a, se li pou jodi a. Nou pral wè ou an semèn pwochèn. [MIZIK - RAGGA marasa, "BAD MAN"]