Hvis du kun har 1 række i tabellen, skal kardinaliteten for indekset selvfølgelig være 1. Det tæller bare antallet af unikke værdier.
Hvis du tænker på et indeks som en opslagstabel baseret på buckets (som en hash), så er kardinaliteten antallet af buckets.
Sådan fungerer det:Når du bygger et indeks over et sæt kolonner (a,b,c,d)
, så gennemgår databasen alle rækkerne i tabellen og ser på de ordnede firlinger af disse 4 kolonner for hver række. Lad os sige, at dit bord ser sådan ud:
a b c d e
-- -- -- -- --
1 1 1 1 200
1 1 1 1 300
1 2 1 1 200
1 3 1 1 200
Så hvad databasen ser på er kun de 4 kolonner (a,b,c,d):
a b c d
-- -- -- --
1 1 1 1
1 2 1 1
1 3 1 1
Kan du se, at der kun er 3 unikke rækker tilbage? De bliver vores spande, men det vender vi tilbage til. I virkeligheden er der også et post-id eller række-id for hver række i tabellen. Så vores originale tabel ser således ud:
(row id) a b c d e
-------- -- -- -- -- --
00000001 1 1 1 1 200
00000002 1 1 1 1 300
00000003 1 2 1 1 200
00000004 1 3 1 1 200
Så når vi kun ser på de 4 kolonner i (a,b,c,d), ser vi virkelig også på række-id'et:
(row id) a b c d
-------- -- -- -- --
00000001 1 1 1 1
00000002 1 1 1 1
00000003 1 2 1 1
00000004 1 3 1 1
Men vi ønsker at lave opslag efter (a,b,c,d) og ikke efter række-id, så vi producerer noget som dette:
(a,b,c,d) (row id)
--------- --------
1,1,1,1 00000001
1,1,1,1 00000002
1,2,1,1 00000003
1,3,1,1 00000004
Og til sidst grupperer vi alle række-id'erne for rækker, der har identiske (a,b,c,d) værdier:
(a,b,c,d) (row id)
--------- ---------------------
1,1,1,1 00000001 and 00000002
1,2,1,1 00000003
1,3,1,1 00000004
Kan du se det? Værdierne af (a,b,c,d), som er (1,1,1,1) (1,2,1,1) og (1,3,1,1) er blevet nøgler til vores opslagstabel ind i rækkerne i den oprindelige tabel.
Faktisk sker der ikke rigtig noget af dette, men det burde give dig en god idé om, hvordan en "naiv" (dvs. ligetil) implementering af et indeks kan udføres.
Men bundlinjen er denne:kardinalitet måler bare, hvor mange unikke rækker der er i et indeks. Og i vores eksempel var det antallet af nøgler i vores opslagstabel, som var 3.
Håber det hjælper!