Avatar billede sanderg Nybegynder
21. februar 2010 - 01:17 Der er 8 kommentarer og
1 løsning

Databas design til kommentarer

Hej alle,

Jeg har et spørgsmål om et databasedesign til mine kommentarer, som jeg vil have til nogen indlæg på min hjemmeside. Man skal både kunne oprette en kommentar, hvis man er logget ind eller bare som gæst. Min "users" tabel ser nogenlunde således ud:

users:
id <- brugerens id
firstname
lastname
email
website
birthday
country
language
... osv. mht. info omkring brugeren

Jeg har så have lavet en tabel til kommentarer, som vil komme til min indlæg (i det her tilfælde, er hver video et indlæg):

videos:
id
user_id <- den bruger som har uploadet filmen (users.id)
url
image
keywords
title
... osv. mht. info omkring videoen

Hvordan skal min "comments" tabel så se ud, hvis den både skal håndtere kommentarer fra brugere som er logget ind, og gæster? Tænkte lidt på:

comments:
id
user_id <- hvis en bruger har oprettet den, så henviser den til (users.id). Ellers 0 hvis det er en gæst som har oprettet.
guest_id <- igen her henviser den til guests.id (som jeg om lidt viser). Ellers 0 hvis det er en bruger som har oprettet.
comment <- kommentaren
date
ip

Og så comments_guests:

guests:
id
name
email
website

Så jeg faktisk har infoen omkring gæsten og brugeren i tabellerne guests og users, og selve kommentaren i comments. Men hvordan vil I anbefale det?
Avatar billede arne_v Ekspert
21. februar 2010 - 03:31 #1
Jeg ville vælge en løsning hvor comments tabellen kun har et felt som henviser og det id så kan dække både registrede brugere og gæster.
Avatar billede arne_v Ekspert
21. februar 2010 - 03:34 #2
F.eks.:

users
-----
id
firstname
lastname
email
website
type (1=registered user,2=guest)

registed_users
--------------
id (->users.id)
birthday
country
language

comments
--------
id
user_id (->users.id)
comment
date
Avatar billede sanderg Nybegynder
21. februar 2010 - 13:00 #3
Det ser ud som en god løsning. Men der bliver jo oprettet en ny bruger hver gang en der er en, som ikke er logget ind, der skriver en kommentar. Så bliver der jo blandet enormt mange gæstebrugere sammen med de registrerede brugere. Alle gæstebrugere bliver jo kun brugt én gang.
Avatar billede arne_v Ekspert
21. februar 2010 - 14:37 #4
Hvis de opgiver samme email adresse, så giver du dem vel samme id?

Og hvis de senere registrerer sig (med samme email adresse), så kan du også koble dem.
Avatar billede sanderg Nybegynder
21. februar 2010 - 14:44 #5
Jeps tak for svaret. Du har åbnet mine øjne meget mere. En ulempe vil nok være, at folks email-adresser kan misbruges. Jeg må finde ud af hvad jeg gør. Smid lige et svar, så du kan få pointsne. Du mangler også at smide en svar til mit andet indlæg: "Points til MVC i PHP". :-)
Avatar billede arne_v Ekspert
21. februar 2010 - 14:49 #6
Du behøver jo ikke at vise email adresser selvom dem der poster kommentarer skal angive en.

Hvis du er bekymret for om de angiver deres egen, så kan du jo tage det tunge skyts i brug: sende dem et confirmation link til email adressen og først når der klikkes på det er den OK.

Det har naturligvis også nogle ulemper.

Men se sådan på det - det er betydeligt nemmere at gætte et navn som vises end en email adresse som ikke vises, så du er under alle omstændigheder bedre stillet ved at koble på email adressen.
Avatar billede arne_v Ekspert
21. februar 2010 - 14:49 #7
Og et svar.
Avatar billede arne_v Ekspert
21. februar 2010 - 14:49 #8
Husk noget CAPTCHA for at undgå spambots !
Avatar billede sanderg Nybegynder
21. februar 2010 - 14:54 #9
Jeps, CRAPTCHA kører jeg også med nu. Mange tak for idéerne!
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