Az adatbázisokban rengeteg szakzsargon van, és a kardinalitás egyike azoknak a szavaknak, amelyeket a tapasztalt emberek hajlamosak elfelejteni, hogy egyszer régen nem ismerték. De ha nem ismered – és eltart egy darabig, amíg igazán megbarátkozol a kardinalitással -, akkor szuper zavaró, amikor a DBA csak úgy, lassítás nélkül bedobja a mondat közepébe! Ne félj! A kardinalitás két dolgot jelent az adatbázisokban. A mi céljaink szempontjából az egyik sokkal többet számít, mint a másik. Először az egyszerűt nézzük meg, és utána ássuk bele magunkat abba, ami a lekérdezések teljesítménye szempontjából számít.A lekérdezések teljesítménye szempontjából sokat jelentő kardinalitás definíciója az adatok kardinalitása. Ez azt jelenti, hogy hány különböző érték található egy oszlopban.A kardinalitás első jelentése az adatbázis tervezésekor van – ezt nevezzük adatmodellezésnek. Ebben az értelemben a kardinalitás azt jelenti, hogy egy kapcsolat egy az egyhez, sok az egyhez vagy sok a sokhoz viszonyul. Tehát valójában a kapcsolat kardinalitásáról beszélünk.A kardinalitás hivatalos, nem adatbázis-szótári definíciója matematikai: az értékek száma egy halmazban. Adatbázisokra alkalmazva a jelentés egy kicsit más: a táblázat oszlopában található különálló értékek száma a táblázat sorainak számához viszonyítva. Az oszlopban ismétlődő értékek nem számítanak.A kardinalitásról azonban általában nem számként beszélünk. Gyakoribb, hogy egyszerűen “magas” és “alacsony” kardinalitásról beszélünk. A sok különálló érték magas kardinalitású; a sok ismétlődő érték alacsony kardinalitású.Képzeljünk el egy termékleíró táblát egy e-kereskedelmi adatbázisban:A ProductID
oszlop magas kardinalitású lesz, mert valószínűleg ez a tábla elsődleges kulcsa, tehát teljesen egyedi. Ha ezer sor van a táblázatban, akkor ezer különböző ProductID
érték lesz. A Category
oszlopban sok ismétlődés lesz, és alacsony vagy közepes kardinalitású: talán 50 vagy 100 különböző Category
érték. A Name
valószínűleg magas kardinalitású, kivéve, ha a táblázatban több van, mint ami látszik (például több sor a különböző termékszínekhez és egyéb variációkhoz).A kardinalitás nagyban befolyásolja a teljesítményt, mivel befolyásolja a lekérdezés végrehajtási tervét. A tervező megvizsgálja az oszlopstatisztikákat, és többek között arra is felhasználja őket, hogy kitalálja, hány értéknek felel meg valószínűleg egy lekérdezés. Attól függően, hogy mit talál, különböző lekérdezés-végrehajtási terveket használhat a legjobb teljesítmény elérése érdekében. De ez egy másik blogbejegyzés témája, mert a magyarázata egy kis munkát igényel.Így mostantól, ha legközelebb valaki szünet nélkül beleírja a “nagy kardinalitás” kifejezést egy mondatba, tudod, hogy valójában “sok különböző értékre” gondol. És ezzel meg is van!