In Datenbanken gibt es eine Menge Jargon, und Kardinalität ist eines der Wörter, bei denen erfahrene Leute vergessen, dass sie es einmal nicht wussten. Aber wenn man es nicht kennt – und es dauert eine Weile, bis man sich mit der Kardinalität anfreunden kann – ist es sehr verwirrend, wenn der DBA es einfach mitten im Satz fallen lässt, ohne zu bremsen! Aber keine Angst: Kardinalität hat in Datenbanken zwei Bedeutungen. Für unsere Zwecke ist das eine viel wichtiger als das andere. Die Definition der Kardinalität, die für die Abfrageleistung von großer Bedeutung ist, ist die Kardinalität der Daten. Die erste Bedeutung des Begriffs Kardinalität ergibt sich beim Entwurf der Datenbank, der so genannten Datenmodellierung. In diesem Sinne bedeutet die Kardinalität, ob eine Beziehung eins-zu-eins, viele-zu-eins oder viele-zu-viele ist. Die offizielle Definition der Kardinalität in einem Nicht-Datenbank-Wörterbuch ist mathematisch: die Anzahl der Werte in einer Menge. Bei der Anwendung auf Datenbanken ist die Bedeutung etwas anders: Es handelt sich um die Anzahl der eindeutigen Werte in einer Tabellenspalte, relativ zur Anzahl der Zeilen in der Tabelle. Wiederholte Werte in der Spalte zählen nicht. Normalerweise wird die Kardinalität jedoch nicht als Zahl bezeichnet. Üblicher ist es, einfach von „hoher“ und „niedriger“ Kardinalität zu sprechen. Stellen Sie sich eine Tabelle mit Produktbeschreibungen in einer E-Commerce-Datenbank vor:Die Spalte ProductID
hat eine hohe Kardinalität, da sie wahrscheinlich der Primärschlüssel der Tabelle ist und somit eindeutig ist. Wenn es tausend Zeilen in der Tabelle gibt, wird es tausend verschiedene ProductID
-Werte geben. Die Spalte Category
wird sich häufig wiederholen und eine niedrige oder mittlere Kardinalität aufweisen: vielleicht 50 oder 100 verschiedene Category
-Werte. Die Spalte Name
hat wahrscheinlich eine hohe Kardinalität, es sei denn, die Tabelle enthält mehr, als man auf den ersten Blick sieht (z. B. mehrere Zeilen für verschiedene Produktfarben und andere Variationen) Die Kardinalität wirkt sich stark auf die Leistung aus, da sie den Abfrageausführungsplan beeinflusst. Der Planer untersucht die Spaltenstatistiken und verwendet sie unter anderem, um herauszufinden, mit wie vielen Werten eine Abfrage wahrscheinlich übereinstimmen wird. Je nachdem, was er herausfindet, kann er verschiedene Abfrageausführungspläne verwenden, um die beste Leistung zu erzielen. Wenn also das nächste Mal jemand „hohe Kardinalität“ in einen Satz einbaut, ohne eine Pause zu machen, wissen Sie, dass er wirklich „viele verschiedene Werte“ meint. Und da haben Sie es!