Hvis du absolut ingen data har om dit problem, er du tvunget til at lave et skøn.
Den generelle form for denne formel er forklaret i kommentarerne:
- hvis vi kun bruger én nøglekolonne (
x
) af et indeks med flere kolonner (medc
kolonner), får via
rækker (1 % af det samlede antal rækker). Så forx=1
, resultatet era
Per definition. - hvis vi kender værdien for hver nøglekolonne i et multikolonneindeks, får vi antallet af rækker pr. hel nøgle (
b
); så forx=c
, får vib
rækker (som er 1 eller 10 ) per definition. - imellem (hvis vi bruger nøgleværdier til mere end 1 nøglekolonne, men ikke alle), kan vi for hver yderligere kendt nøgleværdi ekskludere nogle yderligere rækker:vi har
a-b
rækker, der ikke vil tilhøre det tilfælde, hvor vi kender vores fulde nøgle (som ville haveb
rækker), og de skal per definition udelukkes proportionalt med forholdet mellem anvendelige nøglekolonner ((x-1)/(c-1)
). -1 i (x-1)/(c-1)
er kun et skift (du kan bare bruge forskellige variabelnavne), da vi kun behøver at tælle de yderligere kolonner, menc
ogx
er tallet inklusive den første kolonne. (I en tidsserie vil du kalde parameteren for den første kolonnet=0
, og-1
gør præcis det).
Så afslutningsvis får vi a - (a-b) * (x-1)/(c-1)
(a
for den første nøglekolonne minus rækkerne, vi proportionelt udelukker). Dette er (hvis du transformerer det udtryk en smule) præcis den angivne formel. Et hurtigt fornuftstjek:For x=1
(x-1=0
), det andet led er 0 og vi får a
, som defineret af den første betingelse; for x=c
, får vi a-(a-b)=b
som defineret af den anden betingelse.
Det er ikke urimeligt at lave denne ansatz ved at bruge disse antagelser, men du kan sikkert finde en anden formel, der giver lige så meget mening. At argumentere for, at det er bedre, ville dog være en sværere opgave.
Så er der et spørgsmål om at vælge værdierne (b=10
og 1 %
I dette tilfælde). Du kan naturligvis vælge enhver værdi. For at gøre dette uden pålidelige data bortset fra en mavefornemmelse er der et koncept kaldet Fermi-estimat :
Du vælger stort set kun størrelsesordenen (1, 1000000, 1/100) til dine inputparametre, og du får en rimelig størrelsesorden for dit resultat.
Så hvor mange rækker forventer du, at en ikke-unik nøgle skal dække? Det er mere end 1, ellers ville du gøre det til en unik nøgle, men er det mere som 2, 10 eller 100? 10 er sandsynligvis et godt gæt (det dækker værdi fra omkring 3 til 30 i det skøn). Så selvom disse tal kunne være kommet fra en 2-årig verdensomspændende undersøgelse om nøglefordeling, er estimerede værdier i potenser på 10 normalt udledt på en måde som denne. Spørg udvikleren, hvis du vil være helt sikker.
Og den obligatoriske xkcd for denne slags emner:What-if? Mal jorden