If you're seeing this message, it means we're having trouble loading external resources on our website.

Եթե գտնվում ես վեբ զտիչի հետևում, խնդրում ենք համոզվել, որ *.kastatic.org և *.kasandbox.org տիրույթները հանված են արգելափակումից։

Հիմնական նյութ

Բաժանել տվյալները հարաբերական աղյուսակների

Առայժմ մենք աշխատել ենք մի աղյուսակով և տվյալներ վերցրել միայն մեկ աղյուսակից։ Բայց իրականում շատ դեպքերում մեր տվյալները բաշխված են լինում մի քանի աղյուսակներում, և այդ աղյուսակներն ինչ-որ կերպ «կապված են» իրար։
Օրինակ՝ արի պատկերացնենք, որ ունենք աղյուսակ, որտեղ գրված է աշակերտների քննությունների գնահատականները, և մենք ներառում ենք նրանց էլ. փոստերը, որ վատ գնահատականների դեպքում ծնողներին էլ․ նամակ գրենք․
Սովորողի անունըՍովորողի էլ. հասցենԹեստԳնահատական
Պետրոսpeter@rabbit.comՖիզիկա95
Ալիսաalice@wonderland.comՖիզիկա92
Պետրոսpeter@rabbit.comՔիմիա85
Ալիսաalice@wonderland.comՔիմիա95
Պատկերացրու՝ ունենք նաև ամեն աշակերտի կարդացած գրքերի աղյուսակ․
Սովորողի անունըԳրքի վերնագիրԳրքի հեղինակ
ՊետրոսThe Tale of Mrs. Tiggy-WinkleBeatrix Potter
ՊետրոսJabberwockyLewis Carroll
ԱլիսաThe Hunting of the SnarkLewis Carroll
ԱլիսաJabberwockyLewis Carroll
Ունենք նաև ամեն աշակերտի մասին տեղեկությունների աղյուսակ․
idՍովորողի անունըՍովորողի ազգանունըԷլ. հասցեՀեռախոսԾննդյան տարեթիվ
1ՊետրոսԱվագյանpeter@rabbit.com555-66662001-05-10
2ԱլիսաՈսկանյանalice@wonderland.com555-44442001-04-02
Ի՞նչ ես հասկանում այս աղյուսակներին նայելով։ Կփոխեի՞ր դրանք ինչ-որ կերպ։
Այս աղյուսակների մասին մի կարևոր բան պետք է հասկանանք․ դրանք ցույց են տալիս կապված տվյալներ, այսինքն՝ դրանց տվյալները կապված են մեկը մյուսի հետ։ Այս աղյուսակներից յուրաքանչյուրը ցույց է տալիս տվյալ, որը կապված է աշակերտների հետ, և աղյուսակները նույնիսկ ունեն կրկնվող տվյալներ։ Երբ նույն տվյալները կրկնվում են մի քանի աղյուսակներում, կարող ենք հանգել հետաքրքիր հետևությունների։
Օրինակ, եթե աշակերտի էլ․ փոստը փոխվեր, ո՞ր աղյուսակները կփոխեինք։
Մենք ստիպված կլինեինք փոխել աշակերտի տեղեկությունների աղյուսակը, բայց քանի որ այդ տվյալը ներառել ենք նաև գնահատականների աղյուսակում, պետք է փնտրենք այդ աշակերտի մասին բոլոր տողերը, և այնտեղ ևս փոխենք էլ․ փոստը։
Շատ հաճախ ավելի նախընտրելի է լինում տվյալների ինչ-որ սյուն պահեստավորել միայն մեկ տեղում, որպեսզի հետո քիչ տեղերում տվյալները թարմացնելու կարիք լինի, և ավելի քիչ լինի տարբեր տեղերում տարբեր տվյալներ ունենալու ռիսկը։ Եթե այդպես ենք անում, պետք է նաև համոզվենք, որ ունենք աղյուսակների միջև տվյալները կապելու ձև, որին կանդրադառնանք հետագայում։
Ենթադրենք, ուզում ենք գնահատականների աղյուսակից հանել էլ․ փոստերը, որովհետև եկանք այն եզրակացության, որ այն ավելորդ տեղեկություն է գնահատականների աղյուսակում։ Ահա թե ինչ կստանանք՝
Սովորողի անունըԹեստԳնահատական
ՊետրոսՖիզիկա95
ԱլիսաՖիզիկա92
ՊետրոսՔիմիա85
ԱլիսաՔիմիա95
Ինչպե՞ս կարող ենք գտնել ամեն աշակերտի էլ․ փոստը։ Կարող ենք գտնել այդ անունով աշակերտի տողը։ Իսկ ի՞նչ կլինի, եթե 2 աշակերտ ունեն նույն անունը (Գիտե՞ս, Բալիում կա ընդհամենը 4 ընդունված անուն): Մենք չենք կարող գտնել աշակերտի անունով տվյալներ, և ընդհանրապես երբեք չենք կարող աղյուսակներում միայն մեկ տվյալից ելնելով գտնել մեկ ուրիշը։
Հետևաբար, ավելի լավ է student_name-ը ջնջել և դրա փոխարեն գրել student_id, քանի որ նույնականացուցիչը (identifier) միշտ եզակի, չկրկնվող տվյալներ է պահում․
Սովորողի idԹեստԳնահատական
1Ֆիզիկա95
2Ֆիզիկա92
1Քիմիա85
2Քիմիա95
Գրքերի աղյուսակում նույնպես student_id կգրենք student_name-ի փոխարեն․
Սովորողի idԳրքի վերնագիրըԳրքի հեղինակ
1The Tale of Mrs. Tiggy-WinkleBeatrix Potter
1JabberwockyLewis Carroll
2The Hunting of the SnarkLewis Carroll
2JabberwockyLewis Carroll
Ուշադրություն դարձրու, թե ինչպես են Jabberwocky-ի դեպքում գրքի և հեղինակի անունները կրկնվում։ Սա նույնպես ծանուցման տիպի բան է, որ պետք է մեր աղյուսակը նորից բաժանենք միմյանց հետ կապված մասերի, որ գրքի մասին ինչ-որ բան փոխվելու դեպքում ամեն անգամ մի քանի տեղում նույն տվյալը չթարմացնենք։
Կարող ենք ունենալ միայն գրքերի աղյուսակ․
idԳրքի վերնագիրըԳրքի հեղինակ
1The Tale of Mrs. Tiggy-WinkleBeatrix Potter
2JabberwockyLewis Carroll
3The Hunting of the SnarkLewis Carroll
Եվ հետո մեր Սովորողի գրքերը աղյուսակը դառնում է՝
Սովորողի_idԳրքի_id
11
12
23
22
Գիտեմ, սա այնքան էլ աչքի զարնող աղյուսակ չէ, քանի որ նախորդ աղյուսակում ամբողջ ինֆորմացիան ներառված էր յուրաքանչյուր տողի մեջ։ Բայց աղյուսակները շատ հաճախ գրվում են ոչ թե մարդկանց կարդալու համար, այլ դրանց հետ ավելի հեշտ աշխատելու և դրանք կառավարելու համար։ Շատ դեպքերում ավելի լավ է տեղեկությունը կիսել կապված աղյուսակների, որպեսզի ձերբազատվենք ավելորդ տեղեկությունից և քչացնենք թարմացնելու ենթակա տողերի քանակը։
Կարևոր է հասկանալ, թե ինչպես պետք է օգտագործել SQL-ը մի քանի աղյուսակների միջև բաժանված տվյալների հետ աշխատելու համար, և հարկ եղած դեպքում կարողանալ տվյալները միացնել իրար։ Դա անում ենք join-երով, որոնց մասին կսովորես հաջորդիվ։

Ուզո՞ւմ ես միանալ խոսակցությանը։

Առայժմ հրապարակումներ չկան։
Անգլերեն հասկանո՞ւմ ես: Սեղմիր այստեղ և ավելի շատ քննարկումներ կգտնես «Քան» ակադեմիայի անգլերեն կայքում: