Avatar billede jonas82 Nybegynder
09. september 2006 - 22:20 Der er 6 kommentarer og
1 løsning

Membership framework og primary key

Hej,

Kan nogen forklare mig hvorfor MS har valgt at benytte en primary key for en user på formen guid (304919f8-c551-4e8e-b950-3c4de90e45ef) i stedet for en almindelig auto increment integer?

Jeg har meget svært ved at se hvad fordelen er. Det må da være bedre performance mæssigt med en Integer? Og når man skal bruge den som fremmednøgle bliver det da også grimt - eller bør man bruger username som fremmednøgle?

Håber nogen kan oplyse mig... :)
Avatar billede snepnet Nybegynder
10. september 2006 - 16:56 #1
Well.... hvis du har to databaser der indskrives brugere i, og du ønsker at synkronisere dem - kan det blive vanskeligt hvis din nøgle er en autoinkrementerende integer. så vil du jo have brugere med samme unikke nøgle, men som ikke er samme bruger.
Guid's er da en vældig smart måde at fikse det på... Hvorfor synes du det er grimt?
Og hvad ville du bruge som alternativ til at fikse "uniquenes" på dine nøgler?
Mvh
Avatar billede jonas82 Nybegynder
10. september 2006 - 17:07 #2
side.dk/bruger.aspx?brugerId=304919f8-c551-4e8e-b950-3c4de90e45ef

Det synes jeg ikke er så kønt :) Og det fylder vel også en del ekstra MB i databasen at slæbe rundt på den store guid som fremmednøgle.

Uniquenes er vel ikke noget prob. med autoincrement integer undtagen hvis man skal slå databaser sammen selvfølgelig (har jeg aldrig været ude for at skulle).
Avatar billede snepnet Nybegynder
10. september 2006 - 17:46 #3
Well... troede det var ud fra en softwaredesign praksis du ikke synes det var kønt. Jeg kan godt forstå at du ikke bryder dig om udseendet af linket.

Men.... hvorfor vil du overhovedet kalde dine sider med en oplysning om brugeren? Frameworket fikser dig programmatisk adgang til den slags info.

Nu er den løsning der er leveret af MS jo tænkt som værende generel, så jeg synes det er glimrende at der er taget højde for at man kunne få lyst til at merge databaser - specielt når man nu pr. default får en pr. site man opretter.

Generelt synes jeg det er hensigtsmæssigt at du kan betragte en bruger som unik - hvilket snildt gøres med en guid. Det er jo ikke kun i forbindelse med direkte sammenlægning af databaser det er interessant med en unik identifikation.
Det kunne også bare være udveksling af brugere fra ét system til et andet.
Eller måske løsninger hvor du kan arbejde både online og offline.

Jeg mener en guid fylder 16 bytes i databasen mod 4 for en integer, så det bliver næppe det der tvinger din database i knæ.

Mvh
Avatar billede jonas82 Nybegynder
14. september 2006 - 15:50 #4
Ja det er måske ikke det helt store pladsmæssigt.

Hvis man merger databaser giver det vel problem hvis flere har samme brugernavn :)

Er det lige så hurtigt at bruge en guid(varchar) som key. Jeg har altid troet at Integers er hurtigere.

Hvor kommer guid egentlig fra. Er det "bare" genereret? - så det i teorien ikke er unikt bare usandsynligt mange kombinationer?

Mange tak for dine svar. Du må gerne lægge et svar.
Avatar billede snepnet Nybegynder
15. september 2006 - 09:28 #5
Hvis flere brugere har samme navn vil det bestemt give problemer, hvis du bruger det som nøgle.
En GUID er ganske rigtig genereret, og der er deraf en sansynlighed for, at der vil kunne genereres dubletter - den er dog meget lille (der benyttes bl.a. oplysninger fra den fysiske pc til genereringen - f.eks. din mac-adresse på netkortet, serienummer på din bios ol).
Mht. til performance, såh... well... hvis du har behov for guid's må de jo koste det det koster. Det er ikke noget jeg har testet på selv, men det forlyder at guids performer bedre end numeriske værdier når du kommer på den anden side af 100.000 rækker og bruger en sql server.
Måske du kan google noget op omkring det.
Mvh
Avatar billede jonas82 Nybegynder
30. oktober 2006 - 18:51 #6
Tak for den gode forklaring. Du må gerne svare...
Avatar billede snepnet Nybegynder
30. oktober 2006 - 20:50 #7
Så smider jeg et svar her :o)
Mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester