# MySQL + Fremdschlüssel



## moondancer (5. November 2003)

Hallo,

ich habe gerade gelesen dass MySQL bei Verwendung von InnoDB-Tabellen die Nutzung von Fremdschlüsseln unterstützt. Nun habe ich in der PHPMyAdmin-Oberfläche nachgeschaut, aber da finde ich als Tabellentypen nur MyISAM, Heap, ISAM, und Merge. Wie kann ich eine InnoDB-Tabelle erstellen? Oder unterstützen die anderen Tabellentypen mittlerweile auch Fremdschlüssel? 
Ist es generell sinnvoll in einer MySQL-DB Fremdschlüssel zu verwenden? Dass dadurch die referentielle Integrität sichergestellt wird ist mir klar, aber sinkt dadurch evtl. die Performance und haben InnoDB-Tabellen evtl. Nachteile gegenüber den anderen Tabellentypen?

Viele Grüße
Christian


----------



## XChris (8. November 2003)

HI moondancer,

Ein kleiner Beitrag zu INNODB ist hier:

SDH


gibt es zu InnoDB einige Postings in den Forum und auch einige Beiträge schon. Ich arbeite jeden Tag mit InnoDB.

gehe wie folgt vor:

1. konfigure den MySQL Server um. (my.ini) auf MAX - nur dann geht InnoDB (und einige anderr Tabellentypen. Lies Dir hierzu die sehr gute Doku auf http://www.MySQL.de

Hier der direkte Link:


2. Starte den Server. Er legt jetzt die InnoDB Files an

3. Nimm Deine "KInd" Tabelle und lege über die Spalte, die FK werden soll einen INDEX. Erst dann kannst Du hieraus einen FK definieren.

Das sieht ungefähr so aus:
----
create table t_user(
	uid int(10) unsigned NOT NULL auto_increment,
	UName varchar (50) default NULL,
	UVorName varchar (50) default NULL,
	ULastChange timestamp(14) NOT NULL,
	URight int(10) unsigned NOT NULL,
	Primary Key (UID),
	Key URight(URIGHT),
	FOREIGN Key (URIGHT) REFERENCES ilmtest.t_right(RID)
) TYPE = INNODB;
----

Man kann die FK auch so definieren, das sie cascadierend updates und deletes durchführen.
INNO DB Config 

Abschliessend sei zu bemerken, dass ich INNODB sehr schätzen gelernt habe. Sehr performant, sicher und volle ACID unterstützung. Das ganze für wenig Mäuse auch in fieller Hinsicht.

Chris


----------

