Fremdschlüssel in MongoDB
- Unbekannter Schlüssel
- MongoDB-Referenzen
- Erstellen Sie virtuelle Fremdschlüssel in MongoDB
- Abschluss
MongoDB ist eine bekannte Datenbank, die ohne Schema arbeitet. Stattdessen verwendet es JSON-ähnliche Dateien zum Speichern von Daten und erzwingt keine Struktur.
MongoDB erfordert im Gegensatz zu herkömmlichen RDBMS einen eigenen Ansatz für das Datenbankdesign. Insgesamt ist die Datenbank jedoch einfacher zu skalieren, da sie nicht viele Einschränkungen auferlegt.
Unbekannter Schlüssel
Ein Fremdschlüssel ist eine Spalte oder ein Satz von Spalten, die zwei Tabellen verknüpfen. Es besteht aus einer Primärschlüsselspalte in der übergeordneten Tabelle, die mit anderen Spalten in den untergeordneten Tabellen verknüpft ist.
Nehmen Sie zum Beispiel zwei Tabellen: Land und Stadt. Wir möchten diese beiden Tabellen so miteinander verknüpfen, dass jede Stadt dem entsprechenden Land zugeordnet ist.
Dazu kann ein Fremdschlüssel verwendet werden:
Wenn wir die Daten aus der Stadttabelle im obigen Beispiel lesen, können wir sehen, dass jede Stadt eine zugehörige country_id.
hat. Auf diese Weise können Sie mit einer einzigen Abfrage nach allen Städten in Pakistan suchen.
Beim Erstellen von Fremdschlüsseln können wir angeben, was passieren soll, wenn Daten geändert oder zerstört werden. Zum Beispiel können wir uns für eine Kaskadierung entscheiden, was bedeutet, dass wenn ein Land eliminiert wird, auch alle damit verbundenen Städte entfernt werden.
Wir können auch null setzen, was bedeutet, dass beim Löschen von Daten in der Länderdatenbank die verknüpften Städte auf null gesetzt werden.
MongoDB-Referenzen
Normalerweise arbeitet MongoDB nicht mit dem Konzept von Fremdschlüsseln. Relationale Datenbanken können jedoch Fremdschlüssel verwenden, um Daten aus mehreren Sammlungen gleichzeitig zu visualisieren.
Auch die Art und Weise, wie MongoDB Daten speichert, ist unterschiedlich. Beispielsweise verwendet MongoDB Sammlungen, Objekte und Felder anstelle von Tabellen, Spalten und Zeilen.
MongoDB bietet zwei verschiedene Möglichkeiten zum Speichern von Daten in Sammlungen: Denormalisierung und Normalisierung.
Denormalisierung
Bei der Denormalisierung enthält dieselbe Sammlung eine Vielzahl von Daten.
Das folgende Beispiel zeigt, wie die mit jeder Person verknüpften Adressen
in die Personen
-Sammlung eingebettet wurden.
> db.persons.findOne()
{
name: 'Ali Ikram',
addresses : [
{ street: '123 PWD', city: 'Rawalpindi', cc: 'PAK' },
{ street: '123 ABC', city: 'Faisalabad', cc: 'PAK' }
]
}
Es ist für ein bis wenige geeignet. Sein Vorteil besteht darin, dass keine zusätzlichen Abfragen in einem anderen Dokument durchgeführt werden müssen.
Es kann jedoch die Entität eingebetteter Dokumente nicht einzeln verwalten.
Normalisierung
Bei der Normalisierung werden unterschiedliche Daten in verschiedenen Sammlungen gespeichert. Der Prozess ähnelt dem Speichern von Daten in relationalen Datenbanken, aber anstelle von Tabellen verwenden wir Sammlungen.
In MongoDB werden die Referenzen hauptsächlich für den Normalisierungsprozess verwendet. Die Referenzen aus der untergeordneten Tabelle (normalerweise eine Objekt-ID) werden dann in die übergeordnete Tabelle eingebettet.
Beim Lesen der Informationen muss der Benutzer mehrere Abfragen durchführen, um Daten aus mehreren Sammlungen abzurufen.
Als Beispiel nehmen wir die folgenden zwei Sammlungen, students
und courses
. Ein Kurs enthält viele Studenten, auf die in der Sammlung Kurse
verwiesen wird.
Den sogenannten Fremdschlüssel können Sie in MongoDB definieren. Sie müssen jedoch SELBST für die Datenintegrität sorgen.
Beispiel:
students
{
_id: ObjectId(...),
name: 'Haris',
courses: ['chem101', 'chem102'] // <= ids of the courses
}
courses
{
_id: 'chem101',
name: 'Chemistry 101',
description: 'Introduction to Chemistry'
}
Das Feld Kurse
enthält _id
von Kursen. Es ist ziemlich einfach, eine Eins-zu-Viele-Beziehung zu definieren.
Wenn Sie jedoch die Kursnamen des Studenten Haris,
abrufen möchten, müssen Sie eine weitere Operation ausführen, um das Dokument Kurse
über _id.
abzurufen.
Wenn der Kurs chem101
entfernt wird, müssen wir eine weitere Operation durchführen, um das Feld Kurse
im Dokument Studenten
zu aktualisieren.
Erstellen Sie virtuelle Fremdschlüssel in MongoDB
DbSchema speichert das lokale Bild des Schemas in der Modelldatei. Das bedeutet, dass Sie offline am Projekt arbeiten können, ohne sich mit der Datenbank verbinden zu müssen.
Nach dem erneuten Verbinden können Sie die Unterschiede zwischen der Datenbank und Ihrer lokalen Projektdatei vergleichen und synchronisieren. Sie können auch virtuelle Fremdschlüsselbeziehungen mit einer Projektdatei erstellen.
Diese Fremdschlüssel können nur in DbSchema verwendet werden und wirken sich nicht auf die Datenbank aus.
Fremdschlüssel können schnell und einfach erstellt werden. Nehmen Sie zum Beispiel die Sammlungen Städte
und Länder
. Als Referenz haben beide ein gemeinsames Feld mit dem Namen “Länder-ID”.
Ziehen Sie eine Spalte über die andere, um einen Fremdschlüssel zu erstellen. Dadurch wird ein neues Fenster erstellt, in dem Sie dem Fremdschlüssel eine Beschreibung geben und zusätzliche Felder hinzufügen können.
Verwenden Sie virtuelle Fremdschlüssel für eine schnellere Datensuche in MongoDB
Sie können die Daten Ihrer Sammlungen mit dem virtuellen Fremdschlüssel durchsuchen. Darüber hinaus können Sie mit dem Editor für relationale Daten gleichzeitig Daten aus vielen Sammlungen durchsuchen.
Mit dem Fremdschlüssel können Sie schnell die Städte durchsuchen, die mit den Ländern verbunden sind.
Abschluss
Mithilfe dieses MongoDB-Tutorial-Artikels haben Sie gelernt, wie Sie Ihre MongoDB-Sammlung als Diagramme visualisieren und virtuelle Fremdschlüssel mit DbSchema erstellen. Sie sollten jetzt auch in der Lage sein, Daten aus verschiedenen Sammlungen gleichzeitig zu durchsuchen.
Außerdem werden die virtuellen Fremdschlüssel nur in der lokalen Projektdatei gespeichert und wirken sich nicht auf die Datenbank aus.