Avatar billede lademan Novice
11. oktober 2003 - 10:04 Der er 17 kommentarer og
1 løsning

Hensigtsmæssig forumdatabasestruktur

Jeg er ved at lave sturkturen om i et forum og påtænker at lave en stuktur som følgende:

TABEL 1: forum_spm
id - emne - dato - overskrift - indhold - bruger

TABEL 2: forum_svar
id - emne - dato - overskrift - indhold - bruger

Er det en dårlig måde at strukturere databasen på? Og er der en bedre måde?
Avatar billede lademan Novice
11. oktober 2003 - 10:11 #1
i tabel 1 sløjfer jeg nok emne og bruger istedet id om emne-reference
Avatar billede arne_v Ekspert
11. oktober 2003 - 10:18 #2
Da der vel kan være flere svar til et spørgsmål, så vil ID i svar
ikke være unik og kan derfor ike bruges som primær nøgle (det er
kun en fremmed nøgle osm peger op spm tabellen).

Derfor bliver du nok nødt til at lave et ekstra felt i svar til
en primær nøgle.

Du kan f.eks. omddøbe id til spmid og kalde den nye for id.

Helt enig med at emne kun skal være i spm.
Avatar billede lademan Novice
11. oktober 2003 - 10:21 #3
tabel 1's id er emnets primær nøgle
Avatar billede arne_v Ekspert
11. oktober 2003 - 10:24 #4
Ja men tabel 2 skal jo også have en primær nøgle og en fremmed nøgle
som pger på tabel 1's primær nøgle.
Avatar billede lademan Novice
11. oktober 2003 - 10:26 #5
hehe, jamen det er jo emnet i tabel 2 :-)
Avatar billede lademan Novice
11. oktober 2003 - 10:27 #6
der er fremmed nøgle
Avatar billede arne_v Ekspert
11. oktober 2003 - 10:29 #7
Nå...

Men nok en dårlig fremmed nøgle.

Fordi hvad nu hvis der oprettes 2 spm med samme emne ?
Avatar billede lademan Novice
11. oktober 2003 - 10:31 #8
det er der vel ikke noget i vejen for?
Avatar billede lademan Novice
11. oktober 2003 - 10:33 #9
jeg er ikke med?
Avatar billede lademan Novice
11. oktober 2003 - 10:34 #10
når en bruger opretter et spm tildeles han sit eget id.
når en anden bruger svarer på ovenstående spm, sættes hans emne lig ovenstående id.
Avatar billede arne_v Ekspert
11. oktober 2003 - 10:47 #11
så tabel 2 emne -> tabel 1 ID ?

Det er der ikke nogen problemer med.

Jeg finder bare deltnavngivningen lidt misvisende.
Avatar billede lademan Novice
11. oktober 2003 - 13:26 #12
hvordan vil du så lave udtrækket?
Avatar billede lademan Novice
11. oktober 2003 - 13:28 #13
i forumoversigten over de nyeste indlæg?
Avatar billede lademan Novice
11. oktober 2003 - 13:34 #14
så skal man vel sammenligne datoerne i de to tabeller?
Avatar billede arne_v Ekspert
11. oktober 2003 - 14:32 #15
Jeg ville lave det som:

forum_spm
---------
id
emne
dato
overskrift
indhold
bruger

forum_svar
----------
id
spmid
dato
overskrift
indhold
bruger

Nyste spørgsmål:

SELECT * FROM forum_spm,forum_svar
WHERE forum_spm.id=forum_svar.spmid ORDER BY forum_spm.dato DESC;

Nyeste svar:

SELECT * FROM forum_spm,forum_svar
WHERE forum_spm.id=forum_svar.spmid ORDER BY forum_svar.dato DESC;
Avatar billede lademan Novice
11. oktober 2003 - 15:48 #16
det ser godt ud! - hvordan henter du fx forum_spm's værdi $row[id] i ovenstående kode? (har ikke prøvet at arbejde med to udtræk på samme tid)
Avatar billede arne_v Ekspert
11. oktober 2003 - 15:57 #17
Ups.

Nu er vi vist ovre i PHP.

Og jeg kender ikke PHP.

Jeg vil formode at det genelt er $row[feltnavn] og at hvis det giver
problemer med felter fra forskellige tabeller med samme navn at du så
kan bruge

SELECT forum_spm.id spm_id, forum_svar svar_id, ... FROM ... WHERE ...

og bruge $row[spm_id] og $row[svar_id].

Men det skal du nok have en bekræftigelse på fra en PHP haj.
Avatar billede arne_v Ekspert
25. oktober 2003 - 14:05 #18
Tid at lukke spørgsmålet ?
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