database opzetten

Status
Niet open voor verdere reacties.

willem008

Gebruiker
Lid geworden
28 sep 2007
Berichten
792
Goede dag.

Heb inmiddel heel wat gelezen over mysql maar het opzetten van database valt nog niet hellemaal mee

Ik wil even om te proberen een hele simpele database maken over paarden race's

er moet de plaatsen waar ze rijden in staan ,de paarden en voorlopig alleen winst of verlies.

Ik heb nu het volgende gemaakt.

een tabel paarden met daarin
paard_id naam leeftijd enz

een tabel plaatsen met daarin
plaats_id naam



en ik heb twee koppel tabelen gemaakt
tabel winst

met daarin
winst_id paard_id plaats_id


en een tabel verlies
met daarin
verlies_id paard_id plaats_id

Mij vraag is alleen begin ik zo goed of pak ik het nu al verkeert aan.
 
Als je een tabel toevoegt met de naam Race en de velden Race_Id, Nummer, Timestamp die kan je verderop weer gebruiken.
Ik zou die winst en verlies tabel samenvoegen in 1 tabel met de naam Stand.
Met de velden Id, Paard_Id, Plaats, Race_Id
Dan kan je per race zien wie er gewonnen heeft plaats=1 en wie er niet gewonnen heeft plaats<>1

Waarom gebruik je voor de plaats een Id?

HTH:D
 
ok bedankt.

Ik ben nog volop aan het leren.
ik wil gewoon even iets heel simpels op zetten om even de basis onder de knie te krijgen.

Maar om de juiste tabelen te maken valt toch nog niet meer.

Ik zoek eigelijk een goede site waar het opzetten van een database en het maken van de struktuur goed uitgelegen wordt.
 
Goede dag

even een klein vraagje zit een beetje vast ik moet even het principe van een koppel tabel door krijgen


Ik heb nu even drie tabelen gemaakt

de eerste paarden
paarden_id naam leeftijd enz
1 toredos
2
dan een tabel plaatsen
plaats_id naam
1 warmond
2


en een koppel tabel
paarden_per_plaatsen
p_p_p paard_id plaats_id
1 toredos warmond
2

Ik wil namelijk met een query alle paarden die in warmond hebben gelopen zien
met de query hieronder wordt nu de paarden_per_paarden tabel getoont

maar ik heb snap nog niet hoe ik nu het gemakkelijkst alle paarden die in warmond hebben gelopen koppel met de plaats

SELECT *
FROM `paarden_per_plaatsen`
WHERE `paard_id` = 'toredos' and `plaats_id` = 'warmond' ;
 
Die koppeling leg je door een record in de tabel paarden_en_plaatsen aan te maken. Door de velden paard_id en plaats_id in die tabel zie je direct welke paarden in een bepaalde plaats te vinden is.

De naamgeving van je tabellen moet je natuurlijk zelf weten maar over het algemeen is de naamgeving in het enkelvoud. Dus Paard en Plaats en de koppeltabel PaardPlaats.

In jouw tabellen ziet de query er dan als volgt uit:

Code:
SELECT *
FROM paarden_per_plaatsen
WHERE plaats_id = 'warmond' ;

Kijk voor het normalliseren van je database in Wikipedia. Je hoeft niet verder te normaliseren dan de BCNF. Dat is de normaalvorm tussen de derde en de vierde.

Enjoy!
 
ok dit is mij duidelijk alleen het volgende

ik heb nu in de koppel tabel

p-p-p paard_id plaats_id
1 toredos warmond


maar als ik nu alle paarden die in warmond hebben gelopen wil koppelen met warmond

moet ik dat gewoon doen bijv

2 boko warmond

3 tarzan warmond

en moet ik dan voor bijv amsterdam weer een nieuwe koppel tabel maken

p-p-p paard_id plaats_id

1 tommy amsterdam


of is dit allemaal te omslachtig
 
Je hoeft geen nieuwe tabel aan te maken. Je kan gewoon Amsterdam toevoegen in je tabel 'plaatsen' en dan in de koppeltabel 'paarden_per_plaatsen' deze toevoegen:

4 Tommy Amsterdam

Zodat je zoiets krijgt:

p-p-p paard_id plaats_id
1 toredos warmond
2 boko warmond
3 tarzan warmond
4 tommy amsterdam
 
