Ha már kihalt az elmélet, nézzünk egy gyakorlati problémát, ami még mindíg fejtörést okoz.
Írtam hajdanán egy raktárgazdálkodási rendszert. A kiindulási pont az volt, hogy egy raktár van. Abból jönnek mennek a dolgok.
A probléma akkor kezdődött, hogy át kellett volna írni a rendszert tetszöleges számú raktárra. Ez sajnos borította az addigi adatmodellt.
A modell középpontjában a forgalmi tételeket rögzítő adattábla áll.
Az oszlopok:
bizonylat_id,(dátum), sorszám,jodcím_id, anyag_id,honnan_id,hová_id,mennyiseg,érték
A problémát az okozza, hogy a honnan_id, hová_id ugyanabból a választékból kerülnek ki: szállítók, vevők, igénylők, raktárak. (Ugyanannak az egyednek -partner - két különböző szerepben való megjelenése.)
Ebből a táblából kell előállítani két listát:
- anyagkarton
Egy adott anyag összes tétele időrendben összesen illetve egy adott raktárra.
- forgalmi karton
Egy adott partner (vevő,szállító, igénylő, ...) összes forgalmi tétele időrendben.
Ezek olyan listák, aminek kérés esetén szinte azonnal meg kell jelennie a képernyőn.
Mi lenne az optimális adatszerkezet?
(Optimálisnak azt tekintem, ha a fő tábla rekodjai indexeken keresztül 100%-os találati pontossággal elérhetőek, nincsenek redundanciák az adatbázisban, egy új forgalmi tétel egy új sort generál a fő táblában.)