hallo :)
ik wil een blog waarbij je reacties kan plaatsen. Per nieuwe post bij de blog moet je kunnen reageren. Als ik het nu goed begrijp moet je dan 2 tabellen nemen. Klopt dit onderstaande?

Blog
id
naam enzo
bericht

reacties
id (zelfde id als bij blog)
naam enzo
bericht

Is het goed dat álle berichten die bij elke blog horen door elkaar komen?
Nee dat klop niet helemaal. Een reactie moet je ook kunnen aanpassen b.v. en dat kan nu niet.

Een betere manier is:

Blog
id (primary key, auto_increment)
naam enzo
bericht

reacties
id (primary key, auto_increment)
blog_id (blog id, ook wel foreign key genoemd)
naam enzo
bericht
Een nog betere manier is dat de namen ook in een aparte tabel staan.

Edit:

dus zo:

blogs
id
titel

berichten
id
blog_id
naam_id
bericht

namen
id
naam
Martijn! schreef op 26.03.2007 20:31
Nee dat klop niet helemaal. Een reactie moet je ook kunnen aanpassen b.v. en dat kan nu niet.

Een betere manier is:

Blog
id (primary key, auto_increment)
naam enzo
bericht

reacties
id (primary key, auto_increment)
blog_id (blog id, ook wel foreign key genoemd)
naam enzo
bericht


Zo zou ik het ook doen. Wat is hier dan "mis" mee Jan?
waarom is dat beter jan?

edit: oeps vergete te refreshen
Dat is beter omdat je altijd moet proberen zoveel mogelijk "objecten" te scheiden, sowieso vanwege het feit dat het qua performance kan uitmaken, je database word minder groot omdat die namen niet elke keer hoeven terug te komen en je kunt en later nog leuke dingen mee doen, je hebt dan immers de users gescheiden en die zou je weer kunnen gebruiken om een koppeling te maken met iets anders , de mogelijkheden zijn eindeloos (mits je jans principe volgt ;-))
Ik denk dat we hier zaken doorelkaar halen.

Jan Koehoorn, denkt (denk ik :D) dat "naam" een gebruikers naam is in dit geval zou ik een foreign key user_id in beide tabellen opnemen.
Martijn! schreef op 26.03.2007 20:31
Nee dat klop niet helemaal. Een reactie moet je ook kunnen aanpassen b.v. en dat kan nu niet.

Een betere manier is:

Blog
id (primary key, auto_increment)
naam enzo
bericht

reacties
id (primary key, auto_increment)
blog_id (blog id, ook wel foreign key genoemd)
naam enzo
bericht

Wat is er fout met dit datamodel?
Je ziet twee velden, naam en bericht in de tabel Blog. Die velden komen ook voor in de tabel reacties. Dat is een verdubbeling die nergens voor nodig is. Van een blog hoef je alleen maar de titel te weten, meer niet. Het eerste bericht kun je gemakkelijk uit de tabel berichten halen door er een DATETIME aan mee te geven. Je mag hopen en verwachten dat een en dezelfde bezoeker vaker zal posten, dus is een tabel met namen van bezoekers op zijn plaats. Als iemand dan zijn naam verandert, verandert hij in alle posts.
Nu je het zegt.

Zou dit dan beter zijn:

tabel: berichten
id
reactie_op (als 0 dan blog bericht)
user_id
titel
bericht
aangepast_op
gemaakt_op

Normaal doe ik alles in het Engels, maar zo is het duidelijker.

De kolom reactie_op is dus om reacties aan een blog te koppelen. Je zou trouwens ook reacties op een reactie kunnen hebben hiermee.
Mijn dank is groot! /-\o_

Reageren