PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysql: relationen per phpmyadmin



jean_luc_picard
21.03.03, 20:22
hallo leute,

irgendwie bekomme ich das nicht hin... aber vielleicht verstehe ich da ja auch was falsch. nehmen wir mal tiere als beispiel (weil die auch in der mysql doku gern zuhilfe genommen werden ;) ):

ich habe eine tabelle, in der die namen, geburtstag, art usw. stehen. nun habe ich eine weitere tabelle, in der ereignisse (arztbesuche, gewicht etc.) aufgeführt werden sollen. dann bietet es sich hier doch an, die namen nicht nochmal einzugeben, sondern immer auf die erste tabelle zurückzugreifen...

also ich hab erstmal ne datenbak "test" erstellt, in dieser befinden sich folgende tabellen:

master: ID ; name ; strasse
slave: name ; tel

ist sicher kein praktisches beispiel, aber ich will ja erstmal nur wissen, wie das geht... ;)
wie stellt man es nun an, das in der "slave"-tabelle nur namen aus der "master"-tabelle eingefügt werden können?

Harry
22.03.03, 13:15
Original geschrieben von jean_luc_picard
master: ID ; name ; strasse
slave: name ; tel

ist sicher kein praktisches beispiel, aber ich will ja erstmal nur wissen, wie das geht... ;)
wie stellt man es nun an, das in der "slave"-tabelle nur namen aus der "master"-tabelle eingefügt werden können?
Innerhalb des Datenbanksystems MySQL läßt sich sowas derzeit überhaupt nicht festlegen, da MySQL keine referentielle Integrität kennt und es somit auch keine Möglichkeit gibt, Deine o.g. Anforderung zu definieren.

Bei der Nutzung von MySQL bleibt es vorerst dem Anwendungsentwickler überlassen, die referentielle Integrität innerhalb der Anwendung selbst herzustellen; der Datenbank ist es ansonsten schnurz, in welcher Tabelle Du welche Datensätze einfügst bzw. löscht.

Übrigens: Die Verbindung zwischen den beiden Tabellen würde man über ein Primärschlüsselfeld (ein Feld, welches einen Datensatz der jeweiligen Tabelle eindeutig identifiziert -> in der Regel ein eindeutiger numerischer Wert) der Tabelle slave durchführen. In der Tabelle master muß dann pro Datensatz nur noch der Primärschlüsselwert des aus der Tabelle slave verbundenen Datensatzes übernommen werden.

Also zum Beispiel:
master: id, name, strasse, telefon, slave_id
slave: id, datum, besuchsgrund, ...

Das Verknüpfungskriterium zwischen beiden Tabellen wären somit das Feld slave_id der Tabelle master und das Feld id der Tabelle slave.

PS: Eine bessere Hilfestellung zum Thema MySQL bekommst Du in unserem Partnerforum http://mrunix.de :)

Harry