Koppeltabellen werken normaalgesproken met id's, niet met teksten.
 
Ok
Ik heb nu in paarden
paard_id naam
1 yatho

in plaatsen
plaats_id plaats
1 assendellf

dan heb ik een koppeltabel met daarin

p-p-p paard_id plaats_id
1 1 1

als ik nu de volgende query uitvoer

SELECT *
FROM `paarden_per_plaatsen`
WHERE `paard_id` = '1' and `plaats_id` = '1' ;

dan krijg ik
p-p-p paard_id plaats_id
1 1 1

te zien.
maar hoe krijg ik het nu voor mekaar om
in plaats van de cijfers het paard naam en de plaats naam op te vragen
 
Laatst bewerkt:
Ok
Ik heb nu in paarden
paard_id naam
1 yatho

in plaatsen
plaats_id plaats
1 assendellf

dan heb ik een koppeltabel met daarin

p-p-p paard_id plaats_id
1 1 1

als ik nu de volgende query uitvoer

SELECT *
FROM `paarden_per_plaatsen`
WHERE `paard_id` = '1' and `plaats_id` = '1' ;

dan krijg ik
p-p-p paard_id plaats_id
1 1 1

te zien.
maar hoe krijg ik het nu voor mekaar om
in plaats van de cijfers het paard naam en de plaats naam op te vragen
Om te beginnen moet je die single quotes om je veldnamen weglaten. Het is erg verwarrend. Het lijkt alsof je twee teksten met elkaar vergelijkt. Je zet er alleen [ en ] omheen als je spaties in je veldnamen hebt of als het een gereserveerd woord is zoals [group] of [from]. Mintekens moet je al helemaal niet gebruiken.
Want in SQL is p-p-p = -p namelijk.

In de access QBE (Query By Example) kan je eenvoudig een link leggen tussen de tabel paard_en_plaats en paard. Ze hebben immers paard_id gemeenschappelijk. Je query wordt dan ongeveer:
Code:
select * from paard_en_plaats inner join paard on paard.paard_id = paard_en_plaats.paard_id

Enjoy!
 
ok ik begin het wat te begrijpen ,ik ga rustig verder lezen.
 
Laatst bewerkt:
Toch kom ik er nog niet uit,

als in nu een koppel tabel heb paard_pikeur met daarin

paard_pikeur_id paard_id pikeur_id

1 2 6


dus ik koppel paard 2 met pikeur 6

nu wil ik het paard tonen met de pikeur erby

als ik
select * paard_pikeur where id='1'
doe dan krijg ik weer de tabel met de nummers erin maar ik wil dat de namen getoont worden

zit al een tijdje te zoeken op het net maar vindt het niet


graag een kleine hint zodat ik weer door kan
 
Ok heb hier nu veel over gelezen,

maar even een klein vraagje.

Ik heb nu een bestandje waar ik een query kan invoeren en dan geeft hij het resultaat terug.
kan ik daarmeer ook bijvoorbeeld een query met inner join uitvoeren,
of moet ik dat echt een php pagina maken met daarin de query.

Ik wil nammelijk eerst wat tabelen maken en koppel tabelen en daar wat mee spelen met door de hand ingevoerde query's
en dan me gaan verdiepen in php.
 
Als je single quotes gebruikt dan kunnen die worden geinterpreteerd als een tekst.
In je where clause krijg je dan

strSql = "Select * From Tabel1 Where 'Aap' = '" & me.txtVeldwaarde & "'"

Als me.txtVeldwaarde = 'Noot' dan krijg je:

strSql = "Select * From Tabel1 Where 'Aap' = 'Noot'"

Aap is een veld die de waarde 'Noot' kan hebben. tekstueel krijg je geen records

strSql = "Select * From Tabel1 Where Aap = '" & me.txtVeldwaarde & "'"

strSql = "Select * From Tabel1 Where Aap = 'Noot'"

Kan weer wel en is onmiskenbaar een veld in de geselecteerde tabel.

Alles bij elkaar best verwarrend als je 'Aap' als veldnaam gebruikt en 'Noot' als waarde. Het is ook niet per se noodzakelijk dat je de veldnaam als eerste neerzet. Dat kan ook andersom. Het resultaat blijft hetzelfde.

Als je de database bij een klant neerzet moet je voorkomen dat je over verwarring twist.

Share and Enjoy!
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan