sql >> Database teknologi >  >> RDS >> Mysql

php / Mysql bedste træstruktur

Du kan bruge en indlejret sætmodel da det giver meget effektive forespørgsler. Tjek Administration af hierarkiske data i MySQL og læs afsnittet Indlejret sætmodel .

Hvis du bruger en ORM som Doctrine, er den inkluderer indlejrede sæt-funktioner .

Det kan være svært for nogle at forstå de indlejrede sæt begreber venstre og højre. Jeg har fundet ud af, at ved at bruge disse tal som en analogi til linjenumrene for åbne/lukke-tags i et XML-dokument, finder folk det lettere at forstå.

Tag for eksempel dataeksemplet fra MySQL-linket ovenfor:

+-------------+----------------------+-----+ -----+| kategori_id | navn | lft | rgt |+-------------+----------------------+-----+---- -+| 1 | ELEKTRONIK | 1 | 20 || 2 | TV | 2 | 9 || 3 | RØR | 3 | 4 || 4 | LCD | 5 | 6 || 5 | PLASMA | 7 | 8 || 6 | BÆRBAR ELEKTRONIK | 10 | 19 || 7 | MP3-AFSPILLERE | 11 | 14 || 8 | FLASH | 12 | 13 || 9 | CD-AFSPILLERE | 15 | 16 || 10 | 2-VEJS RADIOS | 17 | 18 |+--------------+----------------------+-----+---- -+

Hvis du tager lft , rgt felter og bruge dem som linjenumre til et XML-dokument, får du:

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. <2-vejs radioer>18. 19. 20.

At se det på denne måde kan gøre det meget nemmere for nogle at visualisere det resulterende indlejrede sæthierarki. Det gør det også tydeligere, hvorfor denne tilgang forbedrer effektiviteten, da den gør det muligt at vælge hele noder uden behov for flere forespørgsler eller joinforbindelser.



  1. Ingen understøttelse af OVER i MS SQL Server 2005?

  2. MySQL i skyen - Online migration fra Amazon RDS til EC2 Instance:Part One

  3. Den mest effektive måde at gemme IP-adresse i MySQL

  4. Sådan fungerer INTERSECT i SQL Server