it-swarm.com.de

Welche Grundsätze sollte ich bei der Eingabe von Daten in eine komplexe relationale Datenbank beachten?

Ich bin neu in Datenbanken. Verzeihen Sie mir, wenn dies eine grundlegende Frage ist.

Ich versuche, ein komplexes Open Source-Wörterbuch zu analysieren und die Daten in eine Access-Datenbank auszugeben, die ebenso komplex ist:

(enter image description here

Ich verstehe, wie man Daten in eine Tabelle einfügt, aber ich verstehe nicht, wie man Daten in mehrere Tabellen einfügt, die für Fremdschlüssel aufeinander angewiesen sind. Um ein vereinfachtes Beispiel zu geben:

Ich habe drei Tabellen: Entry, Keyword und Keyword_Priority. Jeder Eintrag kann mehrere Schlüsselwörter enthalten, sodass die Tabelle Keyword über einen Fremdschlüssel mit Entry verknüpft ist. Und jedes Schlüsselwortelement kann mehrere Elemente enthalten, die die Priorität des Schlüsselworts beschreiben, sodass die Tabelle Keyword_Priority Wie folgt über einen Fremdschlüssel auf Keyword zurückverweist:

(enter image description here

Angenommen, ich möchte in diesem vereinfachten Szenario einen neuen Eintrag mit SQL erstellen. Wo soll ich anfangen? Muss ich:

  1. Fügen Sie zuerst in die Tabelle Entry ein, um ein neues EntryID zu erstellen

  2. Fügen Sie dann mit dem neuen Keyword als Fremdschlüssel in die Tabelle EntryID ein

  3. Fügen Sie dann in die Tabelle Keyword_Priority Ein, indem Sie das Feld ID des Schlüsselworts als Fremdschlüssel verwenden

Oder alternativ sollte ich es umgekehrt machen ...

  1. In die Tabelle Keyword_Priority Einfügen

  2. In die Tabelle Keyword einfügen

  3. In die Tabelle Entry einfügen

Zusammenfassend lautet meine Frage:

Wo soll ich anfangen, wenn ich Daten gleichzeitig in mehrere Tabellen einfüge? Von oben nach unten oder von unten nach oben?

4
Lou

Ein Fremdschlüssel bezieht sich auf den Primärschlüssel einer anderen Tabelle. Wenn der Datensatz mit dem Fremdwort eingegeben wird, muss der entsprechende Datensatz mit diesem Primärschlüssel vorhanden sein. Daher müssen Sie immer mit dem Einfügen in die Tabellen auf der 1-Seite der Beziehung (der Master- oder Eltern- oder Primärschlüsseltabelle) beginnen. Dann können nur Sie einen Datensatz auf der n-Seite der Beziehung eingeben (in die Detail- oder Kind- oder Fremdschlüsseltabelle).

Reihenfolge: 1. Eintrag, 2. Schlüsselwort, 3. Schlüsselwortpriorität.

Wenn eine Tabelle mehrere Fremdschlüssel enthält, müssen zuerst die zugehörigen Datensätze in allen anderen Tabellen mit den entsprechenden Primärschlüsseln eingegeben werden. Zum Beispiel vor der Eingabe eines Datensatzes in SenseRestricted... müssen die entsprechenden Datensätze in Sense und in Reading eingefügt worden sein.

Einige allgemeine Ratschläge. Im Bild hängt Keyword_Priority vermutlich vom Keyword ab, das vom Eintrag abhängt. Sie müssen daher mit Eintrag, dann Schlüsselwort usw. beginnen.

Aus Sicht der Modellierung ist etwas etwas, unabhängig davon, wo in dem Modell Sie es verwenden. Der Eintrag sieht ziemlich anständig aus:

CREATE TABLE entry
( EntryId ... NOT NULL PRIMARY KEY
, ...
);

Für Schlüsselwörter etwas wie:

CREATE TABLE keyword
( KeywordId ... NOT NULL PRIMARY KEY
, ...
, EntryId ... REFERENCES entry (EntryId)
)

Das heißt, Verwenden Sie keine ID, es ist zu vage. Das Attribut ist eine ID von etwas Besonderem. Beachten Sie auch, wie das Attribut EntryId ähnlich wie im Eintrag benannt wird.

Ich werde mich nicht mit der Frage der Ersatzschlüssel befassen, da ich glaube, dass es beim MS-Zugriff Einschränkungen gibt (zumindest früher), die zusammengesetzte Fremdschlüssel verhindern.

5
Lennart