phpbar.de logo

Mailinglisten-Archive

[php] [OT] Datenbankdesign mit Mehrsprachigkeit

[php] [OT] Datenbankdesign mit Mehrsprachigkeit

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Fre Nov 24 22:00:55 CET 2006


Hallo Ralf,

Am Freitag, 24. November 2006 12:17 schrieb Lutz Zetzsche:
> Ralf Eggert schrieb:
> > Der Fremdschlüssel in "Mensch" sollte ja immer den gleichen Wert
> > haben, unabhängig von der Sprache. Daher muss der Primärschlüssel
> > in "Familienstand" ja aus einer ID und dem Sprachschlüssel
> > bestehen. Ein Beispiel:
> >
> > ID   Sprache   Bezeichnung
> > 1    de        verheiratet
> > 1    en        married
> > 2    de        geschieden
> > 2    en        divorced
> >
> > Also "ID" und "Sprache" zusammen müssen unique sein und somit den
> > Primärschlüssel bilden. Bei MySQL ist es meines Wissens aber nicht
> > möglich, nun eine Fremdschlüssel Verknüpfung zwischen "Mensch" und
> > "Familienstand" einzurichten, bei der nur die "ID" verwendet wird.
> >
> > Vielleicht habe ich da auch eine Denkblockade... ;-)
>
> dazu kann ich aus eigener Erfahrung noch nichts sagen. Alles, was
> hierzu gilt, steht vermutlich auf dieser Seite:
>
> http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints
>.html
>
> Wenn ich Zeit finde, werde ich aber mal selbst testen. Vielleicht
> kann ich Deine Frage dann beantworten.

also ich habe es bei mir mit MySQL 5.0.24a gerade einmal getestet. Es 
hat problemlos funktioniert, was Du möchtest und von dem Du meintest, 
es ginge nicht. Tabellenstrukturen siehe unten. :-)

Viele Grüße
Lutz


-- --------------------------------------------------------

CREATE TABLE `parent` (
  `id` int(11) NOT NULL,
  `lang` varchar(2) NOT NULL,
  PRIMARY KEY  (`id`,`lang`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

CREATE TABLE `child` (
  `id` int(11) default NULL,
  `parent_id` int(11) default NULL,
  KEY `par_ind` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `child`
  ADD CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES 
`parent` (`id`) ON DELETE CASCADE;

php::bar PHP Wiki   -   Listenarchive