[MySQL] Zusammenfassung der grundlegenden Datenbankkenntnisse

Hallo zusammen, ich bin Ah Q, heute werden wir die notwendigen Wissenspunkte für den Einstieg in [MySQL]~ zusammenfassen

Grundkonzepte der Datenbank

  • Datenbank : Datenbank, auch DB genannt, ist eine Sammlung von Informationen oder eine Datenbank ist eine Sammlung von Daten, die von einem Datenbankverwaltungssystem verwaltet werden.
  • Datenbankverwaltungssystem : Das Datenbankverwaltungssystem (DBMS) ist eine umfangreiche Software zur Bearbeitung und Verwaltung von Datenbanken und wird normalerweise zum Aufbau, zur Nutzung und zur Pflege von Datenbanken verwendet.
  • Datenbankadministrator : Der Datenbankadministrator, kurz DBA genannt, ist für die Gesamtverwaltung und Kontrolle des Datenbanksystems verantwortlich.

Was ist Tupel, Schlüssel, Kandidatenschlüssel, Primärschlüssel, Fremdschlüssel, Primärattribut, Nicht-Primärattribut?

  • Tupel: Ein Tupel ist ein Grundkonzept in einer relationalen Datenbank. Eine Beziehung ist eine Tabelle. Jede Zeile in der Tabelle (d. h. jeder Datensatz in der Datenbank) ist ein Tupel und jede Spalte ist ein Attribut. In zweidimensionalen Tabellen werden Tupel auch Zeilen genannt.
  • Code: Der Code ist das Attribut, das die Entität eindeutig identifizieren kann und der Spalte in der Tabelle entspricht.
  • Kandidatenschlüssel: Wenn der Wert eines bestimmten Attributs oder einer Attributgruppe in der Beziehung ein Tupel eindeutig identifizieren kann und eine Teilmenge davon nicht mehr identifiziert werden kann, wird die Attributgruppe als Kandidatenschlüssel bezeichnet. Was ich verstehe ist, dass ein Feld oder mehrere Felder einen eindeutigen Index bilden. Beispiel: In der Studentenentität kann „Studentennummer“ die Studentenentität eindeutig unterscheiden, und unter der Annahme, dass die Attributkombination aus „Name“ und „Klasse“ ausreicht, um die Studentenentität zu unterscheiden, dann {Studentennummer} und {Name, class} sind beide der Kandidatencode.
  • Primärcode: Der Primärcode wird auch Primärschlüssel genannt. Der Primärschlüssel wird aus den Kandidatenschlüsseln ausgewählt. In einem Entitätssatz kann es nur einen Primärschlüssel geben, es können jedoch mehrere Kandidatenschlüssel vorhanden sein.
  • Fremdschlüssel: Der Fremdschlüssel wird auch Fremdschlüssel genannt. Wenn ein Attribut in einer Beziehung der Primärschlüssel in einer anderen Beziehung ist, dann ist das Attribut ein Fremdschlüssel.
  • Hauptattribut: Das Attribut, das im Kandidatencode erscheint, wird als Hauptattribut bezeichnet. Zum Beispiel verwandte Arbeitnehmer (Jobnummer, ID-Nummer, Name, Geschlecht, Abteilung). Offensichtlich können sowohl die Jobnummer als auch die ID-Nummer diese Beziehung eindeutig kennzeichnen, sodass es sich bei allen um Kandidatencodes handelt. Die beiden Attribute Jobnummer und ID-Nummer sind die Hauptattribute. Wenn der Primärschlüssel eine Attributgruppe ist, sind alle Attribute in der Attributgruppe Primärattribute.
  • Nicht-Schlüsselattribute: Attribute, die in keinem Kandidatencode enthalten sind, werden als Nicht-Schlüsselattribute bezeichnet. Beispielsweise ist in der Beziehung „Schüler“ (Schülernummer, Name, Alter, Geschlecht, Klasse) der Primärschlüssel „Schülernummer“, dann können andere „Name“, „Alter“, „Geschlecht“ und „Klasse“ lauten aufgerufen ist ein nicht-primäres Attribut.

