Runar0 Skrevet 22. mars 2007 Rapporter Del Skrevet 22. mars 2007 Hei, Eg holder på med eit system der ein bruker skal kunne registrere seg. Under registreringa får han ein god del valg som for eksempel kortid han kan vere online og kvaslags gear han har (det er til eit wow guild) dei forskellige online tidene og gear typene ligger i ein database og er indentifisert av ein id. Denne infoen skal lagrest i ein brukerdatabase. Siden antallet av ider på gear og online time kan endre fra person til person og så endrest av administratorer så er ikkje løsningen å lage eit felt for kvart av valga i bruker databasen. Så det eg tenkte å gjøre var legge til eit felt der eg lagra idene komma separert. For eks: user_online TEXT => 1,4,7,19,3, Er dette ei god løsning? Det einaste problemet eg kan se er når eg skal liste brukerane etter på så må eg vel først trekke ut alle brukerene for å så splitte opp listene og hente ut infoen for kver av idene. Og dette virker litt tungvint. Tar i mot alle forslag med takk (Dette var kanskje litt dorlig forklart men eg håper dere forstår det ) Runar Lenke til kommentar
Runar0 Skrevet 23. mars 2007 Forfatter Rapporter Del Skrevet 23. mars 2007 Ser ut til at eg ikkje klarte og forklare det godt nok, så eg prøver igjen. La oss si at eg har ein tabell som heiter så mye som 'users'. I 'users' er det tre felt. user_id, user_name og user_online. user_id er unik for kver bruker og user_name er eit vanlig text felt, mens user_online skal inneholde info om kortid brukere kan vere online. Så har eg ein tabell til 'onlinetimes' og i denne tabellen har eg to felt online_id og online_text. online_id er unik mens online_Text er teksten som skal vises. F.eks: "Mandag 17-18" eller "Tirsdag 14-19". Dei forskellige radene i 'onlinetimes' blir vist fram til brukeren ved hjelp av ei gruppe med checkboxer. Brukeren kan velge ein eller fleire av alternativene. Det er lurer på er korleis eg bør lagre idene for kortid bruken kan vere online i bruker databasen. Det eg har tenkt på sjøl er å lagre det i eit tekst felt kommareparert. F.eks: "1,5,20,50" men dette virker som en dorlig løsning siden det vil by på problemer senere når det kommer til sortering (eller tar eg feil der?) Er det noen som har noen innspill på om dette er ein god måte å gjøre det på, evntuelt noen som har ein anna løsning ved bruk av ein anna datatype eller lignende? Runar Lenke til kommentar
ofredstie Skrevet 2. april 2007 Rapporter Del Skrevet 2. april 2007 Her er ett forslag (trenger sikkert litt justering): CREATE TABLE user ( user_name VARCHAR(20) NOT NULL, password VARCHAR(30) NOT NULL, firstname VARCHAR(20) NOT NULL, middlename VARCHAR(20), surname VARCHAR(30) NOT NULL, last_updated TIMESTAMP NOT NULL, -- CONSTRAINT USER_PK PRIMARY KEY (user_name) ); CREATE TABLE day ( day_id INT(1) AUTO_INCREMENT, day_name VARCHAR(10) NOT NULL, -- CONSTRAINT DAY_PK PRIMARY KEY (day_id) ); CREATE TABLE user_restriction ( user_name VARCHAR(20) NOT NULL, day_id INT(1) NOT NULL, start_time TIME NOT NULL, end_time TIME NOT NULL, -- CONSTRAINT USER_RESTRICTION_PK PRIMARY KEY (user_name,day_id), CONSTRAINT USER_RESTRICTION_FK_TO_USER FOREIGN KEY (user_id) REFERENCES user(user_id), CONSTRAINT USER_RESTRICTION_FK_TO_DAY FOREIGN KEY (day_id) REFERENCES day(day_id) ); Tenkte at det kanskje kunne lønne seg å ha user_name som PK siden user_name må være unik (da tar du to fluer i en smekk ved å ikke bruker user_id, slipper å måtte kjøre et ekstra søk gjennom databasen for å sjekke at ingen har samme brukernavn). I tillegg satte jeg opp en tabell over ukedagene som jeg kalte DAY. USER_RESTRICTION er det samme som din ONLINETIMES, her satte jeg opp en composite PK (av user_name og day_id) for å unngå at f.eks. en bruker kan ha flere "restrictions" på den samme dagen. Uannsett, kun ett forslag som sikkert kan endres litt. :o) Lykke til. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå