Frage: Können Sie erklären, was ein Index in diesem Szenario wäre und wie er sich von einem Fremdschlüssel unterscheidet und wie sich dies auf mein Datenbankdesign auswirkt?
Ihre Fremdschlüssel in diesem Fall sind die beiden Spalten in Ihrer Posts_Tags Tabelle. Mit einem Fremdschlüssel muss jede Fremdschlüsselspalte einen Wert aus der Haupttabelle enthalten, auf die sie verweist.In diesem Fall die Tabellen Posts und Tags.
Posts_Tags-> PostID muss ein Wert in posts- enthalten sein> postID
Posts_Tags-> TagID muss ein Wert in Tags- enthalten sein> TagID
Denken Sie an einen Index als eine Spalte, die war erhöhte Geschwindigkeit und Effizienz für die Abfrage/Suche von Werten auf Kosten der größeren Datenbankgröße. Im Allgemeinen sind Primärschlüssel Indizes und andere Spalten, die Abfrage/Suche auf Ihrer Website erfordern, in Ihrem Fall wahrscheinlich der Name eines Beitrags (Posts> PostName)
In Ihrem Fall werden Indizes wenig Einfluss auf Ihre haben Design (sie sind schön für Geschwindigkeit und Effizienz), aber Ihre Fremdschlüssel sind sehr wichtig, um Datenkorruption zu vermeiden (mit Werten in ihnen, die nicht mit einem Post und/oder Tag übereinstimmen).
Fremdschlüssel erzwingen keine NOT NULL-Regel. Ein Fremdschlüssel erzwingt eine Einschränkung für die Werte einer Spalte. – jabbie
Er spricht nicht davon, einen NOT NULL-Wert zu erzwingen, er spricht davon, sicherzustellen, dass ich keine Id in der Child-Tabelle habe, die in der Elterntabelle nicht existiert. –
Genau. Danke, Gabriel, für die Erklärung. – Dmitry