login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Database opbouw

Offline Dierre - 10/04/2009 17:52
Avatar van DierreMySQL interesse hallo,

in mijn site heb ik nood aan een viertal tabellen binnen mijn database om de nodige gegevens te kunnen bijhouden.
Ik heb niet veel (lees: heel weinig) ervaring met MySql en het opbouwen van databases. Daarom zou ik jullie hier eens willen vragen wat je van de opbouw van de tabellen vind. Het kan vast en zeker nog wel verbeterd worden... Graag jullie input

Dit zijn de tabellen:

tabel imagelink:
imageLinkID (int) pk
imageName (varchar)
imagePath (varchar)

tabel merries:
merriesID (int) pk
naam (varchar)
opmerking (varchar)
stamboomID (fk tabel stamboom)
imageLinkID (fk tabel imagelink)

tabel stamboom:
stamboomID (int) pk
vader (varchar)
moeder (varchar)
vaderVader (varchar)
vaderMoeder (varchar)
moederVader (varchar)
moederMoeder (varchar)
vaderVaderVader (varchar)
vaderVaderMoeder (varchar)
vaderMoederVader (varchar)
vaderMoederMoeder (varchar)
moederVaderVader (varchar)
moederVaderMoeder (varchar)
moederMoederVader (varchar)
moederMoederMoeder (varchar)

De gegevens die ik in de tabellen zal plaatsen komen vanuit een invul formulier op de admin pagina. Wat ik me dan nog afvraag is of ik best objecten maak om op te slaan in de database tabellen of gewoon te "tekst" uit het formulier rechtstreeks in de tabellen stockeer...

Misschien lijken dit voor sommigen onder jullie simpele vragen, maar zoals ik al zei, ik heb heel weinig ervaring met dit soort dingen.

Alvast bedankt,
Dieter

9 antwoorden

Gesponsorde links
Offline flyingdragon - 10/04/2009 20:18 (laatste wijziging 10/04/2009 20:18)
Avatar van flyingdragon PHP beginner
Dierre schreef:
tabel stamboom:
stamboomID (int) pk
vader (varchar)
moeder (varchar)
vaderVader (varchar)
vaderMoeder (varchar)
moederVader (varchar)
moederMoeder (varchar)
vaderVaderVader (varchar)
vaderVaderMoeder (varchar)
vaderMoederVader (varchar)
vaderMoederMoeder (varchar)
moederVaderVader (varchar)
moederVaderMoeder (varchar)
moederMoederVader (varchar)
moederMoederMoeder (varchar)


Dude, wtf? 
als je het nu gewoon eens zo doet:

  1. tabel merries:
  2. merriesID (int) pk
  3. naam (varchar)
  4. opmerking (varchar)
  5. imageLinkID (fk tabel imagelink)
  6. vaderMerriesID(int)
  7. moederMerriesID(int)


Want met moedermoedermoedermoeder wordt je db niet echt modulair eh? ,
Als je bovenstaande tabbeltje gebruikt kan je doen 0 wanneer er geen vader/moeder is, en wanneer er wel een is, doe je het id daarvan.
Offline Dierre - 10/04/2009 20:23
Avatar van Dierre MySQL interesse ja, inderdaad, zo had ik het nog niet bekeken.

De stamboom gaat 3 generaties ver en wordt door de gebruiker zelf in gevuld in een reeks tekstvelden. Hoe kan ik dan alles correct in de tabellen krijgen.

Want ik veronderstel dat volgens jou oplossing ik twee extra tabellen zal nodig hebben (vaderMerries en moederMerries)
Offline flyingdragon - 10/04/2009 20:32 (laatste wijziging 10/04/2009 20:46)
Avatar van flyingdragon PHP beginner
Citaat:
Want ik veronderstel dat volgens jou oplossing ik twee extra tabellen zal nodig hebben (vaderMerries en moederMerries)


Nee, gewoon een extra veldje "mannelijk" (of geslacht),
en dan bijv een `1` voor mannelijk, `2` voor vrouwelijk.

het invoeren zou ik persoonlijk doen met javascript ,
of een reeks formulieren achter elkaar,

waarvan de laatste optie het makkelijkst is.

Je zou dan bijv: formulier waar je een paard invoerd.
(alleen het paard zelf, geen info over de ouders)
en daarna, kan je paard selecteren,
en dan kiezen voor: kind toevoegen, of ouder toevoegen
waarnaar je verwijsd naar het zelfde formulier als daarvoor, alleen dan een extra ID meegeeft van de `ouder`,
en aan de hand van het geslacht bepaal je dan weer of het een vader of moeder is 

Je site opbouw zou dan dus zijn:

1. Selecteer paard (je overzicht van alle paarden zeg maar)
***3. Maak paard aan met optie 1 als ouder
(geef id & geslacht mee van optie 1)
***4. Maak paard aan met optie 1 als kind
(verander na invoer, het ouder id van het geselecteerde paard van optie 1 [aan de hand van dat geslacht weer vader/moeder aanpassen)
2. Maak paard aan (zonder ouders)

Waarvan optie 1 & 2 direct beschikbaar zijn , en optie 3 & 4 alleen nadat er een paard is geselecteerd (hier kan je dan ook de stamboom bijv weergeven)


Tabel:
  1. tabel `paard`:
  2. paardId (int)
  3. naam (varchar)
  4. opmerkingen (text)
  5. imageLinkId (fk tabel imagelink)
  6. isHengst (bool) [DUs true, als het een piemel heb:), anders false)
  7. vaderPaardId (int) (fk `paardId`)
  8. moederPaardId (int) (fk `paardId`)

Deze vervangt dan dus zowel `merries` als `stamboom` 


Deze structuur is veel flexibeler wat je nu hebt, want hiermee kan je in princiepe onbeperkt doorgaan kwa generaties 
Offline Dierre - 10/04/2009 20:46
Avatar van Dierre MySQL interesse mijn "opdrachtgever" verwacht eigenlijk een vast rooster die moet ingevuld worden.

Dat rooster bevat ook een vaste structuur, zoals hieronder snel even "uitgetekend". Op de site moet nog een niveau dieper gegaan worden. Het enige wat de gebruiker wenst in te vullen is de naam van het paard. De structuur ligt vast zoals hier onder. De bovenste "cel" is altijd de vader, de onderste "cel" altijd de moeder.

--------------------------------
vader v vader
vader
moeder v vader
merrie
vader v moeder
moeder
moeder v moeder
--------------------------------

nogmaals ik ben een beginner hoor daarom stel ik misschien "domme" vragen  
Offline flyingdragon - 10/04/2009 20:59 (laatste wijziging 10/04/2009 21:00)
Avatar van flyingdragon PHP beginner schop je opdrachtgever en zeg hem een fatsoenlijke structuur te nemen? 

maar met bovenstaande veldjes kan het imho ook, (tabel die ik voorstelde)

simpel gezegd:
voeg eerst toe in de database: `vader v vader`
hierin is:
isHengst = true
vaderPaardId = 0
moederPaardId = 0

Nu run je het command `select_last_id`
hiermee haal je de primary key op, van het laatst ingevoerde item 
deze sla je even in een php var op": $vaderVanVaderId
nu stop je op dezelfde wijze `moeder v vader` erin,
alleen dan is `isHengst` uiteraard false 
en deze stop je in $moederVanVaderId

Hierna hetzelfde, alleen dan voor de ouders van de moeder.


Vervolgens
voer je de `vader` in,
en doe je:
vaderPaardId = $vaderVanVaderId
moederPaardId = $moederVanVaderId
isHengst = true

en hetzelfde voor de moeder , alleen dan met de goede ouder id's

merrie op deze zelfde manier toevoegen
Offline Dierre - 10/04/2009 21:05
Avatar van Dierre MySQL interesse pfieuw, ziet er al vrij complex uit voor mij...
Zal dit wel eens proberen te implementeren... maar of het succesvol zal aflopen is maar weer de vraag.

Ik ben er echter wel 100% van overtuigd dat dit een betere en flexibelere oplossing is dan deze die ik tot nu toe in mijn hoofd had...

Dus als ik het tot nu toe allemaal goed begrijp:
3 tabellen aanmaken (paard, vader en moeder tabellen). Dan starten met het invullen van de verste graad in de stamboom in de juiste tabellen en zo opschuiven tot dat de merrie in de database zit...

Hopelijk ben ik juist  
Offline flyingdragon - 10/04/2009 21:09
Avatar van flyingdragon PHP beginner Nee, niet juist ,

Je hebt maar 1 tabel nodig ,
het overige heb je wel goed,
je begint op de buitenlaag (hiervan heb je geen ouderId's nodig, dus deze zijn 0.
vervolgens heb je wel de beschikking over deze id's, dus kan je naar binnen gaan werken.
Offline Dierre - 10/04/2009 21:16
Avatar van Dierre MySQL interesse Is dat nog een goede manier om het in 1 tabel te doen als je meerdere stambomen wenst op te maken?
Offline Joost - 10/04/2009 21:37
Avatar van Joost PHP expert Jawel, dan kan je nog een extra kolom toevoegen, Stamboom ID of iets dergelijks..

Een (simpel) voorbeeldje van wat jij nodig hebt staat hier: http://www.site...s#dbarrays
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.19s