Normalisatie Vuurwerkwinkel "Achtung"
Beste PHPhulp.nl leden allereerst wil ik jullie een heel gelukkig 2012 wensen.
OT:
Van school heb ik de opdracht gekregen om een database te maken voor een fictieve vuurwerkwinkel zodat het bedrijf gemakkelijk en snel de bestellijst van de klanten
in de computer kan invoeren, en nu ben ik begonnen met het normaliseren van het geheel wat ik naar mijn mening niet echt onder de knie heb, mijn vraag is dan ook of jullie mijn normalisatie willen beoordelen en op eventuele fouten willen wijzen
die hier onder is weergegeven
0NV
Klantnummer (Artikelnummer,Pagina, Artikelomschrijving, Aantal, Prijs.pst, Totaal prijs per artikel,) subtotaal), Naam, Adres, Postcode, Woonplaats, Telefoon, Email, Afhaaldatum, Tijdstip
1NV
Klantnummer , Subtotaal, Naam, Adres, Postcode, Woonplaats, Telefoon, Email, Afhaaldatum, Tijdstip
Klantnummer, Aantal, Prijs.pst, Totaal prijs per artikel, Artikelnummer, Pagina, Artikelomschrijving
2NV
Klantnummer , Subtotaal, Naam, Adres, Postcode, Woonplaats, Telefoon, Email, Afhaaldatum, Tijdstip
Klantnummer ,Aantal, Prijs.pst, Totaal prijs per artikel
Artikelnummer, Pagina, Artikelomschrijving
3NV
Klantnummer , Subtotaal, Afhaaldatum, Tijdstip
Klantnummer , Aantal, Prijs.pst, Totaal prijs per artikel
Artikelnummer, Pagina, Artikelomschrijving
Klant, Naam, Adres, Postcode, Woonplaats, Telefoon, Email
Nu moet er ook het bijkomend ERD scheme worden gemaakt waar ik totaal niets van begrijp en graag uitleg van krijg
Ik wil jullie alvast hartelijk bedanken voor jullie hulp.
Met vriendelijke groet,
Sven Hoogaard
EDIT: Spellingsfout
OT:
Van school heb ik de opdracht gekregen om een database te maken voor een fictieve vuurwerkwinkel zodat het bedrijf gemakkelijk en snel de bestellijst van de klanten
in de computer kan invoeren, en nu ben ik begonnen met het normaliseren van het geheel wat ik naar mijn mening niet echt onder de knie heb, mijn vraag is dan ook of jullie mijn normalisatie willen beoordelen en op eventuele fouten willen wijzen
die hier onder is weergegeven
0NV
Klantnummer (Artikelnummer,Pagina, Artikelomschrijving, Aantal, Prijs.pst, Totaal prijs per artikel,) subtotaal), Naam, Adres, Postcode, Woonplaats, Telefoon, Email, Afhaaldatum, Tijdstip
1NV
Klantnummer , Subtotaal, Naam, Adres, Postcode, Woonplaats, Telefoon, Email, Afhaaldatum, Tijdstip
Klantnummer, Aantal, Prijs.pst, Totaal prijs per artikel, Artikelnummer, Pagina, Artikelomschrijving
2NV
Klantnummer , Subtotaal, Naam, Adres, Postcode, Woonplaats, Telefoon, Email, Afhaaldatum, Tijdstip
Klantnummer ,Aantal, Prijs.pst, Totaal prijs per artikel
Artikelnummer, Pagina, Artikelomschrijving
3NV
Klantnummer , Subtotaal, Afhaaldatum, Tijdstip
Klantnummer , Aantal, Prijs.pst, Totaal prijs per artikel
Artikelnummer, Pagina, Artikelomschrijving
Klant, Naam, Adres, Postcode, Woonplaats, Telefoon, Email
Nu moet er ook het bijkomend ERD scheme worden gemaakt waar ik totaal niets van begrijp en graag uitleg van krijg
Ik wil jullie alvast hartelijk bedanken voor jullie hulp.
Met vriendelijke groet,
Sven Hoogaard
EDIT: Spellingsfout
Gewijzigd op 03/01/2012 17:24:04 door Sven Hoogaard
Gesponsorde koppelingen:
Je bent goed op weg, alleen is zo'n winkel systeem altijd iets lastiger om te normaliseren. Het probleem zit hem in het feit dat zodra een bestelling geplaatst is, de prijzen van de artikelen in zo'n bestelling en dus het totaalbedrag niet meer mogen wijzigen. Echter is de prijs een eigenschap van een artikel en zou volgens de normalisatie regels enkel in de tabel met artikelen opgeslagen mogen worden. Dit is een klassiek voorbeeld waar je ook weer moet gaan denormaliseren.
Een basis structuur zou iets als deze kunnen zijn:
klanten
-------
id PK
voornaam
tusenvoegsel
achternaam
etc ...
artikelen
--------
id PK
naam
omschrijving
prijs
bestellingen
-----------
id PK
klant_id FK
afhaaldatum (type: DATETIME, dus geen apart veld voor het tijdstip!)
bestelling_artikel
---------------
id PK
bestelling_id FK
artikel_id FK
aantal
prijs_per_artikel
Kijk eens voor jezelf of je deze opzet begrijpt en probeer tevens te achterhalen hoe ik hier aan kom. Ga dan verder werken om deze opzet aan te passen aan jouw situatie.
Succes!
Toevoeging op 03/01/2012 17:44:47:
ps. Het denormaliseren waar ik het over had, zie je terug in het veld bestelling_artikel.prijs_per_artikel. Normaal gesproken zou je gewoon artikelen.prijs gebruiken voor het weergeven van de prijs, maar aangezien deze variabel kan zijn en je dit voor een bestelling juist niet kunt hebben, sla je die prijs nog een keer op. In de bestelling_artikel tabel is de prijs dus voorgoed vastgelegd en zal daar nooit meer veranderen.
Een basis structuur zou iets als deze kunnen zijn:
klanten
-------
id PK
voornaam
tusenvoegsel
achternaam
etc ...
artikelen
--------
id PK
naam
omschrijving
prijs
bestellingen
-----------
id PK
klant_id FK
afhaaldatum (type: DATETIME, dus geen apart veld voor het tijdstip!)
bestelling_artikel
---------------
id PK
bestelling_id FK
artikel_id FK
aantal
prijs_per_artikel
Kijk eens voor jezelf of je deze opzet begrijpt en probeer tevens te achterhalen hoe ik hier aan kom. Ga dan verder werken om deze opzet aan te passen aan jouw situatie.
Succes!
Toevoeging op 03/01/2012 17:44:47:
ps. Het denormaliseren waar ik het over had, zie je terug in het veld bestelling_artikel.prijs_per_artikel. Normaal gesproken zou je gewoon artikelen.prijs gebruiken voor het weergeven van de prijs, maar aangezien deze variabel kan zijn en je dit voor een bestelling juist niet kunt hebben, sla je die prijs nog een keer op. In de bestelling_artikel tabel is de prijs dus voorgoed vastgelegd en zal daar nooit meer veranderen.
Ik weet niet of je dat denormaliseren moet noemen.
In deze situatie zijn de prijs per artikel en de betaalde prijs toch gewoon twee verschillende grootheden, waarbij de laatste betrekking heeft op de bestelling en niet direct op het artikel?
In deze situatie zijn de prijs per artikel en de betaalde prijs toch gewoon twee verschillende grootheden, waarbij de laatste betrekking heeft op de bestelling en niet direct op het artikel?
Als je het zo benadert, zou je het inderdaad geen denormaliseren noemen. Je kunt echter ook argumenteren dat prijs de eigenschap van een artikel en niet direct van een bestelling is. Je zou de bestelling immers ook kunnen reconstrueren als je enkel de artikelen en het aantal weet, waarbij de prijs dan uit de artikelen tabel gehaald wordt.
Kortom, je kunt het denk ik van twee kanten benaderen.
Kortom, je kunt het denk ik van twee kanten benaderen.
Daar kwam ik dus ook niet uit met *Prijs.pst, Totaal prijs per artikel*
Mijn mentor wil onder andere volgende gegevens uit de database halen: Omzetoverzicht per artikelgroep, omzet per groep ivm dat van vorig jaar.
Alsnog hartstikke bedankt Joren, zou je mij misschien ook een beetje op weg helpen met het ERD schema.
Mijn mentor wil onder andere volgende gegevens uit de database halen: Omzetoverzicht per artikelgroep, omzet per groep ivm dat van vorig jaar.
Alsnog hartstikke bedankt Joren, zou je mij misschien ook een beetje op weg helpen met het ERD schema.



