Uhusiano wa Data katika PHP
Wacha tuseme tunakabiliwa na chango la kuhifadhi baba na wanawe. Wacha kila baba awe na mtoto mmoja tu, na huyo mtoto kwa upande wake anaweza pia kuwa na mtoto mmoja.
Inahitajika kutafakari jinsi tutakavyohifadhi data.
Wazo la kwanza, linaweza kujia akilini
- kutengeneza jedwali mbili: parents kwa ajili ya
baba na sons kwa ajili ya wana. Kisha kuunganisha
jedwali hizi na sehemu fulani: son_id
au parent_id.
Hata hivyo, hili si wazo zuri sana - kwa sababu mtu yule yule anaweza kuwa wakati huo huo baba na mtoto - na itabidi kumhifadhi katika jedwali zote mbili, na hii haifai, inachukua nafasi zaidi na kwa urahisi husababisha makosa.
Chaguo bora zaidi - ni kuunganisha jedwali lenyewe
lenyewe: tutatengeneza jedwali users,
ndani yake tutahifadhi watumiaji wote na kwa kila mmoja tutatengeneza
sehemu son_id, ambayo itahifadhi
id ya mtoto kutoka kwenye jedwali hili hili:
| id | name | son_id |
|---|---|---|
| 1 | user1 | 2 |
| 2 | user2 | 3 |
| 3 | user3 | null |
Maswali
Sasa tujiandae kuandika swali, litakalotoa mtumiaji pamoja na mtoto wake.
Kwa kuanza wacha tuwatoe watumiaji:
SELECT
*
FROM
users
Sasa tuwaunge watoto wao kwa watumiaji. Kuunga tutafanya jedwali lenyewe kwa lenyewe, kwa hivyo inahitajika kutekeleza ubadilishaji jina lake:
LEFT JOIN users as sons
Sasa tunaweza kubainisha uhusiano wa jedwali kuu na ile iliyobadilishwa jina:
LEFT JOIN users as sons ON sons.id=users.son_id
Sasa tubainishe sehemu:
SELECT
users.name as user_name, sons.name as son_name
Tukusanye pamoja yote na tutapata swali lifuatalo:
SELECT
users.name as user_name, sons.name as son_name
FROM
users
LEFT JOIN users as sons ON sons.id=users.son_id
Kazi za Vitendo
Wacha tuseme tuna kategoria. Kila kategoria inakuweza mzazi wake, na yeye kwa upande wake ana mzazi wake na kadhalika. Eleza muundo wa uhifadhi.
Andika swali, litakalotoa kategoria pamoja na kategoria yake ya mzazi.
Andika swali, litakalotoa kategoria pamoja na mzazi wake na babu.
Andika swali, litakalotoa kategoria pamoja na mzazi wake, babu na babu wa babu.