Inventaris systeem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

J C

J C

02/07/2016 04:26:54
Quote Anchor link
Ik heb een systeem waarin mijn opdrachten worden bijgehouden ik wil dit gaan uitbreiden met een inventaris systeem, waarbij men tevens kan zien of alle items nog op voorraad zijn, maar ik ben bang dat het syteem heel traag wordt.


Ik zal prberen uit te leggen hoe ik het nu heb opgezet.

Ik heb de volgende tabellen

Opdrachten met daarin begin en einddatum van boeking
producten met hierin de inventaris
opdrachten-producten met hierin id van de opdracht, id van het product en het aantal dat nodig is.

Nu wil ik bij het overzicht van de boeking checken of de voorraard klopt.

Maar dat zou betekenen dat de website bij elke opdracht voor elke dag in de boeking het hele tabel van boekingen-producten, moet doorlezen en moeten uitrekenen of de voorraad klopt.

Sommige opdrachten duren 3 weken, die tussen de 4 tot 40 producten bevatten.
Maar nu dacht ik om per dag elk prouct dat voor deze opdracht nodig is op te halen en vervolgens met te checken of deze producten nogmaals in de de tabel opdrachten-producten voortkomen om vervolgens te kijken of deze gebruikt worden bij een boeking waarbij de datum overeen komt.

Maar als je bedenkt dat hij dit bij bepaalde opdrachten 840 keer moet doen (21 dagen x 40 producten)
Terwijl de tabel opdrachten-producten uit duizenden regels bestaat (200 opdrachten per jaar met gemiddeld 20 producten)
Zou dat betekenen dat hij bij een grote opdracht van 21 dagen en 40 producten bijna 3,5 miljoen handelingen moet doen.

En dan ben ik er nu vanuit gegaan dat er maar 1 medewerker per moment de database raadpleegd.

Gaat mijn website dit aan kunnen of gaat dit mis?


Misschien benader ik dit helemaal verkeerd en zou dit veel makkelijker kunnen? Alle feedback is welkom.
 
PHP hulp

PHP hulp

19/04/2024 09:51:33
 
Ward van der Put
Moderator

Ward van der Put

02/07/2016 07:16:40
Quote Anchor link
Worden de producten gebruikt bij een opdracht en gaan ze daarna terug het magazijn in? Of worden de producten verbruikt bij een opdracht en moeten ze daardoor opnieuw worden ingekocht?

Wat is verder precies het doel van je systeem? Het hebben van een inventaris is namelijk geen doel. Je wilt daarover iets weten of daarmee iets kunnen doen: wat is dat precies?
 
Thomas van den Heuvel

Thomas van den Heuvel

02/07/2016 13:15:12
Quote Anchor link
De producten tabel klinkt meer als een tabel met resources? Zoals apparatuur/vergaderruimtes/personeel/bedrijfswagens/laptops etc? Dit zijn alle "resources" die op elk moment maar door één proces (opdracht) geclaimd kunnen worden?

Je zou wellicht een (redundant) veld op kunnen slaan bij de items van de resources die op dat moment in gebruik (zouden moeten) zijn? "in_gebruik" ofzo (waarde 0=in magazijn/beschikbaar, 1=in gebruik). En als dat ding weer ingeleverd wordt dan zet je de waarde hiervan weer op 0?

Dan kun je makkelijk de vraag beantwoorden hoeveel items je op voorraad zou moeten hebben:
voorraad van itemtype X = totaal aantal items van type X - aantal items van type X die in_gebruik zijn

Je zou zelfs (nog) een (redundant) veld op kunnen slaan bij de items die aangeeft bij welke opdracht het item op dat moment wordt gebruikt. Dit veld kan mogelijk ook ter vervanging dienen van "in_gebruik". Is het opdracht id NULL, dan is het item niet in gebruik.

Oftewel, sla ergens wat uitgerekende informatie dubbel (redundant) op.
 
J C

J C

02/07/2016 13:33:32
Quote Anchor link
Ik zal proberen duidelijker te zijn.

Het gaat om de verhuur van producten, wij hebben bijvoorbeeld 150 podiumdelen.

Waarbij bij de ene opdracht we er 20 inzetten en bij de andere 31.
De producten komen na een bepaalde tijd weer terug.

Het doel van het systeem is constant kunnen zien of er nog producten aanwezig zijn om te verhuren.
Op dit moment bestaat de inventaris uit meer dan 500 verschillende producten.


@ Thomas, Ik negeer je niet, maar probeer even te begrijpen en voor me te zzien wat je bedoeld

Dus eigenlijk zou ik voor elke datum een tabel moeten aanmaken waarbij ik aangeef welke producten er die dag verhuurd zijn. Maar betekend dit dan niet dat die database per jaar 365 tabellen gaat krijgen?
Ik zou misschien een opschoonscript kunnen maken zodat oude tabellen verwijderd worden?
Gewijzigd op 02/07/2016 13:41:46 door J C
 
Thomas van den Heuvel

