Altova DatabaseSpy 2024 Professional Edition

Wie bei anderen Datenbankobjekten gibt es verschiedene Möglichkeiten, Sekundärschlüssel-Constraints zu erstellen:

 

Über den Online Browser

Über den Design Editor

Durch Generierung von SQL-Code anhand eines vorhandenen Sekundärschlüsselobjekts

 

Voraussetzungen

Beachten Sie die folgenden Voraussetzungen, wenn Sie Sekundärschlüsel erstellen:

 

Die Spalten, die die Sekundärschlüsselbeziehung bilden, müssen denselben Datentyp und dieselbe Länge haben.

Die referenzierende Spalte (in diesem Beispiel Department.ID) muss entweder Teil eines Primärschlüssels oder eines eindeutigen Schlüssels sein.

 

Beachten Sie außerdem das folgende datenbankspezifische Verhalten:

 

Sie können in SQL Server nicht nur dann eine Sekundärschlüsselreferenz zu einer Spalte hinzufügen, wenn diese Teil eines Primärschlüssels oder eines eindeutigen Schlüssels ist, sondern auch, wenn dafür ein eindeutiger Index definiert ist. Dies ist auch in neueren Versionen von MySQL möglich (vorausgesetzt der Speicherprozessor ist InnoDB).

SQLite unterstützt das Hinzufügen von Sekundärschlüsseln zu bestehenden Tabellen nicht. Sie können Sekundärschlüssel-Constraints nur zum Zeitpunkt der Erstellung der Tabelle erstellen.

 

Vorbereiten der Datenbank

Im Folgenden werden verschiedene Arten, Sekundärschlüsselbeziehungen zwischen zwei Tabellen zu erstellen, beschrieben. Dabei werden die Tabellen Employee und Department aus dem vorherigen Beispiel und eine SQL Server-Datenbank verwendet. Die Vorgehensweise ist auch bei anderen Datenbanken ähnlich. Wenn Sie die Anleitung unten, genau wie beschrieben, nachstellen möchten, können Sie Ihre SQL Server-Datenbank durch Ausführung des folgenden Script vorbereiten.

 

CREATE TABLE
   Department (
       [ID] int IDENTITY (1, 1) NOT NULL,
       [Name] varchar (100) NOT NULL,
      CONSTRAINT [PK__Department] PRIMARY KEY ([ID]) ) ;
 
CREATE TABLE
   Employee (
       [ID] int IDENTITY (1, 1) NOT NULL,
       [Name] varchar (50) NOT NULL,
       [Email] varchar (100) NOT NULL,
       [DepartmentID] int NOT NULL,
      CONSTRAINT [PK__Employee] PRIMARY KEY ([ID]) ) ;

Tabellenerstellungs-Script (SQL Server)

Beachten Sie, dass die Spalte Department.ID im obigen Script ein Primärschlüssel ist. Außerdem haben die Spalten Employee.DepartmentID und Department.ID beide gemäß den Voraussetzungen zum Erstellen einer Sekundärschlüsselbeziehung zwischen diesen beiden Spalten den Typ "Integer".

 

Erstellen von Sekundärschlüsseln über den Online Browser

1.Klicken Sie mit der rechten Maustaste auf die Tabelle Employee und wählen Sie Schlüssel erstellen | Sekundärschlüssel erstellen aus dem Kontextmenü. Daraufhin wird der Sekundärschlüssel im Ordner "Schlüssel" mit dem Namen <generiert> angezeigt. Außerdem wird im Fenster Datenbankstruktur-Change Script ein Script generiert. Sie können die Änderungen zu diesem Zeitpunkt noch rückgängig machen, indem Sie auf die Schaltfläche Aktualisieren dbs_ic_refresh klicken.

dbs_fk_create_01

2.Wählen Sie optional den Namen <generiert> aus und drücken Sie F2, um ihn umzubenennen.

3.Doppelklicken Sie auf "Tabelle auswählen" und navigieren Sie zur Sekundärtabelle. Die Sekundärtabelle ist in diesem Beispiel Department. Beachten Sie, dass die Spalte ID automatisch ausgewählt wird, da dies die Spalte ist, in der sich der Primärschlüssel befindet.

dbs_fk_create_02

4.Klicken Sie im Datenbankstruktur Change Script-Fenster auf die Schaltfläche Change Script ausführen dbs_ic_execute_script.

 

Erstellen von Sekundärschlüsseln im Design Editor (Methode 1)

1.Fügen Sie beide Tabellen (Employee und Department) zum Design Editor hinzu.

2.Wählen Sie eine der folgenden Methoden:

 

oZiehen Sie die Spalte DepartmentID aus dem Abschnitt "Spalten" der Tabelle Employee (oder aus dem Online Browser) in den Abschnitt "Schlüssel". Wählen Sie im Kontextmenü Sekundärschlüssel erstellen aus, wenn Sie dazu aufgefordert werden.

oZiehen Sie den Primärschlüssel aus dem Abschnitt "Schlüssel" der Tabelle Department (oder aus dem Online Browser) in den Abschnitt "Schlüssel" der Tabelle Employee.

 

