Avatar billede thb Nybegynder
14. december 2001 - 00:22 Der 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...

Håber at i forstod.

Thomas
Avatar billede tmceu Praktikant
14. december 2001 - 08:01 #1
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 :-)
Avatar billede thb Nybegynder
14. december 2001 - 09:20 #2
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...

Thomas
Avatar billede tmceu Praktikant
14. december 2001 - 10:33 #3
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.
Avatar billede thb Nybegynder
14. december 2001 - 14:02 #4
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...

Eller havde du tænkt på noget andet...

Thomas
Avatar billede tmceu Praktikant
15. december 2001 - 21:14 #5
Jeg kunne forestille mig flg. tabelstruktur

Primær:

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.
Avatar billede thb Nybegynder
16. december 2001 - 21:03 #6
HVis du ville have de felter hvordan skal jeg så udfylde information til tillægsfelterne...???

Thomas
Avatar billede fey.dk Nybegynder
16. december 2001 - 22:06 #7
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.
Avatar billede thb Nybegynder
19. december 2001 - 00:42 #8
kender ikke en skid til XML, så jeg tror ikke at det bliver min løsning, men det lyder som moget sjovt noget... :)

Thomas
Avatar billede fey.dk Nybegynder
19. december 2001 - 09:34 #9
Meget muligt, men det er da en oplagt mulighed for at komme i gang med det så. Du vil blive glad for det i længden.
Avatar billede thb Nybegynder
19. december 2001 - 11:18 #10
Har du nogle link til nogle hjælpe sider.. nogle sider der kan sætte mig igang..

Thomas
Avatar billede tmceu Praktikant
19. december 2001 - 17:57 #11
Jeg synes http://www.w3schools.com er et meget godt sted at starte (også på XML)
Avatar billede thb Nybegynder
20. december 2001 - 01:18 #12
Lukker her... tak for hjælpen...
Avatar billede tmceu Praktikant
20. december 2001 - 01:54 #13
Det var så lidt :-)
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
Kategori
Kurser inden for grundlæggende programmering

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