Versio

Formulier normaliseren

Overzicht Reageren

Kasper Isgek

Kasper Isgek

07/11/2007 15:12:00
Quote Anchor link
Ik ben bezig met het normaliseren van data uit een formulieren om honden (pups) uit een nest te registreren, maar loop nog tegen wat problemen aan.

Het formulier staat ter verduidelijking hier (let (nog) niet op layout enzo): link

De gegevens die ik daaruit haal moeten volgens mij zijn:

NESTREGISTRATIE
nest_id
naam_fokker
kennelnaam
adres_fokker
postcode_fokker
plaats_fokker
telefoon_fokker
email_fokker
stamboomnaam_teef
stamboomnummer_teef
HD-resultaat_teef
vader_teef
moeder_teef
stamboomnaam_reu
stamboomnummer_reu
HD-resultaat_reu
vader_reu
moeder_reu
geboortedatum
stamboomnaam_pup
geslacht_pup
kleur
microchipnummer
eigenaar
adres_eigenaar
postcode_eigenaar
plaats_eigenaar
email_eigenaar

De gegevens voor de ouderhonden van een nest zijn voor vader en moeder gelijk, dus die zou je denk ik samen kunnen voegen nadat het geslacht is toegevoegd. Dus:
stamboomnaam_teef
stamboomnummer_teef
HD-resultaat_teef
vader_teef
moeder_teef
stamboomnaam_reu
stamboomnummer_reu
HD-resultaat_reu
vader_reu
moeder_reu

Wordt:
OURDERHOND
ouderhond_id
geslacht
stamboomnaam
stamboomnummer
HD-resultaat
vader
moeder

En om een lang verhaal kort te maken kwam ik tot het volgende model, maar er kloppen nog wat dingen niet. Eerst het model:

NEST
nest_id
fokker_id
geboortedatum

FOKKER
fokker_id
naam
kennelnaam
adres
postcode
plaats
telefoon
email

OUDERHOND
ouderhond_id
geslacht
stamboomnaam
stamboomnummer
HD-resultaat
vader
moeder

PUP
pup_id
geslacht
stamboomnaam
kleur
microchipnummer

EIGENAAR
eigenaar_id
pup_id
adres
postcode
plaats
email

Problemen waar ik nog tegenaan loop:
- Ik weet niet zeker of geboortedatum bij het nest hoort, of in de tabel PUP bijvoorbeeld.

- Hoe koppel ik de ouders aan een pup? Twee aparte velden opnemen in de tabel PUP met bijvoorbeeld 'vader_id' en 'moeder_id' (krijg je ook redundantie)? Of de ouders koppelen aan nest_id?

- Verder moet er nog een koppeling gemaakt worden, zodat je kan achterhalen welke pup uit welk nest komt (uiteraard). Om dat te doen dacht ik zelf aan een veld 'nest_id' in de tabel PUP, maar weet niet zeker of dat klopt?

- Een eigenaar kan meerdere pups afnemen uit één nest, moet dat verder genormaliseerd worden?

- Tevens kan bv. een plaats of postcode ook meerdere keren voorkomen (stel dat de fokker en een stel eigenaren allemaal uit AMSTERDAM komen, dan heb je eigenlijk maar één keer AMSTERDAM nodig). Ook verder normaliseren?

Met andere woorden: kan iemand even meekijken over mijn schouder of dat ik het allemaal nog wel goed doe? _O_
Gewijzigd op 01/01/1970 01:00:00 door Kasper Isgek
 
PHP hulp

PHP hulp

24/05/2012 17:00:51
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Gerben Jacobs

Gerben Jacobs

07/11/2007 15:23:00
Quote Anchor link
Elk nest heeft een vader en moeder, maar elke vader of moeder kan meerdere nesten hebben.

Dus nest krijgt moeder_id en vader_id. Een pup's ouders opzoeken gaat dus via het nest_id

Geboortedatum hoort bij nest (tenzij je het op de minuut correct wil doen, maar dat betwijfel ik) dan hoef je dat ook maar één keer het in te vullen.

Eigenaar moet je pup_id weghalen en een nieuwe tabelb eigenaar_pups (of iets dergelijks) waar eigenaar_id en pup_id samen komen. (Een eigenaar kan namelijk meerdere pups)

Plaatsen normaliseren zou ik niet doen tenzij je een soort hyves achtige site krijgt. Tis iets te veel werk voor een klein (neem ik aan) project.


Over de formuliere, ik zou je niet beperken tot 10 pups. Een teefje kan makkelijk 14 pups krijgen. Jan heeft nog een scriptje gemaakt om een veld toe te voegen met een klik op een link.


