Ik ben bezig met een nieuws systeem en nu wil ik er een score/tevredenheids systeem aan toevoegen.
Per gebruiker en per bericht 1 score (nieuwe tabel)

Dus ik heb nu 3 tabellen, news, Email en Score.

In de score zit het id van zichzelf, id_news en id_email. Deze laatste 2 moet ik dus linken met de id van de overige 2 tabellen (1 op 1 relatie).

Hoe doe ik dat?

Ik gebruik de MySQL admin voor windows en ook PHPMySql, maar ik zie in beide progs niks staan om relaties tussen tabellen te regelen.

Met vriendelijke groet,

Rene
Ben niet zo'n hele uitgebreide mysql'er maar denk dat je je db op innoDB moet zetten en dan foreign keys moet gebruiken...
Dus alleen de database? En waar doe ik dat?

Bij handelingen krijg ik

PMA Database ... Niet Goed[ Documentatie ]
Basis relatie opties Uitgeschakeld
Ik denk met iets als :

SELECT
n.bericht, e.mail, s.score // of zo iets
FROM
news as n, Email as e , score as s
WHERE
s.id_news = n.id AND
s.id_mail = s.id
In dit geval wil je werken met foreign key constraints. Als je MySQL gebruikt zul je inderdaad de InnoDB engine (ipv MyISAM) moeten gebruiken. Hier kun je voor kiezen als je een tabel aanmaakt.

Je kunt daarna in phpmyadmin constraints aanbrengen tussen je tabellen. Dit doe je via het linkje 'Relation View' dat je ziet staan als je het overzicht van je tabel bekijkt.
Ik heb alleen de keuze tussen

MyISAM
MEMORY
ARCHIVE
MRG_MyISAM

??????

Aanvulling:

Als ik kijk onder engines zie ik dat
mijn reserve server (zelfde Mysql versie) wel de Innodb aan staat en bij mijn huidige niet.
Hoe kan ik dit op eenvoudige manier inschakelen?????

Rene


Heb je de sql server lokaal draaien of bij een host? In het tweede geval is het waarschijnlijk alleen de host die dit kan doen...
Ik heb zelf lokaal draaien op een windows doos.

Moet ik nu de hele MySQL opnieuw installeren of is er ook een simpele en/of een snelle oplossing?

Rene
Volgens mij staat deze engine standaard altijd aan als je MySQL installeert, maar ik zou ook op moeten zoeken hoe je hem activeert als dit niet het geval is.

Misschien dat je uit de handleiding wat wijzer kunt worden?
http://dev.mysql.com/doc/refman/5.0/en/innodb.html
Ok, my.ini aangepast, service herstart en het werkt.


Maar nog weet ik niet precies hoe je 1op1. 1pveel of een veelop1 relatie krijgt.

Nu krijg ik inderdaad een relatieoverzicht te zien.

Ik was een access-man, maar hier zie ik toch heel weinig overeenkomsten.
Bij acces kon je een lijntje leggen en zeggen 1 op1, 1op veel of veel op1.

Maar hier ..... On delete ... no action, restrict ?????????????

Rene
Bij acces kon je een lijntje leggen en zeggen 1 op1, 1op veel of veel op1.
Dat is de grafische weergave van datgene dat er eigenlijk in SQL moet worden aangemaakt. Er zijn diverse tools voor oa. MySQL beschikbaar die dit ook zo kunnen weergeven.

Verder kan het geen kwaad om gewoon SQL te gaan leren, daar heb je veel meer aan. Zeker op het moment dat je moet debuggen of een systeem gaat uitbreiden.

Reageren