On Fri, 24 Oct 2003 11:53:19 +0200, Kasper Katzmann
<kasper@FJERNESkatzmann.dk> wrote:
> Er der nogen her kan give mig lidt inspiration til hvordan jeg
> strukturerer min MSSQL database, når jeg skal have breadcrumbs
> på mit site.
>
> Alt på sitet (tekst m.m.) skal ligges i databasen. Kan jeg klare mig med
> en tabel eller skal jeg have flere tabeller som jeg så skal joine?
Hvis dine sider er organiseret i en træstruktur, kan du måske gøre noget i
stil med følgende:
Struktur:
Forside
+---Produkter
| +---Billeder
|
+---Kontakt
Tabel:
+---------------------+
| tree |
+-------+-------------+
| name | varchar(16) |
| lft | int(11) |
| rgt | int(11) |
+-------+-------------+
Data:
+-----------+-----+-----+
| name | lft | rgt |
+-----------+-----+-----+
| Forside | 1 | 8 |
| Produkter | 4 | 7 |
| Billeder | 5 | 6 |
| Kontakt | 2 | 3 |
+-----------+-----+-----+
Nu kan du lave et breadcrumb trail til siden Billeder vha. følgende
forespørgsel:
SELECT t2.*
FROM tree AS t1, tree AS t2
WHERE t1.lft BETWEEN t2.lft AND t2.rgt AND t1.name='Billeder'
ORDER BY lft;
+-----------+-----+-----+
| name | lft | rgt |
+-----------+-----+-----+
| Forside | 1 | 8 |
| Produkter | 4 | 7 |
| Billeder | 5 | 6 |
+-----------+-----+-----+
Problemet er at det koster at indsætte nye sider fordi du i snit er nødt
til at opdatere halvdelen af alle lft og rgt værdier når du indsætter en
ny side.
Du kan læse mere om ovenstående i en af Joe Celko's artikler:
http://dbforums.com/archives/t62329.html
http://www.dbmsmag.com/9603d06.html
http://www.intelligententerprise.com/001020/celko.shtml
Mange venlige hilsner,
Morten Wulff
--
Self Injury Information and Support:
www.psyke.org
"I have a school book with my name on it."
"Your parents must be so proud." (
http://www.actsofgord.com/)