Een bedrijf heeft 3 vestigingen:
- Amsterdam
- Den Haag
- Rotterdam
Al deze vestigingen hebben meerdere 'virtuele' voorraden:
- Hoofdmagazijn: De hoofdvoorraad om te verkopen
- Returned: Teruggebrachte goederen wegens gebreken
- Showroom: Producten die zich in de showroom bevinden
- Transit: Producten die verstuurd en onderweg zijn naar andere vestigingen
Het zou mooi zijn om dynamisch vestigingen en magazijnen (per vestiging) te kunnen toevoegen en verwijderen. Maar de performance moet ook nog een beetje ok zijn. Tot nu toe heb ik twee oplossingen gevonden waar ik beide niet echt tevreden mee ben.
De Eerste:
Zo krijg ik een enorme Stock tabel die als het goed is een unieke combinatie bevat van locatie,stocktype,product en waar een amount uit komt rollen. Dit zijn enorm veel tabellen en leveren een hele hoop queries op bij bijvoorbeeld een zoekopdracht naar een product met 100 resultaten. Ook kan er een bug ontstaan waardoor dezelfde combinatie twee keer in de tabel voorkomt.
De Tweede:
Op deze manier is de performance een stuk beter want ik kan RIGHT JOIN gebruiken, maar voor elke locatie zal ik een tabel moeten toevoegen en voor elke voorraad een kolom in de tabel. Niet echt netjes dus.
De Derde:
Deze optie maak voor ELK product dat de organisatie binnen komt een row aan en houdt bij in welke voorraad of order het zich bevindt. Zo is het makkelijk selecties maken, en producten op serienummer tracen binnen een bedrijf. Maar het heeft als nadeel dat als er heel veel kleine producten worden verkocht zonder serienummers de tabel enorm groeit met eigenlijk identieke rows.
- Amsterdam
- Den Haag
- Rotterdam
Al deze vestigingen hebben meerdere 'virtuele' voorraden:
- Hoofdmagazijn: De hoofdvoorraad om te verkopen
- Returned: Teruggebrachte goederen wegens gebreken
- Showroom: Producten die zich in de showroom bevinden
- Transit: Producten die verstuurd en onderweg zijn naar andere vestigingen
Het zou mooi zijn om dynamisch vestigingen en magazijnen (per vestiging) te kunnen toevoegen en verwijderen. Maar de performance moet ook nog een beetje ok zijn. Tot nu toe heb ik twee oplossingen gevonden waar ik beide niet echt tevreden mee ben.
De Eerste:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| Product
name
price
stock->Stock
Location
name
stocktypes->StockType
StockType
name
location->Location
Stock
value
location->Location
stocktype->StockType
product->Product |
Zo krijg ik een enorme Stock tabel die als het goed is een unieke combinatie bevat van locatie,stocktype,product en waar een amount uit komt rollen. Dit zijn enorm veel tabellen en leveren een hele hoop queries op bij bijvoorbeeld een zoekopdracht naar een product met 100 resultaten. Ook kan er een bug ontstaan waardoor dezelfde combinatie twee keer in de tabel voorkomt.
De Tweede:
code:
1
2
3
4
5
6
7
8
9
10
11
| Product
name
price
stock->StockAmsterdam (of StockRotterdam etc)
StockAmsterdam
main
returned
showroom
transit
product->Product |
Op deze manier is de performance een stuk beter want ik kan RIGHT JOIN gebruiken, maar voor elke locatie zal ik een tabel moeten toevoegen en voor elke voorraad een kolom in de tabel. Niet echt netjes dus.
De Derde:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Product
name
price
productstock->ProductStock
ProductStock
name
price
order->Order
stock->Stock
Stock
name
productstock->ProductStock |
Deze optie maak voor ELK product dat de organisatie binnen komt een row aan en houdt bij in welke voorraad of order het zich bevindt. Zo is het makkelijk selecties maken, en producten op serienummer tracen binnen een bedrijf. Maar het heeft als nadeel dat als er heel veel kleine producten worden verkocht zonder serienummers de tabel enorm groeit met eigenlijk identieke rows.