Relaties aanleggen in MySql

Status
Niet open voor verdere reacties.

bikerron

Gebruiker
Lid geworden
9 mei 2009
Berichten
236
Hallo,
Ik ben van Access overgestapt naar een Back-End in MySql. In Access heb je de mogelijkheid om Relaties tussen de tabellen aan te leggen.
Het handige binnen Access is dat als je een record weg zou gooien dat je dan de optie kon krijgen of je ook de gerelateerde records moest verwijderen.

Hoe doe je dat binnen MySql? Zijn daar scripts voor te maken?

Ron
 
Hoi,
Zijn er toch nog kenners die mij hiermee uit de brand willen helpen? Ik weet dus niet hoe ik het voor elkaar krijg om met behulp van MySql relaties aan te brengen tussen de tabellen.
Als ik dat niet doe dan kunnen records verwijderd worden die nog een afhankelijkheid hebben in andere tabellen.
Please, some one?

Ron
 
Ik heb het volgend als oplossing gevonden.
Het blijkt dat het belangrijk is dat je tabellen gedefinieerd moeten zijn als: ENGINE=InnoDB dit is de laatse regel in een CREATE table opdracht.
Om dit te bereiken zul je, uitgaande van al bestaande tabellen, de tabellen eerst moeten exporteren, met de data!, en dan in de export file een wijziging aanbrengen.

Code:
CREATE TABLE IF NOT EXISTS `tabelnaam` (
 `Veld_1` int(11) NOT NULL AUTO_INCREMENT) 
ENGINE=[COLOR="#0000FF"]InnoDB[/COLOR]  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2849 ;

Normaal gesproken staat er dus:
Code:
CREATE TABLE IF NOT EXISTS `tabelnaam` (
 `Veld_1` int(11) NOT NULL AUTO_INCREMENT) 
ENGINE=[B][COLOR="#FF0000"]MyIsam[/COLOR][/B]  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2849 ;

Dit moet dus voor ALLE tabellen worden ingesteld waar een Foreign Key voor nodig is.
Vervolgens doe je de volgende stappen:
- Open je PhpMyAdmin (die is warschijlijk al geopend want je hebt geëxporteerd en daarna geïmporteerd.
- Selecteer de tabel waar je een Foreign Key op wilt plaatsen
- Bekijk de Structuur van de tabel, alle velden met de definities worden nu zichtbaar.
- BELANGRIJK: Het veld voor de Foreign Key moet ook gemarkeerd zijn als een INDEX!
- Direct ONDER de Selecteer / Deselecteer alles opties zie de onderstaande mogelijkheden
Afdrukken Relatieoverzicht Tabelstructuur voorstellen
- Klik op Relatieoverzicht, een nieuw scherm wordt geopend en ALLE velden in de tabel worden getoond.
- Klik op de kolom, eerste kolom, van het veld waar je een Foreign Key op wilt zetten en vervolgens op de tweede kolom en geef aan met welke tabel de relatie gemaakt moet worden
- Tenslotte geef je in de laatste 2 kolommen aan wat er gedaan moet worden bij een Delete en / of Update. (Cascade zal inhouden dat dan ALLE records "geraakt" gaan worden)

Voor hen die er mee aan de gang gaan, succes.
Hierbij een de link waar ik de wijsheid vandaan heb: http://stackoverflow.com/questions/459312/setting-up-foreign-keys-in-phpmyadmin?rq=1

Ron
 
Hier ben ik weer.

Ik was dus enthousiast maar ben het nu niet zo erg meer om met de engine InnoDb te werken.
De benadering van de tabellen, vanuit Acces front-end, is zeeeeer traag. Een simpele view voor het totatilseren van records voor 10 tabellen duurt een eeuwigheid. Zowel direct via MySql als vanuit de Front-end.
Ik heb de handel dus weer teruggezet naar engine MyIsam.

Ik ben er hierbij achtergekomen dat je deze wijziging voor een engine sneller kunt laten uitvoeren dan in mijn eerdere bericht (via een export en dan aanpassen van de engine en daarna weer importeren).

Je kunt dit als volg uitvoeren:
- Open je PhpMyadmin.
- Selecteer de database
- Selecteer een tabel
- Selecteer de structuur van de tabel
- Selecteer "handelingen", dit vind je in de 2de rij tabbladen, boven in
Er wordt hierna een scherm getoond en in het "vak" tabel opties vind je o.a. "Opslag Engine"
- Wijzig in de optie bij het vak "Opslag Engine" naar een van de genoemde opties (Innodb / MyIsam....)
- Druk op start.

herhaal bovenstaande voor elke tabel waarvan je de engine wilt wijzigen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan