14. november 2008 - 20:02Der er
5 kommentarer og 1 løsning
hvorfor autonummering til primær id
Hej
Når man designer en database har jeg set at nogle anbefaler man bruger surrogatekey og ikke naturalkeys som primær nøgle. jeg har lidt svært ved at se hvad fordelen ved at have en surrogate key er. Hvis man har naturalkeys kan man jo bruge den som søgekriterie, det er vel svært ved surrogate key!? hvad er fordelen så?
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Fordelen er at man aldrig viser en surrogate key til brugerne og derfor skal den aldrig aendres.
Hvis du nummererer dine brugere 1, 2, 3, ... og aldrig viser nummeret i applikationen saa vil du aldrig opleve at at nogen skal aendres fra 777 til 779.
Natural keys er kendte af brugerne og skal derfor aendres en gang imellem.
Folk tager navneforandring og faar nyt telefonnummer for et godt ord. Hvis folk faar en koensskifte operation skifter de CPR nummer o.s.v..
Og det kan vaere tricky at aendre en primary key hvis der er mange foreign keys som peger paa den.
jamen hvorfor så overhoved have en primær nøgle i de tilfælde. Hvis jeg har en tabel med disse 4 felter: afdeling, beløb, fradato, tildato. Hvor at samme afdeling og beløb sagtens kan opstå flere gange bare med forskellige tildato og fradato og nogle gange vil der stå null i tildato og fradato hvis de ikke er kendte. Der er eneste mulighed at have en surrogate primærnøgle f.eks. autonummering. men hvad kan den bruges til så i forhold til ikke at have nogle primær nøgle?
Det er en doedssynd ikke at have en primaernoegle. Det er altid godt at have en unik identifikation af en raekke. Ellers kan man ikke garantere at man kan hente en bestemt raekke med en query.
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.