Thomas van den Heuvel

02/07/2016 13:43:17
Quote Anchor link
Mijn voorstel komt neer op het volgende: houd ergens tevens expliciet bij dat iets uitgeleend is (en aan wie) in plaats van dat je dit elke keer moet afleiden aan de hand van een complexe rekensom.

EDIT: dit lijkt mij in eerste instantie om te tracken waar alles is en te kijken of je voorraad nog klopt? Je zou hier natuurlijk ook nog een stapje verder mee kunnen gaan, je zou het systeem ook zou uit kunnen bouwen dat je items/onderdelen op den duur kunt reserveren/inplannen. In dat geval zul je het "in gebruik zijn" van items moeten koppelen aan tijd. Hier hoef je niet allerlei aparte tabellen voor aan te leggen lijkt mij. Wel lijkt het mij handig om dan tijd in partjes (dagen, dagdelen, uren?) op te delen.
Gewijzigd op 02/07/2016 13:48:20 door Thomas van den Heuvel
 
J C

J C

02/07/2016 13:52:11
Quote Anchor link
Beste Thomas,

Het gaat vooral om het laatste. Vooral in de drukke maanden zijn er vaak klussen die lang duren, waardoor ik het overzicht kwijt raak.

Ik zat zelf nog aan iets te denken om aan het begin van het overzicht eerst te checken welke andere opdrachten er binnen dit tijdsbetek zijn en dan alleen met die opdrachten te werken.
Nee dit is onzin, het systeem moet dan nog steeds alle ingeboekte producten bekijken om te kijken of ze bij een andere opdracht horen.

Misschien toch dan een tabel per dag.


Naar aanleiding van de laatste toevoeging.
Betekend dit dan dat als ik een product opsla ik dit per tijdsvak moet doen?
Een tijdsvak bij ons is altijd 1 dag.

Dus als ik een klus heb van 21 dagen waarbij we 20 podiumdelen nodig hebben, dat ik dan dit product 21 keer opsla?
Gewijzigd op 02/07/2016 13:56:29 door J C
 
Ward van der Put
Moderator

Ward van der Put

02/07/2016 13:59:31
Quote Anchor link
Aangenomen dat je enkele weken tot maanden vooruit moet kunnen plannen, zou ik een koppeltabel maken met drie kolommen: datum, opdracht-ID en artikel-ID (als samengestelde primaire sleutel). Je hebt dan weliswaar deels redundante data, maar daar staat een performancewinst tegenover: je kunt per dag exact zien welk artikel voor welk project staat ingepland. Je kunt die tabel bovendien klein houden: doordat je uitgaat van redundante data, kun je alles dat meer dan enkele dagen oud is weer weggooien.
 
J C

J C

02/07/2016 14:03:50
Quote Anchor link
En hier dan ook de aantallen in opslaan?

Meestal worden opdrachten niet eerder dan een jaar doorgegeven.
Maar dit tabel kan wel nog steeds zo'n 3 miljoen regels bevatten. Kan een website dit aan?
Gewijzigd op 02/07/2016 14:05:38 door J C
 
- Ariën  -
Beheerder

- Ariën -

02/07/2016 14:13:46
Quote Anchor link
Ja, met gemak. Waarom zou een computer die snel kan rekenen er problenen mee hebben, denk je ;-)?
 
Ward van der Put
Moderator

Ward van der Put

02/07/2016 14:17:45
Quote Anchor link
Ja, daar zou je dan ook aantallen in kunnen opslaan.

Drie miljoen kleine records mogen geen probleem zijn voor MySQL, MariaDB, enzovoort. Soms kun je beter te veel opslaan als dat betekent dat je daarmee processortijd bespaart in het doorrekenen van complexe vergelijkingen.
 
J C

J C

02/07/2016 14:18:26
Quote Anchor link
Geen idee, het leek mij veel werk voor een website om dit allemaal te checken.

Ik zou het zonde vinden om dit helemaal te gaan maken om vervolgens te horen dat dit idee heel slecht is omdat het te traag wordt.

Ander vraagje, is het mogelijk om een automatisch script te maken dat deze tabellen leeg haalt? Of zal ik het opschoonscript in de index.php zetten zodat hij dit script uitvoert op het moment dat de website bezocht wordt?
 

02/07/2016 21:19:39
Quote Anchor link
@J, mijn eerste gedachte is om een kalendertabel te maken waarin per dag alle reserveringen staan, die je kunt koppelen met de inventaristabel. Samen met indices moet dat systeem echt snel te doorzoeken zijn, omdat je alleen een bepaalde periode doorzoekt en niet de hele tabel. Je kunt dan de standaard-aggregatiefuncties van SQL gebruiken om te bepalen of producten voorraddig zullen zijn.
 
J C

J C

02/07/2016 22:34:20
Quote Anchor link
wat is een kalendertabel? Ik denk niet dat mijn provider dit ondersteund, want ik kan het in myadmin niet vinden
 
- Ariën  -
Beheerder

- Ariën -

02/07/2016 22:36:32
Quote Anchor link
J C op 02/07/2016 22:34:20:
wat is een kalendertabel? Ik denk niet dat mijn provider dit ondersteund, want ik kan het in myadmin niet vinden

Eh.... een tabel is doorgaans wat je zelf moet aanmaken. Lees zijn post nog eens goed?
 
J C

J C

02/07/2016 22:41:09
Quote Anchor link
Ik dacht dat het iets speciaals was. MEt al die nieuwe functies in php en mysqli vind ik het moeiilijk bij te houden.

Het idee dat ik nu heb (mede dankzij jullie hulp) is als volgt:

Ik maak een "reken"tabel met de volgende velden:

ID | product-ID | datum (in dit geval enkel de dag/maand/jaar) | aantal


Wat betekend dat wanneer ik een opdracht invoer ik per dag een regel invoer, bij een nieuwe boeking check ik of dit product op deze dag al bestaat en tel het nieuwe aantal hierbij op.
Bij het wijzigen van een opdracht (iets dat regelmatig gebeurt) zal ik eerst het aantal verwijderen en dna opnieuw invoeren. Het enige gevaar is dat wanneer er verschillende opdrachten zijn , ik niet in dit tabel kan achterhalen waaruit dit aantal is opgebouwd.
Dit kan uiteraard wel met het andere tabel waarin de producten met opdracht-id staan vermeld.
Gewijzigd op 02/07/2016 22:49:06 door J C
 
Ben van Velzen

Ben van Velzen

03/07/2016 00:04:55
Quote Anchor link
In die zin kan timetravel mogelijk ook nuttig zijn, dan kun je gewoon je totale inventaris - op dit moment op locatie = beschikbare inventaris doen: je hebt een id van je inventaris, een startdatum van uitboeking, einddatum van uitboeking (of NULL indien uitgeboekt maar niet bekend wanneer deze terug is). Wanneer de einddatum groter is dan de huidige datum en de startdatum kleiner is dan de huidige datum is dit product niet voorradig.
 
J C

J C

03/07/2016 02:19:06
Quote Anchor link
Wat ik ervan begrijp, via google dan, is dat dit vooral interessant is voor hier en nu en niet voor een kalender moet opdrachten in de toekomst.

Maar het kan zijn dat ik me totaal vergis.

Ik kan er niet heel veel over vinden, maar dat komt denk ik ook omdat de naam ook gebruikt wordt bij diverse app´s
Gewijzigd op 03/07/2016 02:20:16 door J C
 
Ben van Velzen

Ben van Velzen

03/07/2016 11:11:34
Quote Anchor link
Het is voornamelijk interessant om direct een geschiedenis mee te vormen van wat er met je inventaris gebeurd is. Hier is timetravel ook voornamelijk voor bedoeld, maar zoals mijn voorbeeld aangeeft kun je hiermee je berekeningen ook eenvoudiger maken van opzet door te bepalen wat *nu* niet voorradig is. Vooral in het geval dat je schetst dat te technische voorraad constant is maar de economische voorraad wijzigt is dat handig. Het bijkomend voordeel is dat je een half jaar of desnoods 10 jaar later nog kan zeggen "zo was de voorraad van product X op datum/tijd X".
 
J C

J C

03/07/2016 13:40:08
Quote Anchor link
Ik probeer hier meer over te vinden, maar ddat lukt me niet echt. Heb je misschien een website waar dit uitgelegd wordt?

Ik wil wel aangeven dat ik het totaal niet interessant vind om te weten of ik 10 jaar geleden een voorraad tekort had.
Gewijzigd op 03/07/2016 13:40:48 door J C
 
Ben van Velzen

Ben van Velzen

03/07/2016 14:07:08
Quote Anchor link
Jij niet, maar je verzekering wel, en de bank ook.
Anyway: zoeken op iets als temporal tables of timetravel with temporal tables kan hier uitkomst bieden.
 
J C

J C

03/07/2016 14:22:14
Quote Anchor link
Waarom zou mijn verzekering dat willen weten?

als die al iets zou willen weten over mijn inventaris dan gaat die om totalen en niet om beschikbaarheid.
Mijn bank heeft niets te willen.

Maar los daarvan, dit gaat om een beschikbaarheidsplanning niet om een boekhoudprogramma, dit zou ik nooit zelf kunnen/willen bouwen.

Toevoeging op 04/07/2016 02:26:55:

Mijn vorige post is verwijderd, weet niet precies waarom.

Kort samengevat:
Na lang nadenken denk ik dat wanneer ik zonder unique id steeds producten bij elkaar optel en van elkaar aftrek ik op een gegeven moment het overzicht kwijt ben, omdat ik dit ook moeilijk kan terug halen, ondanks dat het een extra tabel is.

Mijn idee is nu om een tabel te maken als volgt:

id | boekingid | productid | datum | aantal

Ik kan dan selecteren op datum.

De ervaring zal moeten leren of het rekenwerk de snelheid niet te veel beinvloed.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.