Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Lösungen ohne Fremdschlüssel / foreign keys





Frage

Hallo sn, ich hab nun gerad mein das Design meiner ersten Datenbank mit einigen Tabellen inkl. Fremdschlüsseln fertiggestellt. Nun entdecke ich, daß meine MySQlversion Fremdschlüssel nicht unterstützt. [b]Was mache ich im Falle, daß ich nicht mit Fremdschlüsseln arbeiten kann, aber der Datenbank die Verbindungen aufzeigen möchte?[/b] [b]Gebe ich die Verbindunge vielleicht erst in dem Augenblick an, wenn ich z.B. per PHP die Daten ausgeben lassen will oder gibt es auch ganz andere Alternativen ?[/b] z.B. mit [code] SELECT titel, verlag FROM alletitel, verlage WHERE alletitel.verlagid = verlage.verlagid [/code] Vielen Dank für Eure Tipps Mel

Antwort 1 von Supermax

Eine Verknüpfung zwischen 2 oder mehreren Tabellen (JOIN) funktioniert unabhängig davon, ob die die Datenbank-Engine Fremdschlüssel ("referenzielle Integrität") unterstützt oder nicht.

Für die meisten "normalen" Anwendungen reicht das auch vollkommen aus; nur wenn es wirklich auf Datensicherheit ankommt, sollte man die Beziehungen der Tabellen schon auf Datenbankebene festlegen. Auf diese Art wird z.B. verhindert, daß ein untergeordnetes Objekt eingefügt werden kann, wenn das übergeordnete Objekt noch nicht existiert. In deinem Fall also ließe sich kein titel einfügen, wenn noch kein Verlag mit der entsprechenden Verlagid existiert; umgekehrt würde die Datenbank auch einen Fehler melden, wenn versucht wird, einen Verlag zu löschen, der noch untergeordnete Titel hat.

All das kann man, ein wenig Sorgfalt vorausgesetzt, aber auch auf Applikationsebene lösen bzw. überprüfen. Notfalls kritische Operationen mit LOCK TABLES..../ UNLOCK TABLES einschließen.

Antwort 2 von Mel

Zitat:
nur wenn es wirklich auf Datensicherheit ankommt, sollte man die Beziehungen der Tabellen schon auf Datenbankebene festlegen.


Welche empfehlenswerten Lösungen gibt es, Beziehungen auf Datenbankebene festzulegen?

In meinem Fall wird z.B. die innoDB nicht unterstützt bzw. keine Anlegen von Fremdschlüsseln bei MySQL möglich.

Dann müßte man wahrscheindlich eine andere Datenbank als MySQL in Erwägung ziehen oder?


Vielen Dank für erneuten Support

Gruss mel

Antwort 3 von Supermax

Du könntest auf PostgreSQL umsteigen, das hat foreign key constraints von Haus aus eingebaut; ob es Firebird auch unterstützt weiss ich leider nicht.

Antwort 4 von Mel

Dank Dir.
Das schau ich mir dann noch einmal genauer an.

Bis später und vielen Dank
Gruss Mel

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: