MySQL und Foreign Keys die nicht vorhanden sind

matze085

Cadet 3rd Year
Registriert
Dez. 2005
Beiträge
58
Hey leute
ich hoffe es kann mir einer Helfen.
Ich muss ein System entwickeln, das recht viel mit einer Datenbank arbeitet und in Java geschrieben ist.
Das ist an und für sich nicht das problem, aber ich habe ein Problem mit den Foreign Keys.
Ich brauche im System öffter mal diese Keys, aber in Tabellen ist es etwas kritisch, denn ich brauche in beiden Tabellen den Key der jeweils anderen.
Aber ich habe dann ein Problem beim erstellen der Datenbank und der Einträge.
Bei mir auf dem Rechner lief es alles ohne problem(benutzte den xampp MYSql Server) aber auf einem andern Rechner ist die Datenbank, etwas feiner ausgelegt und sie meckt beim ansprechen von Foreign Keys die nciht exsistieren.
Bei erstellen der Datenbank war es nicht das Problem diesen Konflikt zu lösen, ich habe die Foreign Keys mit after table gesetzt.
Aber beim erstellen von db einträgen komme ich nicht weiter.
Wie gesagt, ich habe zwei tabellen die jeweils einen Key der anderen haben und ich muss jetzt bei beiden einen neuen Eintrag erstellen, der einen Foreign Key benutzt der auch erst jetzt eingetragen werden muss. Aber er lässt mich nciht, da der Foreign Key ja jetzt noch nciht besteht.
Kann mir jemand helfen? Gibt es eine Möglichkeit ihm zu sagen, das der nachgereicht wird, oder gibt es einen Befehl, der die eine Datenbank(nicht den ganzen Server) nicht so sensibel macht. ich habe was gelesen davon, das man das checken der Foreign Keys ausschalten kann, aber ich glaube, das ist eine option für den kompleten SQLServer.
Ich meine aber irgendwo auch mal gelesen zu haben, dass man beim erstellen der einen Datenbank oder Tabelle mit angeben kann ob die keys gecheckt werden
Danke
matze
 
Ist die Datenbank so vorgegeben oder darfst das Design verändern?

Wenn du ändern darfst, dann solltest du die Foreign Key - Beziehungen mal überarbeiten. Eine Kreuzbeziehung zwischen zwei Tabellen sollte m.E. unbedingt vermieden werden.
 
Du könntest den Fremdschlüssel ja nach dem erstellen der Tabelle mit ALTER TABLE ..
hinzufügen.
 
@0madcat0: die fremschlüssel einstellung erstelle ich ja im nachhinein mit after table.

ne das design ist fest.
 
Wenn du die foreign keys als nullable deklarierst, könntest du erst die Datensätze eintragen und später die foreign keys nachtragen, in einer Transaktion gekapselt wäre das ganze atomar und die Integrität würde gewahrt werden.
Alternativ könnst du beim Anlegen des Datensatzes die constraints temporär deaktivieren, damit läufst du aber Gefahr eine constraint violation zu provozieren, dieser Weg sollte nur beim Import von integeren Datensätzen beschritten werden.

Wie Cobinja bereits geschrieben hat, sollte man möglichst auf Kreuzbeziehungen verzichten, sowas wie doppelt verkettete Listen 1:1 auf das Datenmodell abzubilden ist i.d.R. nicht notwendig und auch nicht sinnvoll.

greetings, Keita
 
Zurück
Oben