Edit: Ook vraag ik me af of het misschien verstandig is om moeder/vader/pup gewoon in 'hond' te zetten en dan een speciaal veld om aan te geven of het volwassen honden zijn of pups. Maar moet je maar ff kijken wat de rest vindt..
Gewijzigd op 01/01/1970 01:00:00 door Gerben Jacobs
 
Robert Deiman

Robert Deiman

07/11/2007 15:31:00
Quote Anchor link
geboortedatum -> In principe bij het nest. Voor elke hond appart is het dezelfde geboortedatum. Er wordt per nest altijd 1 geboortedatum ingegeven.

Ouders koppel je in principe aan een nest, en de pup ook.

In de tabel pup zou je een veld 'nest_id' kunnen doen ja. Het kan ook via een koppeltabel, maar in dit geval komt dit precies op hetzelfde neer.

Voor de eigenaar van een pup/ hond: In principe heb je dan alleen een koppeltabel nodig van eigenaar en pup_id

Plaatsen: Inderdaad verder normaliseren. Er zijn een aantal plaatsen waar (verhoudingsgewijs) meer fokkers zijn dan in anderen. Postcode is eigenlijk hetzelfde verhaal. Om je tabel geöptimaliseerd te houden zou ik die ook wel normaliseren.

Quote:
Edit: Ook vraag ik me af of het misschien verstandig is om moeder/vader/pup gewoon in 'hond' te zetten en dan een speciaal veld om aan te geven of het volwassen honden zijn of pups. Maar moet je maar ff kijken wat de rest vindt..

Waarom dat speciale veld? Of een hond een pup of volwassen hond is is afhankelijk van de geboortedatum. En die heb je al.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 
Gerben Jacobs

Gerben Jacobs

07/11/2007 15:38:00
Quote Anchor link
Ja je hebt gelijk, Robert. Een hond is een hond.

@ Kasper: Is het ook nodig om te zoeken/sorteren? Of is het meer om iets aan de hand van het chipnummer op te zoeken?
Als je namelijk ook per woonplaats een nest wil zoeken of iets dergelijks, dan kan je waarschijnlijk wel beter daar een tabel voor maken ja.
 
Kasper Isgek

Kasper Isgek

07/11/2007 15:40:00
Quote Anchor link
Dank jullie wel voor de reacties!

Had net een helder moment waarin ik me bedacht dat ouders inderdaad aan een nest gekoppeld moeten worden, en dat is nu bevestigd :)

Quote:
Over de formuliere, ik zou je niet beperken tot 10 pups. Een teefje kan makkelijk 14 pups krijgen. Jan heeft nog een scriptje gemaakt om een veld toe te voegen met een klik op een link.
Klopt, maar de kans dat een teefje 14 kleine pups werpt met hetzelfde geslacht is al kleiner. Maar ik was inderdaad op zoek naar een iets eleganter oplossing, zoals een linkje waarbij je een pop-up krijgt waarin je de gegevens van een pup kunt invoeren. Hoe ik dat ga realiseren moet ik nog "even" over nadenken :)
Quote:
Ook vraag ik me af of het misschien verstandig is om moeder/vader/pup gewoon in 'hond' te zetten en dan een speciaal veld om aan te geven of het volwassen honden zijn of pups. Maar moet je maar ff kijken wat de rest vindt..
De gegevens voor een pup of ouderhond zijn wel anders, dus dat wordt wat lastiger denk ik. Het zou wel verstandig kunnen zijn in die zin dat een pup na een jaar of 3 zelf ook een ouderhond kan worden? Goed punt om even over na te denken dus! (Schroom ook niet om mee te denken! :P)

Plaatsen normaliseren ga ik ook nog even over nadenken!

Nogmaals bedankt! :)

EDIT:
Quote:
Waarom dat speciale veld? Of een hond een pup of volwassen hond is is afhankelijk van de geboortedatum. En die heb je al.
Maar jullie raden dus wel allebei aan om geen onderscheid te maken tussen een pup of een vader/moeder? Hoe zou je die gegevens dan moeten aanpassen (die voor ouderhond en pup gedeeltelijk verschillen)? En hoe leg je de relatie tussen een pup en zijn ouder (ik denk door het nest_id, maar wordt wel onoverzichtelijk dan)?

En het is wel een leuke feature om ook te zoeken op plaatsnaam enzo, dus ik denk dat ik die ook wel verder zal normaliseren :)
Gewijzigd op 01/01/1970 01:00:00 door Kasper Isgek
 
