Avatar billede webcreator Nybegynder
02. juli 2004 - 11:25 Der er 5 kommentarer og
1 løsning

PHP og MySQL - Struktur og optimering

Hej Eksperter.

Jeg har to tabeller i min database - brugere og poster.
Jeg ønsker at kunne angive, hvilke poster der er lavet af hvilke brugere. Mit spørgsmål går nu på - kort og godt - om jeg bør placere brugerens navn i posten eller hans ID.

1) Brugerens ID bruges som reference
2) Brugerens navn bruges som reference

Der er jo fordele/ulemper ved begge :

1)
Fordel : Et tal fylder mindre i databasen
Ulempe : Tallet skal laves til et navn vha. PHP

2)
Fordel : PHPfortolkeren belastes mindre
Ulempe : Databasen bliver "tungere".

Jeg ved at vi snakker virkelig små forskellige i performance. Men lad os forestille os, at jeg har en million brugere. Hvilken løsning ville i givet fald så være den optimale?
Avatar billede webcreator Nybegynder
02. juli 2004 - 11:32 #1
Faktisk vil PHP fortolkeren blive belastet lige meget - lige gyldigt hvilken metode jeg bruger.

1)
- Her skal jeg hente brugerens ID først (har hans brugernavn i en session/cookie)
- Gemmes i DB'en (fylder ikke ret meget)
- Brugernavn hentes vha. ID

2)
- Brugerens navn skal hentes i DB'en (for at være sikker på at det er skrevet ordentligt - fx. uden CapsLock ved logon
- Placeres i DB'en (fylder mere)
- Hentes fra DB'en - spare en query i forhold til 1)
Avatar billede webcreator Nybegynder
02. juli 2004 - 11:32 #2
Eller.. "lige meget".. Ved jeg nu ikke. Men jeg er i tvivl om hvorvidt det kan betale sig at bruge ID numre i databasen frem for navnene.

Hvad gør man fx. på Eksperten?
Avatar billede Slettet bruger
02. juli 2004 - 11:42 #3
Jeg ville nok vælge at bruge brugerens ID som reference.

Hvis du brugte navn som reference, og skulle rette en brugers navn pga. stavefejl, skulle du så til at rette i alle de poster som brugeren havde deltaget i.

Hvis du brugter ID, kunne du nøjedes med at rette et sted.

ID skulle gerne være entydigt, i modsætning til navn, der kunne jo være mere end en der hed "Hans Jensen"...
Avatar billede Slettet bruger
02. juli 2004 - 11:45 #4
Uanset hvilken metode du bruger, tror jeg ikke du slipper for at lave mindst en join eller subquery.
Avatar billede webcreator Nybegynder
02. juli 2004 - 11:50 #5
Med navn mente jeg brugernavn - hvilket der også kun kan være et af. Kunne du så ikke vide, når jeg ikke skrev det :)
Avatar billede webcreator Nybegynder
10. juli 2004 - 12:41 #6
For tak input. Jeg er ved at lukke spørgsmål - hvis nogen føler de burde have points, så kontakt mig i et af mine aktive spørgsmål - så finder vi ud af noget dér.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester