Avatar billede psycosoft-funware Nybegynder
21. april 2009 - 22:55 Der er 16 kommentarer og
3 løsninger

fitnesscenter booking system - database spm

Hej eksperter :)

Jeg sidder her og er i gang med at lave et booking system til et lille fitness center. (backend er joomla cms)

Der er i midlertid et spørgsmål jeg ikke kan finde svar på.

I min database har jeg en tabel hvor jeg gemmer alle hold; den ser sådan ud:
id | holdtype | instruktør | dato | tidspunkt | maxtilmeldte |

her kommer så mit spørgsmål; hvilken måde vil i anbefale at holde styr på hvilke brugere der er meldt til en givent hold?

det skal lige siges at jeg ikke har arbejdet særligt meget med databaser, deraf mit spm.

på forhånd tak :)

./psycosoft-funware :)
Avatar billede lakridserne Nybegynder
22. april 2009 - 09:34 #1
Lav en ekstra tabel: tilmeldinger:

id | bruger_id | hold_id

Jeg vil sætte en SQL-sætning ind (med JOIN) senere.

/lakridserne
Avatar billede lakridserne Nybegynder
22. april 2009 - 09:53 #2
Brug det på denne måde:

SELECT tabel.kolonne, tabel2.kolonne FROM tabel JOIN tabel2 ON tabel.hold_id=tabel2.hold_id ORDER BY tabel.kolonne

/lakridserne

PS: Bare skriv hvis jeg skriver så du ikke forstår det.
Avatar billede psycosoft-funware Nybegynder
22. april 2009 - 11:29 #3
Det skal lige sige at det er en MySQL base med MyIsam tabeller;

jeg spurgte en kammerat der har arbejdet noget mere med baser end jeg har, han snakkede om at jeg kunne bruge foreign keys. jeg undersøgte dette og kom frem til at MyIsam ikke understøtter dette men der i mod InnoDB.

>>lakridserne: jeg har lidt svært ved at gennemskue din anden post.
er der nogen fordele ved at bruge join frem for foreign keys?

./psycosoft-funware :)
Avatar billede lakridserne Nybegynder
22. april 2009 - 12:09 #4
Nej nu var det bare den løsning jeg ville vælge.
Vidste faktisk ikke der var noget der hedder forgein keys - men undersøgte det lige...

/lakridserne
Avatar billede dkfire Nybegynder
22. april 2009 - 12:20 #5
Join og forgein keys er to forskellige ting, de har intet med hinanden at gøre.

forgein keys er til opsætning af din kolonne i tabel, hvor join bliver brugt i en sql sætning.
Avatar billede lakridserne Nybegynder
22. april 2009 - 19:30 #6
Tak dkfire - der kan man se hvor lidt man egentlig ved...

/lakridserne
Avatar billede psycosoft-funware Nybegynder
23. april 2009 - 02:07 #7
hvis jeg har 2 MyISAM tabeller, en med alle mine brugere og en der holder på mine hold.
hvordan binder jeg så smartest user_id og event_id sammen i en InnoDB tabel med foreign keys rent php-kode messigt?

jeg læste på hvordan man sætter foreign keys op igennem phpMyAdmin, men jeg kan ikke helt gennemskue hvordan jeg så får det til at fungere rent praktisk :)

./psycosoft-funware :)
Avatar billede lakridserne Nybegynder
23. april 2009 - 09:39 #8
så skal du bruge join, som dkfire skrev om

/lakridserne
Avatar billede psycosoft-funware Nybegynder
29. april 2009 - 18:53 #9
nu blev jeg da en del klogere :)

kan i begge ikke ligge et svar så vi kan få uddelt nogle point?

./psycosoft-funware :)
Avatar billede lakridserne Nybegynder
29. april 2009 - 20:28 #10
Svar
Avatar billede dkfire Nybegynder
29. april 2009 - 20:39 #11
Svar :-)
Avatar billede arne_v Ekspert
29. april 2009 - 20:51 #12
Og hvis jeg maa have lov til at boeje det i neon.

JOIN bruges i SELECT til at flette to tabeller sammen.

FOREIGN KEY bruges i CREATE TABLE til at definere en sammehaeng mellem tabeller. En FOREIGN KEY vil normalt betyde at de 2 tabeller skal joines i forskelleige queries.

Det primaere formaal med FOREIGN KEY er at sikre REFERENTIEL INTEGRITET d.v.s. at hvis man peger paa noget saa skal det man peger paa eksistere.

Det klassiske eksempel er nok postnumre og by.

adresse
-------
id
vej
nummer
postnr

postdistrikt
------------
postnr
by

Her vil man jo typisk lave en JOIN som:

SELECT * FROM adresse JOIN postdistrikt ON adresse.postnr=postdistrikt.postnr

Men lad os kigge paa foelgende INSERT saetninger:

INSERT INTO postdistrikt VALUES(8000, 'Aarhus C');
INSERT INTO postdistrikt VALUES(7100, 'Vejle');
INSERT INTO postdistrikt VALUES(6000, 'Kolding');
INSERT INTO adresse VALUES(1, 'Avej', '1. th', 8000);
INSERT INTO adresse VALUES(2, 'Bvej', '2. tvh', 6000);
INSERT INTO adresse VALUES(3, 'Cvej', '3. mf', 80000);

Uden brug af FOREIGN KEYS saa virker de INSERT fint, men adresse #3 kommer ikke med i SELECT output fordi postnummer er skrevet forkert.

Hvis man har defineret en FOREIGN KEY fra adresse.postnr til postdistrikt.postnr, saa vil den forkerte INSERT give en fejl.

Og det er altid godt at forhindre forkerte data i at komme ind i ens database.

Og som naevnt i MySQL er det kun InnoDB tabeller som har support for FOREIGN KEYS.
Avatar billede arne_v Ekspert
29. april 2009 - 20:51 #13
Og hvis jeg maa have lov til at boeje det i neon.

JOIN bruges i SELECT til at flette to tabeller sammen.

FOREIGN KEY bruges i CREATE TABLE til at definere en sammehaeng mellem tabeller. En FOREIGN KEY vil normalt betyde at de 2 tabeller skal joines i forskelleige queries.

Det primaere formaal med FOREIGN KEY er at sikre REFERENTIEL INTEGRITET d.v.s. at hvis man peger paa noget saa skal det man peger paa eksistere.

Det klassiske eksempel er nok postnumre og by.

adresse
-------
id
vej
nummer
postnr

postdistrikt
------------
postnr
by

Her vil man jo typisk lave en JOIN som:

SELECT * FROM adresse JOIN postdistrikt ON adresse.postnr=postdistrikt.postnr

Men lad os kigge paa foelgende INSERT saetninger:

INSERT INTO postdistrikt VALUES(8000, 'Aarhus C');
INSERT INTO postdistrikt VALUES(7100, 'Vejle');
INSERT INTO postdistrikt VALUES(6000, 'Kolding');
INSERT INTO adresse VALUES(1, 'Avej', '1. th', 8000);
INSERT INTO adresse VALUES(2, 'Bvej', '2. tvh', 6000);
INSERT INTO adresse VALUES(3, 'Cvej', '3. mf', 80000);

Uden brug af FOREIGN KEYS saa virker de INSERT fint, men adresse #3 kommer ikke med i SELECT output fordi postnummer er skrevet forkert.

Hvis man har defineret en FOREIGN KEY fra adresse.postnr til postdistrikt.postnr, saa vil den forkerte INSERT give en fejl.

Og det er altid godt at forhindre forkerte data i at komme ind i ens database.

Og som naevnt i MySQL er det kun InnoDB tabeller som har support for FOREIGN KEYS.
Avatar billede arne_v Ekspert
29. april 2009 - 20:54 #14
Undskyld dobbeltpost.
Avatar billede psycosoft-funware Nybegynder
29. april 2009 - 23:24 #15
>>arne_v: fantastisk det satte lige flaget på kransekagen :D
det er faktisk det jeg havde lidt svært ved at forstå ved de tutorials jeg havde fat i, men nu faldt det hele på plads. takker :)
du skal være velkommen til at ligge et svar, da dette også burde premieres med lidt point :)


>>dkfire: du postede kun en kommentar, så det bliver lidt svært at uddele point til denne :)
Avatar billede arne_v Ekspert
30. april 2009 - 04:00 #16
svar
Avatar billede psycosoft-funware Nybegynder
02. maj 2009 - 12:07 #17
>>dkfire: kan du ikke lægge et svar så vi kan få lukket dette spm? :)

./psycosoft-funware :)
Avatar billede arne_v Ekspert
05. juli 2009 - 19:52 #18
dkfire ?
Avatar billede dkfire Nybegynder
05. juli 2009 - 21:45 #19
Jo det kan jeg vel godt.
Rent tilfælde jeg kiggede forbi.
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

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