Avatar billede hulla Novice
09. januar 2012 - 13:58 Der er 2 kommentarer og
1 løsning

At gemme som binært tal

Hej

Jeg har et problem med mine binære evner.

Jeg har et website hvor jeg skal gemme x antal farver på et produkt.
Det styrer jeg ved at give hver farve en binær værdi, f.eks.:
Rød = 2, Blå = 4, Grøn = 8.
På produkt-tabellen gemmer jeg så det sammenlagte tal, f.eks.:
12, hvis blå og grøn er valgt. Ved hjælp af en & operator finder jeg så ud af hvilke farver der tilhører det givne produkt.
Det virkede glimrende indtil for ganske nylig!

Jeg er nemlig løbet tør for plads i en long (Int64)

Jeg har så andetsteds engang set at man løste det ved at have flere felter i Color tabellen, altså BitValue1, BitValue2 osv.

Jeg kan bare ikke gennemskue hvordan man kan styre det, nogen der kan hjælpe mig her?
Avatar billede arne_v Ekspert
09. januar 2012 - 19:09 #1
Hvis du skal kunne gemme N farver per produkt kan du vaelge:

1) have en kolonne i produkt tabellen som kan indeholder integers 0..2^N-1 (hvis databasen ikke native understoetter integers med mere end 64 bit kan du bruge CHAR(16) til at simulere 128 bit integer med.

2) have en ekstra tabel med 2 felter: produktid og farve med en raekke per farve et produkt har

Loesningen med N kolonner i produkt tabellen er noget slam.
Avatar billede hulla Novice
15. januar 2012 - 12:48 #2
Jeg valgte at løse det med en relationstabel som du anbefalede.
Dropper mit fine binære system :-(

Smider du et svar?
Avatar billede arne_v Ekspert
15. januar 2012 - 15:52 #3
svar
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

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