InnoDB m:n Beziehung

  • Themenstarter Themenstarter SpeedyTom
  • Beginndatum Beginndatum
S

SpeedyTom

Hallo Leute,

ich habe ein Problem mit einer m:n Beziehung in der DB.

Wenn ich solch eine Beziehung darstellen will, muß ich doch in der Beziehungrelation die Primärschlüssel der beteiligten Relationen als Fremdschlüssel übernehmen.

Mein Problem ist nun die Syntax der Beziehungsrelation. Mal das Beispiel:
CREATE TABLE verein
(name varchar(50) not null ,
jahr int,
zweck text,
primary key(name)) TYPE=INNODB;

CREATE TABLE person
(name varchar(50) not null,
nachname varchar(50) not null,
adresse text,
primary key(name,nachname)) TYPE=INNODB;

create table mitglied
(pers_name varchar(50) not null,
pers_nachname varchar(50) not null,
verein_name varchar(50) not null,
von int,
bis int,
primary key (pers_name,pers_nachname,verein_name),
foreign key (pers_name,pers_nachname) references person(name,nachname)) TYPE=INNODB;

Soweit klappt ja alles. Das Problem ist nun wie ich
verein_name in die Relation mitglied noch als Fremdschlüssel reinbekomme.

Wäre schön wenn Ihr mir da helfen könntet.
Danke Speedy
 
Also bin zwar auch nicht der Experte in MySQL aber soweit ich weiß kann man keine m:n Beziehungen machen, man muss es in 1:n umwandeln...

Das heißt, du brauchst eine seperate Tabelle die genau in der mitte der anderen beiden steht und die äußeren somit primary key haben und der mitlere die fremtschlüssel...

Also in etwa so...

tbl:A tbl:B tbl:C
1 -> N N <- 1


MfG
Spacedoener
 
So ist es. Keine Relationale Datenbank kann sauber eine n : m Realtion ohne Hilfstabelle abbilden, ohne gegen das ACID Prinzip zu verstossen.

Chris
 
Zurück