20. juli 2003 - 14:38Der er
17 kommentarer og 2 løsninger
ID, points og uendeligt antal kommentare. Hvordan?
Hej.
Jeg skal til at lave et system, hvor mine brugere kan give en post points samt en kommentar. Jeg havde forestillet mig et ID-felt, hvor ID'et til den pågældende post blev indsat. Det næste felt skulle være "points", som angivet karakteren af posten. Nu mangler jeg så kun kommentarene. Men hvordan skal det laves ? Jeg kan kun se ulemper ved, at have det liggende vandret i tabellen.
Jamen selv om jeg smider kommentare i en anden tabel, så vil disse jo stadig ligge "vandret" i databasen. Og da jeg ikke kan gætte mig til, hvor mange kommentare der bliver skrevet, er dette heller ikke smart.
Jeg har overvejet, om det kunne laves som lodret i stedet. Hvor feltets navn blot bliver ID'et til den aktuelle post - og nedenfor kommer alle kommentarene så. Nogen ulemper ved dette ?
"Men der kan godt være flere records med samme postid i kommentar tabellen." Forstod jeg ikke helt. Der er jo ikke 2 poster som har samme ID.
Problemet med modellen, der benytter lodret struktur er, at jeg igen ikke ved hvor mange poster der vil blive lavet. Så enten skal der automatisk blive lavet et felt i kommentar-tabellen, når en post oprettes, eller også skal feltet først oprettes, når den første kommentar "kommer ind".
Ville sidstnævnte ikke være smartest ? Hvordan tjekker man i givet fald, om et felt eksistere ?
Ok, jeg forstår ikke hvad du mener. Men kan flg. bruges :
Post-tabel (har et ID nr. for hver post - ingen gengangere)
Point-tabel (Feltet ID får samme værdi som en aktuel post, feltet points indeholder karakteren)
Kommentar-tabel (Har et primary ID felt (skal egentlig ikke bruges til noget, men kan blive brugbart senere. Når en kommentar skrives, oprettes et felt automatisk med samme ID nr. som posten har. Herunder lægges alle kommentarer)
Men er min løsning ikke "hurtigere" ? Nu skal den jo hen og finde/søge de poster, som har IDet X. Ved min løsning kan man blot lave en "direkte" select - hvis i forstår
CREATE INDEX kommentar_post_ix ON kommentar (postid);
og den gør at MySQL laver et index således at den lynhurtigt kan finde alle records i kommentar med postid=27 i stedetfor at skulle lede hele tabellen igennem efter records med postid=27.
(du behøver ikke oprette index på primær nøgler - det sker automatisk, men felter du bruger til join og where betingelser som ikke er primær-nøgler er det ofte en god eide at sætte index på)
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.