Was ist der Unterschied zwischen Primärschlüssel und Fremdschlüssel?

  • Primärschlüssel (Primärschlüssel): Der Primärschlüssel dient der eindeutigen Identifizierung eines Tupels, der nicht wiederholbar ist und nicht leer sein darf. Eine Tabelle kann nur einen Primärschlüssel haben.
  • Fremdschlüssel (Fremdcode): Der Fremdschlüssel wird verwendet, um Beziehungen zu anderen Tabellen herzustellen. Der Fremdschlüssel ist der Primärschlüssel einer anderen Tabelle. Der Fremdschlüssel kann Duplikate haben und null sein. Eine Tabelle kann mehrere Fremdschlüssel haben.

Warum sind Fremdschlüssel und Kaskadierung veraltet?

Zu Fremdschlüsseln und Kaskadierung heißt es im Alibaba-Entwicklungshandbuch:

[Obligatorisch] Fremdschlüssel und Kaskadierung sind nicht zulässig und alle Fremdschlüsselkonzepte müssen auf der Anwendungsebene gelöst werden .
Erläuterung: Am Beispiel der Beziehung zwischen Schülern und Noten ist die student_id in der Schülertabelle der Primärschlüssel und die student_id in der Notentabelle der Fremdschlüssel. Wenn die student_id in der Schülertabelle aktualisiert wird und gleichzeitig die student_id-Aktualisierung in der Notentabelle ausgelöst wird, handelt es sich um eine kaskadierende Aktualisierung. Fremdschlüssel und kaskadierende Aktualisierungen eignen sich für einzelne Maschinen mit geringer Parallelität, nicht jedoch für verteilte Cluster mit hoher Parallelität. Kaskadierende Aktualisierungen werden stark blockiert und es besteht die Gefahr von Datenbankaktualisierungsstürmen. Fremdschlüssel beeinträchtigen die Einfügungsgeschwindigkeit der Datenbank.

Nachteile von Fremdschlüsseln

  1. Erhöhte Komplexität: a. Fremdschlüsseleinschränkungen müssen jedes Mal berücksichtigt werden, wenn Sie DELETE oder UPDATE ausführen, was zu Entwicklungsproblemen führt und das Testen von Daten äußerst unpraktisch macht. b. Die Master-Slave-Beziehung von Fremdschlüsseln ist bei Bedarf festgelegt Da es sich um eine Änderung handelt, muss dieses Feld in der Datenbank überhaupt nicht mit anderen Tabellen verknüpft werden, was zu großen Problemen führt.
  2. Zusätzliche Arbeit hinzugefügt: Die Datenbank muss den Aufwand für die Pflege von Fremdschlüsseln erhöhen. Wenn wir beispielsweise einige Hinzufügungs-, Lösch- und Aktualisierungsvorgänge mit Fremdschlüsselfeldern durchführen, müssen wir entsprechende Vorgänge auslösen, um die Konsistenz und Richtigkeit zu überprüfen die Daten. Auf diese Weise müssen Ressourcen verbraucht werden; (Ich persönlich glaube nicht, dass dies der Grund dafür ist, keine Fremdschlüssel zu verwenden, denn selbst wenn Sie keine Fremdschlüssel verwenden, müssen Sie diese dennoch garantieren Anwendungsebene. Daher halte ich diese Auswirkung für vernachlässigbar.)
  3. Nicht geeignet für Unterdatenbanken und Untertabellen: Da Fremdschlüssel unter Unterdatenbanken und Untertabellen nicht wirksam werden können.

Vorteile von Fremdschlüsseln

  1. Stellen Sie die Konsistenz und Integrität der Datenbankdaten sicher.
  2. Der Kaskadenbetrieb ist praktisch und reduziert die Menge an Programmcode.

Zusammenfassen

Wenn es sich nicht um Unterdatenbanken und Untertabellen handelt, können Fremdschlüssel berücksichtigt werden, wenn die Parallelität nicht sehr hoch ist.

IS-Figur

ER-Diagramme, auch Entity-Relationship-Diagramme (Entity-Relationship-Diagramme) genannt, bieten Methoden zur Darstellung von Entitätstypen, Attributen und Verbindungen und werden zur Beschreibung des konzeptionellen Modells der realen Welt verwendet. Es ist eine effektive Möglichkeit, das konzeptionelle Modell der Beziehung in der realen Welt zu beschreiben, und es ist eine Möglichkeit, das konzeptionelle Beziehungsmodell darzustellen.