Joren de Wit
Beheerder

Joren de Wit

07/11/2007 15:44:00
Quote Anchor link
Het lijkt me dat elke hond dezelfde eigenschappen heeft, ongeacht of het nu een pup of ouderhond is. Vanuit dat oogpunt zou je elke hond dus ook in 1 tabel 'honden' moeten zetten.

De velden die niet overeenkomen tussen je huidige pup en ouderhond tabellen:
- HD-resultaat: heeft een pup dat niet?
- Microchipnummer: heeft een ouder dat niet?

Verder kun je de kolommen 'vader' en 'moeder' vergeten als dat bepaalt of de hond een vader of moeder is. Dat wordt namelijk bepaald door het geslacht van een hond.

De kolom stamboomnaam hoor je ook uit de hondentabel te halen. Een aparte tabel met stambomen aanmaken en vervolgens enkel het id van een stamboom opslaan in de tabel met honden. Deze zal er dan ongeveer als volgt uitzien:

honden
---------
id_hond
id_nest (in welk nest een hond geboren is)
id_stamboom
geslacht
naam (hebben honden niet ook een naam?)
kleur
HD_resultaat (wellicht NULL in geval van een pup)
microchipnummer (wellicht NULL in geval van een ouder)

Quote:
In de tabel pup zou je een veld 'nest_id' kunnen doen ja. Het kan ook via een koppeltabel, maar in dit geval komt dit precies op hetzelfde neer.
Geen koppeltabel nodig hier. Dit is een 1-op-veel relatie aangezien een nest meerdere pups heeft, maar een pup maar tot 1 nest behoort.

Normaliseren van plaatsen zou ik doen als je veel fokkers en eigenaren in dezelfde plaatsen krijgt. En je bijvoorbeeld een overzicht zou willen maken van mensen uit dezelfde plaats. Normaliseren van postcodes zou ik denk ik niet doen. Deze gegevens zijn zo uniek: het zal waarschijnlijk niet vaak voorkomen dat er mensen zijn met precies dezelfde postcode.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Kasper Isgek

Kasper Isgek

07/11/2007 15:52:00
Quote Anchor link
Quote:
Verder kun je de kolommen 'vader' en 'moeder' vergeten als dat bepaalt of de hond een vader of moeder is. Dat wordt namelijk bepaald door het geslacht van een hond.
Die velden zijn niet om het geslacht te bepalen (daar was ook al een veld voor), maar om de ouders (opa en oma van de pup) in op te slaan.

Stamboomnaam verschilt per pup heb ik vernomen, maar is een samentrekking van de kennelnaam en de naam van de pup.

Ik ga nog even het model aanpassen, en zal het daarna hier posten ter revisie :)
 
Joren de Wit
Beheerder

Joren de Wit

07/11/2007 15:58:00
Quote Anchor link
Quote:
Die velden zijn niet om het geslacht te bepalen (daar was ook al een veld voor), maar om de ouders (opa en oma van de pup) in op te slaan.
Als je 1 tabel voor alle honden maakt heb je die nog niet nodig. Als je namelijk het nest_id van een pup hebt weet je ook wie de ouders zijn en afhankelijk van hun nest_id weet je wie de opa's en oma's zijn.

Quote:
Stamboomnaam verschilt per pup heb ik vernomen, maar is een samentrekking van de kennelnaam en de naam van de pup.
Bedoel je hiermee dan de naam van een pup in de stamboom en niet de naam van de stamboom zelf?
 
Gerben Jacobs

Gerben Jacobs

07/11/2007 16:10:00
Quote Anchor link
Volgens mij is de stamboomnaam toch altijd hetzelfde en de (officiele) naam van de hond toch een samentrekking zoals jij zei en daarnaast nog eens de roepnaam van de hond.

Vb. Stamboomnaam is Dodged Blue River en officiele naam van de hond Dodged Blue River Ghosty en roepnaam gewoon Flappie.
 
Kasper Isgek

Kasper Isgek

07/11/2007 16:12:00
Quote Anchor link
Quote:
Als je 1 tabel voor alle honden maakt heb je die nog niet nodig. Als je namelijk het nest_id van een pup hebt weet je ook wie de ouders zijn en afhankelijk van hun nest_id weet je wie de opa's en oma's zijn.

Ok, en als van de opa's en oma's niet bekend is uit welk nest ze komen, voeg je ze gewoon toe als 'hond' en vul je gewoon 'null' in in het nest_id?

