Privot ist die Zwischentabelle von Viele-zu-viele-Beziehungen. Das PT5-Framework ruft Pivot automatisch auf. Wir müssen es verstecken, weil wir Privot nicht brauchen und Privot nicht in unserem Modell selbst ist, es sind Zwischendaten Zusätzlich zu den redundanten Feldern verfügen wir über eine Tabelle zur Erfassung von Bildern und eine weitere Tabelle zur Erfassung von Produkten. Wir können die URL des Produktbildes in das Bild einfügen Geben Sie gleichzeitig die Bild-ID und die Bild-URL in das Produkt ein Diese beiden Felder werden wiederholt, was Datenredundanz darstellt. Wir entwerfen die Datenbank so, dass redundante Informationen vermieden werden. Warum also verwenden wir Redundanz? Dies dient hauptsächlich Überlegungen zur Abfrageleistung. Wir haben hier Datenredundanz vorgenommen, sodass wir die Anzahl der Abfragen an die Bildtabelle reduzieren und die Abfrage beschleunigen können! Es wird jedoch empfohlen, die Datenredundanz nicht übermäßig zu nutzen, da es durch Datenredundanz schwierig wird, die Datenintegrität und -konsistenz aufrechtzuerhalten. Es gibt zwei Orte, an denen dieselben Informationen aufgezeichnet werden, aber wenn wir Daten schreiben, müssen wir sie an zwei Orte schreiben. Das größte Problem ist das Löschen und Aktualisieren. Wenn sich beim Aktualisieren das IMG an einer Stelle ändert, müssen Sie beide ändern. Andernfalls kommt es zu Dateninkonsistenzen. Allerdings wird Datenredundanz immer noch recht häufig verwendet. Bei der Web-Entwicklung kann neben der Beherrschung einiger notwendiger Datenbankoptimierungstechniken auch die Verwendung redundanter Felder zum richtigen Zeitpunkt mit halbem Aufwand das doppelte Ergebnis erzielen. Im folgenden Beispiel gibt es beispielsweise mehrere Tabellen, die auf diese Weise gestaltet sind.
Das ist alles. Es sieht gut aus, ohne redundante Felder. Es entspricht außerdem den drei Hauptparadigmen des Datenbankdesigns. Stellen wir zunächst eine Frage, nennen wir sie Frage X. Frage X: Wenn Sie die Inhaltsverzeichnisliste unter einer bestimmten Version abfragen möchten, sollte das SQL folgendermaßen geschrieben werden: Wählen Sie c.* aus Inhalt c, Kategorie t, wobei c.category_id=t.id und t.version_id=? Es scheint kein Problem zu sein. Wie kann diese Abfrage optimiert werden? Diese Frage werden wir zuletzt diskutieren. Kehren wir zum obigen Tabellenentwurf zurück, falls ein solches Problem vorliegt. Ich möchte beispielsweise überprüfen, ob Inhalt A dem Benutzer U gehört. Was muss ich tun?
Das ist ein äußerst schlechtes Verhalten, nicht wahr? An diesem Punkt sollte Ihnen die Schwäche dieses Tabellendesigns bewusst geworden sein. Was sollen wir also tun? Redundante Felder! Ja, wir müssen der Tabelle redundante Felder hinzufügen. Was würde passieren, wenn wir zu jeder der oben genannten Tabellen (außer der Benutzertabelle) ein user_id-Feld hinzufügen würden? Erstens können Sie sicher sein, dass sich der Wert des Felds „user_id“ in den einzelnen Tabellen nicht ändert. Daher muss der Wert dieses Felds nach der Festlegung nicht mehr geändert werden. Dann kehren wir zur obigen Frage zurück: Abfrage, ob Inhalt A dem Benutzer U gehört. Der aktuelle Ansatz ist folgender: Überprüfen Sie, ob die Benutzer-ID von Inhalt A die ID von Benutzer U ist Nur ein Schritt! So einfach und grob, oder? Ziemlich erfrischend, oder? Durch einfaches Hinzufügen des redundanten Felds user_id kann der Codierungsaufwand erheblich reduziert und die Effizienz der Datenbankabfrage um das N-fache erhöht werden. Außerdem muss dieses Feld nur einmal gepflegt werden! Nachdem Sie nun die Leistungsfähigkeit redundanter Felder kennen, kehren wir zu Frage X zurück. Wie kann diese Geschäftslogik optimiert werden? Der richtige Ansatz wäre: Fügen Sie in der Inhaltstabelle ein zusätzliches Feld „version_id“ hinzu. Es ist sicher, dass dieses Feld dem Feld „user_id“ ähnelt und nur einmal gepflegt werden muss. Anschließend wird das SQL für Frage X wie folgt geändert: Wählen Sie c.* aus Inhalt c, wobei c.version_id=? Ziemlich einfaches SQL! Das Obige zeigt, dass manchmal eine entsprechende Datenbankredundanz eine gute Wahl ist. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
<<: Hadoop 3.1.1 Vollständig verteiltes Installationshandbuch unter CentOS 6.8 (empfohlen)
>>: Javascript-Eingabebild-Upload und -Vorschau, FileReader-Vorschaubild
Inhaltsverzeichnis # Nachbereitung der Daten # SQ...
Verwendung: Datum [Optionen]... [+Format] oder: D...
Wirkung Die Wirkung ist wie folgt Umsetzungside...
1. Reproduktion des Problems: Zählen Sie die Gesa...
1. Zabbix-Backup [root@iZ2zeapnvuohe8p14289u6Z /]...
Inhaltsverzeichnis DragEvent-Schnittstelle Übersi...
Softwareversion Windows: Windows 10 MySQL: mysql-...
Wie unten dargestellt: CSS- CodeInhalt in die Zwi...
Inhaltsverzeichnis Vorwort Optimierung Ableitungs...
Da ich heute nichts zu tun habe, habe ich ein paa...
Inhaltsverzeichnis Komponente zur Leistungsoptimi...
Bei der Migration einer Oracle-Datenbank zu einer...
Inhaltsverzeichnis Hauptthema 1. Installieren Sie...
In diesem Artikel wird der spezifische Code für d...
weniger Dateiname Datei anzeigen kleiner Dateinam...