02. november 2004 - 10:19Der er
16 kommentarer og 2 løsninger
Konvertering af en int32 til et antal booleans
Jeg er ved at lave et overordnet objekt der skal styre hvor langt en sag er blevet behandlet. For at dette skal komme til at fungere optimalt skal der være en del booleans på dette objekt. Når jeg skal lagre disse mange booleans i min mssql database tænkte jeg at det må være muligt at gemme denne som en integer og så konvertere den om til et binært tal, da den jo så kan indeholde mange rettigheder samtidig. Nogen der kender til en smart måde at lave denne konvertering på?
Hvorfor vil du det? SQL Server pakker i forvejen bit-felter.
Fra Books Online vedr. datatypen bit:
Microsoft® SQL Server™ optimizes the storage used for bit columns. If there are 8 or fewer bit columns in a table, the columns are stored as 1 byte. If there are from 9 through 16 bit columns, they are stored as 2 bytes, and so on.
Grunden til at jeg gerne vil gemme dem der, er at hvis jeg finder ud af at jeg mangler en rettighed mere så skal jeg ikke til at ændre på databasen, men derimod bare lave nogle minimale ændringer i objektet. Ved at gemme det som kolonner i databasen skal jeg til at lave redundante ændringer.
Hvor vil de redudante ændringer opstå? Hvis du følger almindelige normaliseringsformer, vil redundans ikke opstå - du vil kun have bit-felterne et sted.
Jeg vil kun have felterne et sted ja, men vil blive nødt til at lave to ændringer istedet for 1, og det vil (heldigvis) aldrig blive til mere end maks 10 rettigheder der skal styres :)
takker for hjælpen, og bennytordrup jeg vil lige overveje din løsning en gang til, men tror bare jeg får et frygteligt bøvl med at overbevise chefen om at databasen skal kunne ændres undervejs, han er meget øm om sine database designs...
arne> Godtaget. Men jeg vil til enhver tid vælge bit-løsningen, hvis det er et spørgsmål om at gemme ja/nej-værdier.
Synes godt om
Ny brugerNybegynder
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.