Quote:
Bedoel je hiermee dan de naam van een pup in de stamboom en niet de naam van de stamboom zelf?
Stel, kennelnaam is Hundenhaus, en 2 hondjes uit een nest heten Boris en Niek, dan zijn hun stamboomnamen:
Hundenhaus Boris
Hundenhaus Niek

Dus op zich heb je de stamboomnaam niet nodig, aangezien je die kan samentrekken uit kennelnaam en naam van de hond?

Edit:
Dat met die stamboomnaam/kennelnaam etc. ga ik voor de zekerheid nog even navragen...
Gewijzigd op 01/01/1970 01:00:00 door Kasper Isgek
 
Joren de Wit
Beheerder

Joren de Wit

07/11/2007 16:17:00
Quote Anchor link
Quote:
Ok, en als van de opa's en oma's niet bekend is uit welk nest ze komen, voeg je ze gewoon toe als 'hond' en vul je gewoon 'null' in in het nest_id?
Ja, dat zou je kunnen doen. Je moet immers ergens beginnen :)

En zoals je het nu omschrijft sla je de stamboomnaam dus niet op. Dat is een resultaat van de combinatie van 2 andere gegevens die al in je database staan.
 
Kasper Isgek

Kasper Isgek

07/11/2007 16:24:00
Quote Anchor link
Ok, dan heb ik het nu zo:

NEST
nest_id
fokker_id
vader_id
moeder_id
geboortedatum

FOKKER
fokker_id
kennelnaam
naam
adres
postcode
woonplaats_id
telefoon
e-mail

HOND
hond_id
nest_id
naam
geslacht
kleur
HD-resultaat
microchip

EIGENAAR
eigenaar_id
adres
postcode
woonplaats_id
e-mail

PUP_EIGENAAR
pup_eigenaar_id
pup_id
eigenaar_id

WOONPLAATS
woonplaats_id
plaatsnaam

Ziet dat er al beter uit?

Dat een hond geen naam heeft zou overigens kunnen liggen aan het feit dat niet de fokker, maar de eigenaar een naam geeft aan de hond. Dus op het moment van invoeren hoeft de naam nog niet bekend te zijn...
Gewijzigd op 01/01/1970 01:00:00 door Kasper Isgek
 
Gerben Jacobs

Gerben Jacobs

07/11/2007 16:49:00
Quote Anchor link
Je mist alleen de stamboom tabel nog.
 
Kasper Isgek

Kasper Isgek

07/11/2007 17:06:00
Quote Anchor link
Gerben Jacobs schreef op 07.11.2007 16:49:
Je mist alleen de stamboom tabel nog.
Even nagevraagd, en ik denk niet dat dat nodig is. Stamboom wordt zoals ik al zei samengesteld uit kennelnaam en de naam van de pup. Er kunnen echter ook particulieren zijn die eenmalig willen fokken. In dat geval is er geen sprake van een kennelnaam, maar wordt de naam van de pup de stamboomnaam. Dus stamboom kan je in principe achterhalen uit gegevens die in de database staan.

Ook stamboomnummer kan weg, wordt ook samengesteld uit gegevens die in de database komen.
 
Frank -

Frank -

07/11/2007 17:35:00
Quote Anchor link
Beetje offtopic: De titel 'Formulier normaliseren' slaat nergens op, een formulier valt niet te normaliseren. Dat zal 99 van de 100x namelijk slechts een deel van de data die je wilt gaan opslaan, bevatten. En om goed te normaliseren, ga je eerst álle data uit je complete systeem op een rijtje zetten. Dat heeft dus niks met een formulier te maken.

Dit zou ook suggereren dat een wijziging in je formulier een wijziging in je database inhoud. En dat is gelukkig niet het geval!
 
Kasper Isgek

Kasper Isgek

07/11/2007 17:47:00
Quote Anchor link
Ik begrijp dat de keuze voor de titel wat ongelukkig is Frank. Ik vond alleen 'Normaliseren' wat te breed, dus vandaar dat ik het maar 'Formulier normaliseren' had genoemd om een beetje aan te geven waarom het ging. Had beter een slash tussen gekund of zo. Mijn fout :)

Kan je wel leven met het model zoals ik dat hier 4 posts boven heb geplaatst? :)

Edit:
Nu ik er nog eens naar kijk, de tabellen 'fokker' en 'eigenaar' zou je ook samen kunnen voegen, en dan met een veld wat aangeeft of die persoon 'fokker' is of niet?

En dan hoort 'kennelnaam' (nu in de tabel 'fokker') wellicht onder 'nest'?
Gewijzigd op 01/01/1970 01:00:00 door Kasper Isgek
 



Overzicht Reageren