Die folgende Abbildung ist ein ER-Diagramm der Kursauswahl eines Studenten. Jeder Student kann mehrere Kurse auswählen, und derselbe Kurs kann auch von mehreren Personen ausgewählt werden, sodass die Beziehung zwischen ihnen viele zu viele (M: N) ist. Darüber hinaus gibt es zwei weitere Beziehungen: 1-zu-1 (1:1), 1-zu-viele (1:N).

ER-Diagramm der Verbindung zwischen Studierenden und Lehrveranstaltungen

Wir versuchen, das obige ER-Diagramm in das tatsächliche relationale Modell der Datenbank umzuwandeln (im tatsächlichen Design behandeln wir den Lehrer normalerweise als Einheit).

Fügen Sie hier eine Bildbeschreibung ein

Datenbankparadigma

1NF (erste Normalform)

Attribute (entsprechend den Feldern in der Tabelle) können nicht mehr geteilt werden, das heißt, dieses Feld kann nur einen Wert haben und kann nicht in mehrere andere Felder geteilt werden . 1NF ist die grundlegendste Anforderung aller relationalen Datenbanken, das heißt, in relationalen Datenbanken erstellte Tabellen müssen die erste Normalform erfüllen.

2NF (Zweite Normalform)

Basierend auf 1NF beseitigt 2NF die teilweise funktionale Abhängigkeit von Nicht-Schlüsselattributen von Codes .

Beispiel 1: Beispielsweise gibt es in der Schülertabelle Felder für die Schülernummer, den Namen, den Abteilungsnamen, den Klassennamen und die Punktzahl, unter denen (Schülernummer, Klassenname) ein Datenelement eindeutig bestimmen kann, also (Schülernummer, Klasse). Name) wird als Code bezeichnet. Die Schülernummer und der Klassenname werden jeweils als Hauptattribute bezeichnet, und andere Felder sind Nicht-Hauptattribute. Zu diesem Zeitpunkt kann nur der Schülername (Schülernummer, Klassenname) bestimmt werden, es kann aber auch die Schülernummer bestimmt werden, bei der es sich um eine teilweise funktionale Abhängigkeit des nicht-primären Attributs (Name) vom Code (Schülernummer, Klassenname) handelt ).

Beispiel 2: Wenn die Schülertabelle beispielsweise Schülernummer, Name, Abteilungsname, Klassenname und Punktzahl enthält, teilen wir sie in Schülernummer, Klassenname, Punktetabelle (Tabelle 1) und Schülernummer, Name, Abteilungsnamentabelle (Tabelle 2).

  • In Tabelle 1 (Schülernummer, Klassenname) gibt es immer noch einen Code. Zu diesem Zeitpunkt kann (Schülernummer, Klassenname) die einzige Punktzahl ermitteln, aber die Schülernummer und der Klassenname können nicht getrennt bestimmt werden, sodass es keine Nicht-Primärzahl gibt Die Attributbewertung für den Code (Schülernummer, Klassenname) weist teilweise funktionale Abhängigkeiten auf, sodass diese Tabelle den Anforderungen von 2NF entspricht.
  • In Tabelle 2 ist die Schulnummer der Code und die nicht primären Attribute sind Name und Abteilungsname. Da der Code nur ein Attribut hat, ist es unmöglich, eine teilweise funktionale Abhängigkeit des nicht primären Attributs vom Code zu haben. welches auch die Anforderungen von 2NF erfüllt.

Wie in der folgenden Abbildung dargestellt, zeigt es den Übergang von der ersten Normalform zur zweiten Normalform. Die zweite Normalform fügt eine Spalte auf Basis der ersten Normalform hinzu. Diese Spalte wird als Primärschlüssel bezeichnet, und alle nicht-primären Attribute hängen vom Primärschlüssel ab.

Fügen Sie hier eine Bildbeschreibung ein

3NF (Dritte Normalform)

Auf der Grundlage von 2NF eliminiert 3NF die Übertragungsfunktionsabhängigkeit von Nicht-Schlüsselattributen von Codes . Das Datenbankdesign, das die Anforderungen von 3NF erfüllt, löst grundsätzlich die Probleme übermäßiger Datenredundanz, abnormaler Einfügung, abnormaler Änderung und abnormalem Löschen.

