Pythonda Melumatlarin Qohumluq Elaqeleri

Tesewwur edek ki, qarsimizda atalar ve ogullar saxlanmasi meselesi durur. Her atanin yalniz bir oglu ola biler, ogul ise oz novbesinde bir oglu ola biler.

Melumatlari necə saxlayacagimizi dusunmeliyik. Ağila gelen ilk fikir - iki cedvel yaratmaqdir: parents atalar ucun ve sons ogullar ucun. Sonra bu cedvelleri bir xanasla elaqelendirmek: son_id ya da parent_id.

Lakin, bu fikir cox yaxşı deyil - axı eyni insan hem ata, hem de oglu ola biler - ve onu her iki cedvelde saxlamaq mecburiyyetinde qalariq, bu ise narahatedici, daha cox yer tutur ve asanlıqla sehvlere sebeb olur.

Daha yaxşı variant - cedveli ozu ile elaqelendirmekdir: users cedveli yaradaq, ora butun istifadeçileri yerləşdirek ve her birine son_id xanası teyin edek, hansinda ki, hemin cedveldeki oglun id saxlanilacaq:

users
id name son_id
1 user1 2
2 user2 3
3 user3 null

Sorğular

Indi gelin istifadeçini onun oglu ile birlikde çıxaran bir sorğu yazaq.

Evvelce gelin sadəcə istifadeçileri çıxaraq:

sqlSELECT
  *
FROM
  users

Indi istifadeçilere onlarin ogullarini birleşdirek. Biz cedveli ozu ile birleşdireceyik, ona göre onu yeniden adlandirmaq lazımdır:

sqlLEFT JOIN users as sons

Indi biz esas cedvelle yeniden adlandırılmış cedvel arasında elaqeni göstere bilerik:

sqlLEFT JOIN users as sons ON sons.id=users.son_id

Indi xanalari gosterək:

sqlSELECT
  users.name as user_name, sons.name as son_name

Hamısını birlikde toplayaq ve aşağıdakı sorğunu elde edek:

sqlSELECT
  users.name as user_name, sons.name as son_name
FROM
  users
LEFT JOIN users as sons ON sons.id=users.son_id

Praktiki Tapşırıqlar

Задание 1

Tesewwur edek ki, kateqoriyalarımız var. Her kateqoriya ana kateqoriyaya aid ola biler, o da oz novbesinde oz ana kateqoriyasina ve s. Saxlama quruluşunu izah edin.

Задание 2

Kateqoriyani onun ana kateqoriyası ile birlikde çıxaran bir sorğu yazın.

Задание 3

Kateqoriyani onun ana kateqoriyası ve baba kateqoriyası ile birlikde çıxaran bir sorğu yazın.

Задание 4

Kateqoriyani onun ana kateqoriyası, baba kateqoriyası ve ata baba kateqoriyası ile birlikde çıxaran bir sorğu yazın.