Databáze mají spoustu žargonu a kardinalita je jedním z těch slov, u kterých zkušení lidé zapomínají, že je kdysi neznali. Ale pokud ho neznáte – a chvíli trvá, než se s kardinalitou opravdu sžijete – je super matoucí, když ho DBA prostě hodí doprostřed věty, aniž by zpomalil! Nebojte se: Kardinalita znamená v databázích dvě věci. Pro naše účely je jedna důležitější než druhá. Nejprve se budeme zabývat tou jednoduchou, a pak se pustíme do té, na které záleží pro výkonnost dotazů. definice kardinality, na které hodně záleží pro výkonnost dotazů, je kardinalita dat. Jde o to, kolik odlišných hodnot je ve sloupci. první význam kardinality je při návrhu databáze – čemuž se říká modelování dat. V tomto smyslu kardinalita znamená, zda je vztah jedna k jedné, mnoho k jedné nebo mnoho k mnoha. Ve skutečnosti tedy mluvíte o kardinalitě vztahu. oficiální, nedatabázová slovníková definice kardinality je matematická: počet hodnot v množině. Při použití v databázích je význam trochu jiný: je to počet různých hodnot ve sloupci tabulky vzhledem k počtu řádků v tabulce. Opakované hodnoty ve sloupci se nepočítají. o kardinalitě však obvykle nemluvíme jako o čísle. Obvyklejší je jednoduše mluvit o „vysoké“ a „nízké“ kardinalitě. Hodně odlišných hodnot je vysoká kardinalita; hodně opakujících se hodnot je nízká kardinalita. představte si tabulku s popisem produktu v databázi elektronického obchodu: Sloupec ProductID
bude mít vysokou kardinalitu, protože je pravděpodobně primárním klíčem této tabulky, takže je zcela jedinečný. Pokud je v tabulce tisíc řádků, bude v ní tisíc různých hodnot ProductID
. Sloupec Category
se bude hodně opakovat a bude mít nízkou nebo střední kardinalitu: možná 50 nebo 100 různých hodnot Category
. Name
je pravděpodobně vysoká kardinalita, pokud v této tabulce není víc, než se na první pohled zdá (například více řádků pro různé barvy produktů a další varianty). kardinalita má velký vliv na výkon, protože ovlivňuje plán provádění dotazu. Plánovač prozkoumá statistiky sloupců a na jejich základě mimo jiné zjistí, kolika hodnotám bude dotaz pravděpodobně odpovídat. Podle toho, co zjistí, může použít různé plány provedení dotazu a pokusit se dosáhnout nejlepšího výkonu. Ale to je téma na jiný příspěvek na blogu, protože vysvětlit to dá trochu práce.“ Takže až příště někdo bez pauzy do věty utrousí „vysoká kardinalita“, vězte, že tím opravdu myslí „mnoho různých hodnot“. A tady to máte!