Beispiel: In der Studententabelle gibt es beispielsweise die Felder „Studentennummer“, „Name“, „Abteilungsname“ und „Abteilungsleiter“. Die Studentennummer ist ein Code, und die nicht primären Attribute sind Name, Abteilungsname und Abteilungsleiter. Unter diesen hängt der Abteilungsname von der Studentennummer ab, und der Abteilungsleiter hängt vom Abteilungsnamen ab, sodass eine transitive Abhängigkeit des Nicht-Hauptattributs (Abteilungsleiter) vom Code (Studentennummer) besteht, was in der Tabelle der Fall ist erfüllen nicht die Anforderungen von 3NF und die Tabelle kann in (Studentennummer, Name, Abteilungsname) und (Abteilungsname, Abteilungsleiter) zerlegt werden.

Konzeptergänzung

  • Funktionale Abhängigkeit: Wenn in einer Tabelle bei der Bestimmung des Werts des Attributs (oder der Attributgruppe) X der Wert des Attributs Y bestimmt werden muss, kann man sagen, dass Y funktional von X abhängig ist, geschrieben als X → Y.
  • Partielle funktionale Abhängigkeit (partielle funktionale Abhängigkeit): Wenn X → Y und es eine echte Teilmenge X0 von Ein Beispiel finden Sie unter Zweite Normalform.
  • Voll funktionale Abhängigkeit (Voll funktionale Abhängigkeit): Wenn in einer Beziehung ein Nicht-Hauptattributdatenelement von allen Schlüsselwörtern abhängt, wird dies als voll funktionale Abhängigkeit bezeichnet.
  • Übertragungsfunktionsabhängigkeit: Nehmen wir im relationalen Schema R(U) an, dass X, Y, Z verschiedene Attributteilmengen von U sind. Wenn X Y bestimmt, Y Z bestimmt und X kein Y enthält, bestimmt Y X nicht ( X ∪Y)∩Z=leere Menge, dann soll Z eine transitive funktionale Abhängigkeit von X haben. Ein Beispiel finden Sie unter Dritte Normalform. Transitive funktionale Abhängigkeiten führen zu Datenredundanz und Ausnahmen. Die Y- und Z-Teilmengen, von denen die Übertragungsfunktion abhängt, gehören oft zum selben Objekt und können daher in einer Tabelle zusammengefasst werden.

gespeicherte Prozedur

Wir können die gespeicherte Prozedur als eine Sammlung einiger SQL-Anweisungen betrachten, mit einigen logischen Steueranweisungen in der Mitte.

Gespeicherte Prozeduren sind sehr praktisch, wenn das Geschäft komplizierter ist. Beispielsweise müssen wir möglicherweise eine große Reihe von SQL-Anweisungen schreiben, um einen Vorgang abzuschließen. Zu diesem Zeitpunkt können wir eine gespeicherte Prozedur schreiben, was auch für unseren nächsten Aufruf praktisch ist .

Sobald die gespeicherte Prozedur debuggt und übergeben wurde, kann sie stabil ausgeführt werden. Darüber hinaus ist die Verwendung der gespeicherten Prozedur schneller als die reine Ausführung einer SQL-Anweisung, da die gespeicherte Prozedur vorkompiliert ist.

Gespeicherte Prozeduren werden in Internetunternehmen nicht häufig verwendet, da gespeicherte Prozeduren schwer zu debuggen und zu erweitern sind, nicht portierbar sind und Datenbankressourcen verbrauchen.

Das Alibaba Java Development Manual verlangt das Verbot der Verwendung gespeicherter Prozeduren.

Zusammenfassen

  • Verstehen Sie die Grundkonzepte von Datenbanken.
  • Unterscheiden Sie die Konzepte von Basistupeln, Codes, Kandidatencodes, Primärcodes, externen Codes, Primärattributen und Nicht-Primärattributen.
  • Achten Sie auf die Vor- und Nachteile von Fremdschlüsseln und spezifischen Verwendungsszenarien.
  • Das Datenbankparadigma muss nicht unbedingt erfüllt sein und muss in bestimmten Szenarien behandelt werden.
  • Gespeicherte Prozeduren sollten in der Produktion mit Vorsicht verwendet werden;

Supongo que te gusta

Origin blog.csdn.net/Qingai521/article/details/131172929
Recomendado
Clasificación