Standardmäßig wird für die erste Spalte, die denselben Datentyp wie die vom gezogenen Schlüssel bzw. Index referenzierte Spalte hat, automatisch ein Sekundärschlüssel mit dem Namen <generiert> erstellt. Dies ist nicht notwendigerweise die Spalte, für die Sie den Sekundärschlüssel benötigen. Doppelklicken Sie daher gegebenenfalls auf die Spalte (im Abschnitt "Schlüssel") und wählen Sie die richtige Spalte aus der Liste aus.

dbs_fk_create_03

 

3.Klicken Sie im Datenbankstruktur Change Script-Fenster auf die Schaltfläche Change Script ausführen dbs_ic_execute_script.

 

Erstellen von Sekundärschlüsseln im Design Editor (Methode 2)

1.Wählen Sie eine der folgenden Methoden:

 

oKlicken Sie im Abschnitt "Schlüssel" eines Tabellendesigns auf das Symbol Neuen Schlüssel-Constraint erstellen ic_add-column und wählen Sie anschließend im Kontextmenü den Befehl Sekundärschlüssel erstellen.

oKlicken Sie mit der rechten Maustaste an eine beliebige Stelle im Tabellendesign und wählen Sie im Kontextmenü den Befehl Neu einfügen | Schlüssel | Sekundärschlüssel.

 

Daraufhin wird automatisch ein Sekundärschlüssel mit dem Namen <generiert> ohne Referenz auf eine bestimmte Tabelle erstellt. Um die referenzierte Tabelle auszuwählen, klicken Sie auf [referenzierte Tabelle auswählen] und wählen Sie die gewünschte Tabelle aus der Liste aus.

dbs_fk_create_04

2.Definieren Sie gegebenenfalls die Ausgangs- und Zielspalten für den Sekundärschlüssel. Gehen Sie dazu folgendermaßen vor:

 

oUm die Spalte, in der sich der Sekundärschlüssel befindet, zu ändern, doppelklicken Sie (im Abschnitt "Schlüssel" unter "Spalten") auf die Spalte und wählen Sie den gewünschten Eintrag aus der Liste aus.

dbs_fk_create_03

oUm die Spalte, auf die der Sekundärschlüssel verweist, zu ändern, doppelklicken Sie (im Abschnitt "Schlüssel" unter "Referenz") auf die Spalte und wählen Sie den gewünschten Eintrag aus der Liste aus.

 

3.Klicken Sie im Datenbankstruktur Change Script-Fenster auf die Schaltfläche Change Script ausführen dbs_ic_execute_script.

 

Benennen von Sekundärschlüsseln

Standardmäßig lautet der Name des Sekundärschlüssels <generiert>, d.h. der Name wird von der Datenbank automatisch generiert. Dadurch wird die Eindeutigkeit des Namens in der Datenbank gewährleistet. Falls erforderlich, können Sie den generierten Namen außer Kraft setzen. Geben Sie dazu anstelle von <generiert>, einen beschreibenden Namen ein und drücken Sie die Eingabetaste.

 

Wenn Sie den generierten Namen durch einen benutzerdefinierten Namen ersetzen, muss der neue Name eindeutig sein; andernfalls treten bei der Ausführung des Datenbank-Change Script Fehler auf.

 

Anmerkung:In SQLite werden benutzerdefinierte Schlüsselnamen von der Datenbank ignoriert. Der im Online Browser von DatabaseSpy angezeigte Schlüsselname ist der von der Datenbank intern vergebene Schlüsselname.

 

Erstellen von Sekundärschlüsseln durch Generierung von SQL-Code

Sie können einen Sekundärschlüssel auch durch Generierung einer SQL-Anweisung anhand eines vorhandenen Sekundärschlüssels erstellen. Gehen Sie dazu vor wie folgt:

 

1.Erweitern Sie im Online Browser den Ordner "Schlüssel" der Tabelle, die den vorhandenen Sekundärschlüssel enthält.

2.Klicken Sie mit der rechten Maustaste auf den Sekundärschlüssel und wählen Sie In neuem SQL Editor anzeigen | Add aus dem Kontextmenü. Beachten Sie, dass dieser Befehl deaktiviert ist, wenn die Datenbank das Ändern bestehender Tabellen nicht unterstützt.

3.Bearbeiten Sie den Tabellen-, Spaltennamen und den des Sekundärschlüssels im SQL Editor nach Bedarf.

4.Klicken Sie auf die Schaltfläche Ausführen dbs_ic_execute_query, um die SQL-Anweisung auszuführen und erstellen Sie den neuen Sekundärschlüssel.

 

Schemaübergreifende Referenzen

Sekundärschlüssel können auch eine Spalte in einer Tabelle referenzieren, die sich in einem anderen Schema befindet. Wenn Sie diese Referenz über den Design Editor definieren, werden Tabellen im selben Schema schwarz,Tabellen in einem anderen Schema hingegen blau angezeigt, z.B:

dbs_fk_create_05

© 2018-2024 Altova GmbH