webForumDet fria alternativet

Vilken datatyp ska jag använda då resultatet kan vara 3 olika

Databaser & SQL

8 svar · 307 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

Jag ska skapa en statistiktabell som bla. registrerar om en användare kommer ifrån en sökmotor eller ej.

På frågan: Kommer besökaren ifrån en sökmotor?
Så finns det tre svar: Ja, Nej från helt annan sida, Nej skrivit url:en direkt i webbläsaren.
Vilken datatyp bör ett sådant fält vara i?
Bit: med 1, 0, null
Char(1) med 1, 0, null alt. 1,2,3

Medlem sedan aug. 20039 340 inlägg
#2

En Char(1) kan du sätta till 1, 2 eller 3, eller närmare bestämt alla värden mellan 0 och 255. Men du behöver ändp bara använda tre.

Medlem sedan juni 20003 076 inlägg
#3

Tolkar jag dig rätt om att du anser att datatypen då bör vara en Char(1)?

Medlem sedan aug. 20039 340 inlägg
#4

Ja!

Medlem sedan juli 2003465 inlägg
#5

varför inte int(1)?

Medlem sedan dec. 19995 874 inlägg
#6

Datatypen tinyint tycker jag verkar vara ett bra val här.

Ett bra tips när man bygger flervalstabeller kan vara att bygga upp alternativen baserat på bitar. Med det menar jag att det första alternativet är 1. Det andra är 2. Det tredje är 4, etc. Detta gör att om du i framtiden vill ha möjlighet att lägga till ett fjärde alternativ (värde 8), så går det bra. Vill du även förändra så att man skall ha möjlighet att välja flera alternativ så går det också bra.

Medlem sedan juni 20003 076 inlägg
#7

smart! :bire

Medlem sedan juni 200032 967 inlägg
#8

En annan trevlig effekt av att lagra på sättet Brimba föreslår är att värdet kan vara mer än ett samtidigt. Vill du att både 2 och 4 ska lagras så lagrar du helt enkelt 6.

Du kan sedan använda bitwise-operatorerna i SQL-frågor och i klienten.

mvh

Medlem sedan juni 20003 076 inlägg
#9

ja just ja!
det blir ju bara bättre å bätre detta! :)

249 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)