[MySQL] dts?, triggers en statiegeld

Pagina: 1
Acties:

  • turkosh
  • Registratie: December 2003
  • Laatst online: 26-04-2025
Hoi,
In mijn ontwerp poging naar een perfecte db ben ik over een aantal zaken gestruikeld. Misschien weet iemand een manier om deze bananenschillen op te ruimen.

Het betreft de datawarehouse project waar ik aan werk (zie voor details mijn eerdere posts).
Ik hou in mijn database zowel de verkooptransactie als de voorraadbeheer bij.
Dat houdt in:
- een nieuw record in verkooplijst (verkoop van een artikel) betekent afname van de boek voorraad bij hetzelfde artikel. hoe is dit op te lossen zonder gebruik te maken van de triggers (die nog niet in MySQL geimplementeerd zijn)

- Elke dag draait er een dag shift rapport uit. Maar wat doe je als je een dag vergeten bent. Dus moet ik op de een of andere wijze de laatste uitdraai ergens opslaan en het verschil met nu uitdraaien.

- sommige artikels hebben geen bestelnivo en eigenlijk ook geen boek voorraad. Bijvoorbeeld de statiegeld bij lege flessen. Bij inlevering van de lege flessen vind er dus een verkoop plaats met bedrag -0.25. En aantal uitgekeerde statiegelden moeten ook worden bijgehouden (misschien optellen bij boekvoorraad?)

dit zijn van die kleine "rot" vragen waar ik het db ontwerp een oplossing voor zoek. Maar ik weet niet precies of er voor de hand liggende oplossingen zijn die ik direct kan invoeren in MySQL.

Volgende punt is eigenlijk meer een advies vraag:
Hoe krijg ik de gegevens van mijnproductie db in mijn (nog te implementeren) datawarehouse omgeving. Is er een DTS achtige mogelijkheid? en is PHP wel geschikt om gegevens te vergaren voor de datawarehouse. Of moet ik toch kijken naar de gebruiksgemak van MS-SQL met alle nodige tools en gadgets. Ik heb eerlijk gezegd liever een oplossing in MySQL omdat ik die programma zo'n project gun om de docenten de mogelijkheden van MySQL te bewijzen. Maar of het makkelijk zal gaan weet ik niet.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
turkosh schreef op 20 januari 2004 @ 15:48:
- een nieuw record in verkooplijst (verkoop van een artikel) betekent afname van de boek voorraad bij hetzelfde artikel. hoe is dit op te lossen zonder gebruik te maken van de triggers (die nog niet in MySQL geimplementeerd zijn)
Tja, dit zal je dan in je business-logica laag moeten implementeren.
Volgende punt is eigenlijk meer een advies vraag:
Hoe krijg ik de gegevens van mijnproductie db in mijn (nog te implementeren) datawarehouse omgeving. Is er een DTS achtige mogelijkheid? en is PHP wel geschikt om gegevens te vergaren voor de datawarehouse. Of moet ik toch kijken naar de gebruiksgemak van MS-SQL met alle nodige tools en gadgets. Ik heb eerlijk gezegd liever een oplossing in MySQL omdat ik die programma zo'n project gun om de docenten de mogelijkheden van MySQL te bewijzen. Maar of het makkelijk zal gaan weet ik niet.
Verwacht niet dat een gratis would-be dbms je dezelfde mogelijkheden en features kan bieden als een full-blown RDBMS waar er ettelijke euro's moeten voor neergeteld worden.

https://fgheysels.github.io/


Verwijderd

Voor het voorraadprobleem:

een makkelijke implementatie is om een warehouse bij te houden van wat je binnen krijgt (wat je besteld hebt in een aparte tabel, wat je ontvangt in een aparte tabel, zodat er inkoopverschillen gerapporteerd kunnen worden). Vervolgens voer je in een nieuwe tabel de transacties in die je uitvoert met je klanten. Hierbij horen dus ook de innames van producten die geruild worden. Inruilen betekent een voorraadafname van -1!!! Eventueel kan je dat dus ook nog koppelen aan financiële informatie.

De truc: de daadwerkelijke voorraad uit de tabel van geleverde producten geeft jouw beginvoorraad voordat er transacties plaatsgevonden hebben. Tel dan vervolgens de transacties op. De huidige voorraad betekent dus: beginvoorraad - som van alle transacties.

Met betrekking tot de statiegeld flessen is het dus simpel. Daar kan alleen maar een negatieve huidige voorraad van bestaan. Tenzij je het volgende doet. Je verkoopt de frisdrank en de fles apart, maar wel in 1 transactie. Dan kan je de hoeveelheden lege flessen die nog bij klanten zijn uitrekenen. Je kan dus wel meer flessen terug krijgen dan dat je uitgeeft ;). Enfin, een bestelniveau hoeft hier dan toch niet aan gekoppeld te worden? Die is namelijk gekoppeld aan het hele product (de fles en de frisdrank).

Met betrekking tot het shift rapport. Ik neem aan dat je bij kan houden op welke dagen/tijdstippen welke rapportages uitgedraaid worden. Op het moment dat je een discrepantie ontdekt is dat toch op te lossen door beide rapportages in chronologische volgorde te laten maken? Of denk ik er nu te makkelijk over?

[ Voor 36% gewijzigd door Verwijderd op 20-01-2004 16:27 . Reden: de vraag ook echt beantwoord, en ook die van de shift rapportages ]