Versio

Normalisatie Vuurwerkwinkel "Achtung"

Overzicht Reageren

Sven Hoogaard

Sven Hoogaard

03/01/2012 17:22:50
Quote Anchor link
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
Gewijzigd op 03/01/2012 17:24:04 door Sven Hoogaard
 
PHP hulp

PHP hulp

25/05/2012 12:17:17
Gesponsorde koppelingen:
 
Joren de Wit
Beheerder

Joren de Wit

03/01/2012 17:42:31
Quote Anchor link
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.
 
Pim -

Pim -

03/01/2012 17:45:45
Quote Anchor link
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?
 
Joren de Wit
Beheerder

Joren de Wit

03/01/2012 17:49:16
Quote Anchor link
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.
 
Sven Hoogaard

Sven Hoogaard

03/01/2012 18:28:57
Quote Anchor link
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.
 



Overzicht Reageren

Get Adobe Flash player