14. december 2001 - 00:22Der er
11 kommentarer og 2 løsninger
Ideer og SQL
Jeg ved ikke om dette spm. hører hjemme her, eller i frrelance... :)
Jeg er igang med at lave en side hvor det er meningen at folk skal kunne føre medlems db, men det skal være sådan at hver klub/gruppe skal selv kunne være sine, kolonner hvis i ved hvad jeg mener... når man opretter kan man vælge standard er at selv at lave sine felter... så hvis nogle vil føre medlemmernes navn,email,adresse,alder så kan du det, og dem der vil føre fornavn,efternavn,hold,alder,højde,email,hjemmeside kan gøre det...
Jeg er ikke sikker på hvordan det skal bygges op, men jeg regnede med at det var noget med at jeg skulle have en database hvor at der kom en ny tabel med klubbens navn og så skulle de så kunne rette i de kollonner der var i deres tabel, men...
Det jeg gerne vil have hjælp til er: - Kan i komme på en måde, der er bedre... - hvordan tilføjer man en tabel,rækker i tabeller, og hvordan retter man det det hele...
Afhængig af antallet klubber som du skal håndtere dette for, kan det blive en stor opgave at holde databasen bare nogenlunde optimeret. Men det kan godt lade sig gøre. Jeg har et par forslag:
1. Opret en \"tillægs tabel\" til din eksisterende medlems tabel, med alle de ekstra felter og samme unikke ID. som i den primære tabel. D.v.s. at oprettes eks. medlem, ID 100 med navn, klub og adresse i den normale/primære tabel, opretter du en post med ID 100 i tillægs tabellen med eks. email, tøjstørrelse o.s.v.
På denne måde sikrer du dig, at hele din kode kan tage udgangspunkt i en normal tabel, som så \"bare\" joines til den klub specifikke.
Oprettelse af tabellen foretages med CREATE TABLE, rettelser med ALTER TABLE, slå dem op i hjælpen til din database.
Men jeg vil godt endnu engang advare mod dette, med mindre du eks. på forhånd opretter en liste med tilladte felter, datatyper, længde o.s.v. - forestil dig at skulle håndtere en database hvor x antal mennesker med måske ingen database erfaring, der dynamisk opretter- og retter i tabeller og skal tage stilling til datatyper :-(
2. Du arbejder med en stor tabel med alle tænkelige tilladte felter og en \"config tabel\" der holder styr på hvilke felter den enkelte klub anvender. Denne liste bruger til at opbygge dine SQL statements ud fra, når du skal kommunikere med databasen.
Da dit spørgsmål er meget bredt, kan mit svar også kun blive ret overordnet :-)
det var faktisk en god måde at lave det på... det havde jeg ikke tænkt på... Men kan du ikke vise mig hvordan man joiner de 2 tabeller... jeg er ikke ekspert til SQL querys...
Et par eksempler på joins, jeg foretrækker selv den første
SELECT * FROM Table1 INNER JOIN Table2 ON Table1.RID = Table2.RID WHERE Table1.KlubID = 20
SELECT * FROM Table1, Table2Table8 WHERE Table1.RID = Table2.RID AND Table1.KlubID = 20
Se evt. http://www.eksperten.dk/spm/145528 for en diskussion omkring joins. Spørgsmålet går godt specifikt på MySQL, men diskussion om JOINS er generel og afspejler meget godt nogle forskellige holdninger til JOINS og læsbarhed af SQL.
jeg kom til at tænke på det du sagde, med en tilføjnings tabel... jeg tænkte på at lave tabellen evt med felterne: id(autonumber), klub_id(number), felt_navn(text), men hvor skulle man så lave hvad der står i felterne...???
Skulle det være sådan at der også var et felt der hedder indhold, og hver gang der så blev indtastet et medlem så kom der en række med de sammen klub_id og felt_navn, men med noget andet i indhold...
id(autonumber) klub_id(number) fornavn(text) efternavn(text) + øvrige standard felter
Tillægs tabel
id(nummer) email(text) tøjstørrelse(text) + øvrige ekstra felter
Alle der kun bruger standard oplysinger, vil kun findes i den primære tabe. Medlemmer i klubber der bruger min. ét af ekstra felterne, vil have en post i tillægs tabellen, med samme id som autonummer feltet i den primære.
Jeg ville gå helt udenom at lave tabeller, felter osv. Lav i stedet ét felt i din database, som skal lagre en XML definition af alle de ekstra felter. På frontend kan du lave en formular hvor man indtaster feltnavn, type osv., og i behandlingen af formen bygger du så dynamisk en XML op på baggrund af valgene. Strukturen for XML\'en bestemmer du jo selv, men man kunne forestille sig noget ala: <root> <feltnavn> <type/> <defaultværdi/> <whatever../> </feltnavn </root>
Så slipper du for en masse besvær, og kan endda bruge XSL til at sætte layout på, hvis du ønsker det.
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.