Hogyan képezzek táblákat?

Sziasztok!

Valószínű láma és triviális kérdés, de sajnos sok adatbázist még nem terveztem életem során, így nekem kissé bonyolult az alábbi probléma.

Szóval a nagy karácsonyi mókázás közben jutott eszembe az ötlet, hogy házi használatra készítenék kis adatbázist termékek, vásárlók és későbbiekben vásárlások nyilvántartására.

A termékek: tömeggel rendelkeznek, ez az elsődleges elszámolási alap. Azonban többféle kiszerelésben (csomagoltság/feldolgozottság alapján) állnak rendelkezésre.

Vásárlók: szokásos, név, cím, számlaszám, fizetési mód stb. ezekre kb. megvan a táblaszerkezet.
Azonban a vásárlók csoportokban vannak, melynek lényege az árképzésben jelentkezik.

Árak: A termékek kiszerelésétől és vásárlójától függően egy terméknek több ára lehet.

Namost itt van olyan gondom, hogy
1. milyen táblaszerkezetbe lehetne leképezni, a termékeket, kategóriánként? (mivel szeretnék lehetőséget biztosítani arra, hogy user lekérhesse, hogy adott termék milyen kiszerelésekben kapható, így csak az árak táblába leképezni gondolom nem jó)

2. milyen táblaszerkezetbe lehetne leképezni, hogy az 1-es csoportban a 1131-es termék 3-as kiszerelésben ilyen és ilyen áron kapható?

Ami eddig megvan a fentiekből vázlatosan:


customers(customerID, customerGroupID, customerName, customerZip, customerAddr, customerAccNr ...);
//Vásárlók

customerCategory(customerCatID, customerCatName); //Vásárló kategória

packaging(packagingID, packagingDesc); //Kiszerelés

productDefinition(productID, productName, productDesc); //Termék

//És akkor amire én kb. gondoltam az árakat illetően
pricelist(productID, customerCatID, packagingID, price); //Termék - kiszerelés - ár

Ugye itt látszik, hogy sok-sok azonos sor lesz a táblában, ami csak az árban tér el. Ez normális vagy lehet még tovább normalizálni a dolgokat?

Köszönöm mindenkinek a segítséget és boldog karácsonyt! :)

Hozzászólások

A termékek és a kiszerelés között nincs kapcsolat, ez gond, feltételezem nem minden termékből lehet minden kiszerelésben (pl. kenyér 10g-os kiszerelésben, ...) Ha viszont meg van a kapcsolat akkor az árlistában elég a kapcsolatra hivatkozni, hiszen az meghatározza, hogy melyik termék, melyik kiszereléséről van szó.
Minden vevői csoprtnál minden termék ára egyedi lesz? Mert lehetne egy általános termékárat is rögzíteni és csak azokat a termékárakat rögzíteni az árlistába ahol ettől eltérő árral kell dolgozni az adott vevői csoportnál.
Egyébként szerintem a termékek tárolásának ilyen megközelítés nem igazán jó. Az 1Kg-os gumicukor az nem azonos a 25g-os gumicukorral. A raktárkezelést eléggé megbonyolítja a te általad felvázolt logika. Ráadásul a mértékegységek közötti váltásra is figyelni kell (kg, dkg, g, csomag, ...)
Persze, ha gyártásról van szó és a termékek átcsomagolhatóak az egyes kiszerelések között akkor más a helyzet.

Igen, igazad van, nem minden termékből lehet minden kiszerelés, tehát a kiszerelést külön kell kezelnem?

Húskészítményekről van szó konkrétan, a kiszerelések közt lehet konverzió, de csak bizonyos keretek között. Pl. lédig->darabolt->szeletelt, de visszafelé nem igazán :) Amúgy a kiszerelések is kb. ilyenek, lédig, darabolt, szeletelt (vákuumcsomagolt)

A vevői csoportoknál nyilván vannak termékek amik ára azonos. Néhány terméknél alkalmaznak különböző árazást, attól függően, hogy melyik vevő miből, mennyit vásárol vagy mit sikerült kialkudjon. (De az eltérő árazás a jellemzőbb, mivel kevés termékről van szó és nagy a halmaz, amiből minden vevő választ, de szélsőséges mennyiségeket, amik nagyban befolyásolják az árat).

A tömegek közti konverzió sem lényeges, mert mint mondtam, minden elszámolás kilogramm alapján történik, a rendelésben megadott mennyiségtől függetlenül. (tehát pl. 3 rúd szalámit sem 3 rúdként számláznak, hanem a 3 rúd tömege alapján - mivel 100%-osan nem megvalósítható az azonos tömegű termék előállítása, pláne itt.)

Egyelőre raktárkezelést nem szeretnék megvalósítani (ok, legyek előrelátó); első körben mindössze annyit szeretnék megvalósítani, hogy ha megkérdik a számlázást: "Gipsz Jakab a füstölt szalonnát darabolva, csomagolva mennyiért kapja?" akkor 3 kattintással meg tudja mondani, ne kelljen a lassan könyv méretű, papír alapú árlistákat nyálazni és mutatóujj-pointerrel a rekordok között navigálni :)

--
A gyors gondolat többet ér, mint a gyors mozdulat.

"A tömegek közti konverzió sem lényeges" - nyugodtan beépítheted, szükséged lesz rá. Gondolj a például a bélre. Mindig méterben fogják rendelni. A kalibrált vákumcsomagolt termékeket, de a poharas zsírt is darabra fogják megrendelni. Ha nem akarsz később bonyodalmat, akkor már a tervezésnél érdemes foglakoznod a csomagban található poharak számával. Amit bizony a szállítólevélen már tömegre átszámolva kell feltüntedned. Külön problémát okozhat a csomagoló anyagok súlyának kimutatása. Ezeket szintén darabra szokás megadni. A szállító jármű kilépési súlyát is ismerni akarják a kapun. Ami a megrendelések+csomagoló anyagok+jármű súly.
A darabolt szalonna illetve a csomagolt szalonna, az nem ugyanaz a termék. Az utóbbiban több munka van az előbbihez képest. Ráadásul az utóbbi lehet főzött, ízesített, szeletelt. Ezek az adatokat érdemes beépíteni a termékszámba. A termékszámnak egyszerűnek és logikusan felépítettnek kell lennie. Itt inkább az adatnak kell dolgoznia, és nem a programnak.
Az árakat hozzá kell rendelni termékhez, vevőhöz, időponthoz. Apropó a vevőket le kell kódólni. Egy vevőnek lehet több telephelye is, ahová szállítani kell - szállító levélen fel kell tüntetni. A számlát viszont általában egy helyre kérik. Előfordul, hogy arra a címre nem is szállíttat a kedves vevő.
Időponthoz kötés megvalósítható árjegyzékekkel, amit érdemes felszámozni, és érvényes egy adott dátumtól. Az emberek számára érthetőbb. Egy évben úgy 4-6 árjegyzék jön létre. Ezek az árjegyzékek kerülnek ki a vevőkhöz is. A kisebb árváltozások persze az utolsó árjegyzékbe kerülnek be. Az alap árjegyzék az az összes vevőre érvenyes . A vevőhöz rendel ár e felett az árjegyzék felett van. Ez lehet csoportos, de egyedi is a vevőkód szempontjából. Hozzárendelhetőnek kell lennie a megrendelőhöz is.
Nyugodtan számíthatsz itt az egyes kombinációkkal. Biztos fogják előbb utóbb kérni.
Haszos elemzést. Lesz mit!