it-swarm.com.de

Erstellen Sie einen Fremdschlüssel im SQLite-Datenbankbrowser

Entschuldigung für Anfängerfrage.

Ich habe meine Tabellen mit SQLite Datenbank-Browser erstellt, aber:

  1. Ich weiß nicht, wie ich meine Fremdschlüssel mit der Anwendung angeben kann?

  2. Wie kann ich ein Beziehungsdiagramm zwischen Tabellen erstellen?

33

Ich weiß, dass diese Frage schon vor langer Zeit gestellt wurde, aber ich habe sie gefunden. Es ist direkt in die GUI integriert. Sie müssen lediglich die Registerkarten Name, Typ ein wenig klein machen, um Platz für die Registerkarte Fremdschlüssel zu schaffen. Platzieren Sie Ihren Mauszeiger am Ende und ziehen Sie die Kopfzeile.

Meine Version von SQLite Browser ist Version 3.7.0.

 enter image description here

49
Chintan Desai

Ich habe keine Möglichkeit gefunden, Fremdschlüsseleinschränkungen über die Registerkarte "Datenbankstruktur" zu definieren. Ich würde dringend empfehlen, Tabellendefinitionen und -einschränkungen mithilfe eines Skripts zu definieren, anstatt sie mithilfe des grafischen Editors zu erstellen. Dadurch können Sie neue Datenbanken erstellen und Änderungen am Schema nachverfolgen. 

Nehmen wir beispielsweise an, wir haben zwei Tabellen: eine, die Dateinamen definiert, und eine, die die für die Komprimierung verwendete Methode angibt. Bei der Definition der Tabelle file_definition können wir der Tabelle file_definition eine Fremdschlüsseleinschränkung hinzufügen.

CREATE TABLE [compression_state] (
    [compression_state_id] INTEGER  PRIMARY KEY NOT NULL,
    [value] TEXT  NOT NULL
);

CREATE TABLE [file_definition] (
    [file_id] INTEGER  NOT NULL  PRIMARY KEY AUTOINCREMENT,
    [compression_state_id] INTEGER  NOT NULL,
    [name] TEXT NOT NULL,
    FOREIGN KEY(compression_state_id) REFERENCES compression_state(compression_state_id)
);

Standardmäßig erzwingt SQLite die Einschränkung jedoch nicht. Daher müssen Sie bei jeder Verbindung zur Datenbank den folgenden Befehl ausgeben, um die Einschränkungsprüfung zu aktivieren.

PRAGMA foreign_keys = ON;

Weitere Details in der Dokumentation .

Wenn die Tabellen bereits vorhanden sind und Sie kein komplettes Skript erstellen möchten, haben Sie kein Glück. SQLite unterstützt das Hinzufügen von Fremdschlüsseln nicht, sobald die Tabelle generiert wurde. Siehe hier: SQL-Funktionen, die SQLite nicht unterstützt Umsetzen

13
phil_rawlings

Aus der SQLite-Dokumentation:

CREATE TABLE artist(
  artistid    INTEGER PRIMARY KEY, 
  artistname  TEXT
);
CREATE TABLE track(
  trackid     INTEGER,
  trackname   TEXT, 
  trackartist INTEGER     -- Must map to an artist.artistid!
);  

und am Ende :

CREATE TABLE track(
  trackid     INTEGER, 
  trackname   TEXT, 
  trackartist INTEGER,
  FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);

Wenn Sie im DB Browser für SQLite-Umgebung (Version 3.8.0 - Sqlite Version 3.9.2) die DB-Felder für die Tabelle track zusammen mit Der PK-, AI- und anderen Spalten hinzufügen, finden Sie eine Fremdschlüsselspalte. 

Dort und in diesem Beispiel fügen Sie einfach artist(artistid) in die trackartist-Zeile ein.
Dann wird die Fremdschlüsseleinschränkung erstellt.

Im DB-Browser können Sie im Fenster "Tabellendefinition bearbeiten" auf den leeren Bereich des Fremdschlüssels doppelklicken. Ein Textfeld wird aktiviert. Sie können dort Ihren Fremdschlüssel hinzufügen. 

1
Odb718

Gehe zum Bearbeiten des Tabellendefinitionsfensters

Klicken Sie auf Feld hinzufügen

Nennen Sie es mit Typ: Integer

Scrollen Sie nach rechts und suchen Sie die Spalte Forein Key

Doppelklicken Sie in der neuen Zeile unter der Spalte Forein Key

Wählen Sie die Master-Tabelle und das ID-Feld aus

OK klicken

Klicken Sie auf Änderungen schreiben

Bildbeschreibung hier eingeben

0
mammadkoma

Trigger in SQLite3 erzwingen Fremdschlüsseleinschränkungen. Link https://www.sqlite.org/cvstrac/wiki?p=ForeignKeyTriggers würde Ihnen helfen, Ihre erste Frage zu lösen.

0
SKN