MySql Und Tabellen erknüpfen?
-
Hi,
hab mein DB-Modell fertig und möchte das ganze incl. Beziehungen (Verknüpfungen) in mysql implementieren.
Jetzt das Problem wie erstelle ich die Tabellenverknüpfung???
Mit joins kann nicht sein, denn soll keine "Abfrage" --> von Datensätze sein.
Sondern NUR die Tabellen sollen verknüpft werden z.B. eine 1:N Beziehung wie stelle ich soetwas in mysql da????Vielleicht mit foreign Kesy???
so:[/code]
CREATE TABLE abteilung
(
ID INT NOT NULL DEFAULT 0 AUTO_INCREMENT,
Abteilungsname VARCHAR(255) NOT NULL,
FOREIGN KEY (ID) REFERENCES mitarbeiter (Abteilung_ID),
PRIMARY KEY (ID)
);CREATE TABLE mitarbeiter
(
ID INT NOT NULL DEFAULT 0 AUTO_INCREMENT,
Abteilung_Id INT NOT NULL,
PRIMARY KEY (ID)
);[/code]oder wird das ganze doch mit joins realisiert????
[code]
select name, url from tab1, tab2
where
tab1.id = tab2.id[code]Wäre echt super wenn mir schnell jemand helfen könnte, es ist dringend!!!!
Lg die Jule

-
Mit join. Foreign Keys dienen hauptsächlich zur referentiellen Integrität, welche von MySQL gar nicht wirklich unterstützt wird (d. h., Beziehungen werden überprüft). Es gibt zwar das Keyword Foreign Key, dient aber imho nur für die SQL-Kompatibilität....
-
Hm, ja das dachte ich mir auch aber wie würdest du folgende Tabellen "Abteilung" und "Mitarbeiter" 1:N miteinander verknüpfen??
//Wie gesagt du müsstest jetzt spalte Abteilung von Tabelle Abteilung
mit spalte Abteilung von Tabelle Mitarbeiter verknüpfen???
Tabelle Abteilung
-----------
Abteilung //Schlüssel
KuerzelTabelle Mitarbeiter
-------------
Mitarbeiter ID
Gruppen ID
Vorname
Abteilung
-
Fremdschlüssel gibts ab Version 5.1:
-
Ich weiss jetzt nicht genau, ob ich dich richtig verstehe, aber durch den Schlüssel, den du einträgst, besteht ja quasi eine Verbindung. Nur MySQL überprüft das nicht, sondern du must dafür sorgen, dass das passt.
Du kannst z. B. auch Mitarbeitern eine Abteilung zuweisen, die es gar nicht gibt. Das sowas nicht passiert, ist deine Aufgabe (oder die, deiner Applikation).
-
Hmm...verstehe ich erstelle/definiere quasi nur die Tabellen und die Spalten mit:
(CREATE TABLE....) okay...Später werde ich noch HTML/Php Scripte schreiben und spätestens,
wenn ich die Masken hab muss ich dafür sorgen das diese Abfragen dann per "Joins" erfolgen, oder???Aber schon mal vielen dank.
-
Ja, wobei du die Foreign Keys schon mit angeben kannst. Das erleichtert dir später das exportieren in andere Datenbanken, die Foreign Keys auswerten bzw. auf MySQL 5. MySQL lebt eben von der Geschwindigkeit, weswegen diese Features (noch) nicht implementiert sind. Wenn du die InnoDB Engine nutzt, dann hast du sogar jetzt schon Integrität etc, wobei die natürlich langsamer ist.
However, also ich mach das auch immer so, dass ich entweder
- die Applikation so aufbaue, dass die eben fur Integrität sorgt
- PostgreSQL nehme
Allerdings gab es bei den Sachen, die ich bisher gemacht habe, keinen großen Bedarf danach....
-
Hm....
dann sollte meine Applikationn später für die Integrität
sorgen hmmm...ein wichtiges Thema.D.h wenn ich meine SQL Code später für die Prüfung abgebe,
dann muss ich die Integrität anhand des "Masken-Codes"
nachweisen...hmpf.gibt es vielleicht noch tipps mit was ich den code einfügen kann,
außer alles selbst per Hand ins "cmd" zu tippen ?
ich wollte die Tabellen-Struktur schon mal in eine TXT schreiben.ich glaub in sql gibts n Befehl "LOAD DATA"...hmmm...

Aber vielen Dank!
-
phpMyAdmin ist recht praktisch zum verwalten von MySQL Datenbanken - allerdings verlangt es PHP.
Aber damit kannst du auch zB die Tabellenstruktur mit den Verknüpfungen in ein PDF exportieren
