Vinnaren i pepparkakshustävlingen!
2008-03-28, 20:09
  #1
Medlem
BeanBeamers avatar
Jag håller på att utveckla en sida där man väljer kanske 15/93 ämnen man vill bevaka (allt mellan 0-93 altså). Hur sparar jag bäst vilka ämnen varje användare valt i MySQL? Förslagsvis i en kolumn då lite jobbigt med 93 kolumner.

Har ett vagt minne av att man kan använda varje val som en siffra som dubblas för varje hopp, ex
Ämne 1: 1
Ämne 2: 2
Ämne 3: 4
etc

och sen lägga ihop de valda till ett tal och sedan utifrån det talet veta exakt vilka som valts, kan det vara något tro?

Alla förslag välkomna.
Edit: Kommateckenknappen jävlas
__________________
Senast redigerad av BeanBeamer 2008-03-28 kl. 20:11.
Citera
2008-03-28, 20:40
  #2
Medlem
gadzooxs avatar
Citat:
Ursprungligen postat av BeanBeamer
Jag håller på att utveckla en sida där man väljer kanske 15/93 ämnen man vill bevaka (allt mellan 0-93 altså). Hur sparar jag bäst vilka ämnen varje användare valt i MySQL? Förslagsvis i en kolumn då lite jobbigt med 93 kolumner.
Den här frågan hör nog bättre hemma i databasforumet.

Citat:
Ursprungligen postat av BeanBeamer
Har ett vagt minne av att man kan använda varje val som en siffra som dubblas för varje hopp, ex
Ämne 1: 1
Ämne 2: 2
Ämne 3: 4
etc

och sen lägga ihop de valda till ett tal och sedan utifrån det talet veta exakt vilka som valts, kan det vara något tro?
Du menar typ att bitmaska ut vilka ämnen användaren valt? Om bit 7 är satt så vill han bevaka ämne 84? Låter rätt jobbigt, i synnerhet då ämnena förmodligen kan komma att förändras eller utökas....

En bättre lösning är nog att lägga användare och ämnen i varsin tabell. Genom en tredje tabell knyter du sedan ihop dem, en typisk many-to-many-relation.

Tabell Users
UserID, Name, Password, etc

Tabell Subjects
SubjectID, Name, Date, Whatever

Tabell UserSubjects (eller nåt)
UserID, SubjectID

Fetstilta kolumnerna ovan är Primary Key och auto_increment. Bägge kolumnerna i UserSubjects är foreign keys som pekar på respektive primary.

...I UserSubjects lagrar du data enligt nedan:
UserID, SubjectID
1, 1
1, 2
1, 3
5, 12
5, 1

(Dvs användar-ID 1 bevakar ämne 1,2 och 3, medan användare 5 bevakar 1 och 12).
Därefter är det en relativt lätt match att bygga queries som joinar ihop allt.
Citera
2008-03-28, 22:00
  #3
Medlem
Stockos avatar
Citat:
Ursprungligen postat av gadzoox
Den här frågan hör nog bättre hemma i databasforumet.

PHP -> DB

/Mod
Citera
2008-03-29, 16:08
  #4
Medlem
BeanBeamers avatar
Citat:
Ursprungligen postat av gadzoox
Den här frågan hör nog bättre hemma i databasforumet.


Du menar typ att bitmaska ut vilka ämnen användaren valt? Om bit 7 är satt så vill han bevaka ämne 84? Låter rätt jobbigt, i synnerhet då ämnena förmodligen kan komma att förändras eller utökas....

En bättre lösning är nog att lägga användare och ämnen i varsin tabell. Genom en tredje tabell knyter du sedan ihop dem, en typisk many-to-many-relation.

Tabell Users
UserID, Name, Password, etc

Tabell Subjects
SubjectID, Name, Date, Whatever

Tabell UserSubjects (eller nåt)
UserID, SubjectID

Fetstilta kolumnerna ovan är Primary Key och auto_increment. Bägge kolumnerna i UserSubjects är foreign keys som pekar på respektive primary.

...I UserSubjects lagrar du data enligt nedan:
UserID, SubjectID
1, 1
1, 2
1, 3
5, 12
5, 1

(Dvs användar-ID 1 bevakar ämne 1,2 och 3, medan användare 5 bevakar 1 och 12).
Därefter är det en relativt lätt match att bygga queries som joinar ihop allt.

Fick läsa igenom ditt inlägg X antal gånger men nu fattar jag principen Tack
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback