Avatar billede davidfossil Nybegynder
19. november 2006 - 15:01 Der er 6 kommentarer og
1 løsning

Egne datatyper i Sql Server

Jeg kunne rigtig godt tænke mig en datatype til opbevaring af IP-adresser, som var optimeret netop til dette formål. Hver adresse er som bekendt opbygget af fire bytes og jeg ønsker at gemme netop disse bytes og intet andet. I dag gemmer jeg adresserne som varchar(15) hvilket giver et væsentligt højere pladsforbrug.

Er der nogen der kan give nogle eksempler - eller links til fornuftige artikler - om hvordan man definerer sin egen datatype?

På forhånd tak for hjælpen.
Avatar billede arne_v Ekspert
19. november 2006 - 15:46 #1
du kan ikke som sådan definere din egen type - eller det kan du godt men kun
som en eksisterende type med en constraint på

hvorfor gemmer du ikke de IP adresser som INTEGER ?
Avatar billede davidfossil Nybegynder
19. november 2006 - 16:45 #2
Det har jeg sådan set også overvejet, men jeg endte med at gå lidt kold i konverteringen. Endvidere håbede jeg lidt på at man kunne gemme de fire bytes, men læse og skrive fra feltet ved at caste en varchar til min egen datatype. Hvis jeg implementerer to UDF til omskrivning den ene og anden vej, kan jeg da bruge det med en "type med en constraint på" til at lægge et automatisk cast ind? Alternativt kunne jeg selvfølgelig kalde min UDF explicit når jeg læser/skriver fra tabeller med ip-adresser.
Avatar billede arne_v Ekspert
19. november 2006 - 17:49 #3
hvis du laver app i C# bør det være endda særdeleses nemt at konvertere

man bør også kunne lave konverteringen i en UDF, men umiddelbart ville jeg
nok tro at det var nemmere i app (hvis det er SQLServer 2005 er det et fedt fordi
du kan lave din UDF i C#)
Avatar billede davidfossil Nybegynder
19. november 2006 - 18:45 #4
Jeg har lige købt en bog om Sql Server 2005 forleden, så mon ikke dette skulle være lejligheden til at få læst lidt om CLR-integrationen og få skrevet de par UDF's :)

For at vende lidt tilbage til tidligere: Jeg kan oprette nye "User-defined Data Types" i min database gennem det Sql Server Management Studio (MSSSMS), men hvad kan disse bruges til? Jeg har som forsøg oprettet en ny type "inet" nu som internt er en int. Kan jeg bruge dette til noget som helst i denne case, eller skal jeg bare have et alm. int?
Avatar billede arne_v Ekspert
19. november 2006 - 22:33 #5
jeg mener primært at fordelen ved dem er den implicitte dokumentation i navnet og constraints

du kan vist ikke rigtigt udnytte constraints da alle værdier af en int vel er valide

men derfor kan en type inet_address jo godt øge læsbarheden
Avatar billede davidfossil Nybegynder
20. november 2006 - 16:22 #6
Ok - det var vist tilstrækkeligt info til at jeg kan komme videre.
Smider du er svar? :)
Avatar billede arne_v Ekspert
21. november 2006 - 00:38 #7
ok
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
Computerworld tilbyder specialiserede kurser i database-management

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