[ PavleK86 @ 15.11.2013. 15:08 ] @
Pozdrav svima!

Naime scenario je sljedeci:

Imam tabelu `komponenta` u kojoj se cuvaju odredjene informacije o komponentama (`id`, `opis`, `kolicina`, `cijena`...)
Imam tabelu `podsklop` u kojoj se cuvaju odredjene informacije o podsklopovima (`id`, `opis`, ...)

E sad, svaki podsklop se moze sastoji od odredjenih komponenata, ali i podsklopova.

Trenutno je podsklop zapisan na nacin da se u tabelu:

- `podsklop_sastav` (`id`, `id_podsklop`, `id_komponenta`, `kolicina`) upisuje sastav osnovnog podsklopa, odnosno onog koji se sastoji samo od komponenata. Napominjem da se jedan osnovni podsklop moze sastojati od ~100 komponenti.

Primjer zapisa u ovoj tabeli za podsklop sa id=1 je:

`id` | `id_podsklop` | `id_komponenta` | `kolicina`
--------------------------------------------------
1 | 1 | 1 | 1
---------------------------------------------------
2 | 1 | 2 | 2
---------------------------------------------------
3 | 1 | 3 | 3


Primjer zapisa u ovoj tabeli za podsklop sa id=2 je:

`id` | `id_podsklop` | `id_komponenta` | `kolicina`
--------------------------------------------------
4 | 2 | 4 | 2
---------------------------------------------------
5 | 2 | 5 | 4
---------------------------------------------------
6 | 2 | 6 | 6


- `podsklop_sastav2` (`id`, `id_podsklop_parent`, `id_podsklop_child`, `kolicina`) upisuje sastav podsklopa koji se sastoji od drugih podsklopova

Primjer zapisa u ovoj tabeli za podsklop sa id=3 je:

`id` | `id_podsklop_parent` | `id_podsklop_child` | `kolicina`
------------------------------------------------------------
1 | 3 | 1 | 1
-------------------------------------------------------------
2 | 3 | 2 | 2
-------------------------------------------------------------

Slicna je situacija i sa proizvodima, koji se sastoji od odredjenih podsklopova i komponenti.

Da li bi bilo bolje/efikasnije rjesenje da se u tabelu `podsklop` doda polje u kome bi se upisivali uredjeni parovi (id_komponenta,kolicina) i na taj nacin se cuvala sastavnica podsklopa.
[ farmaceut @ 18.11.2013. 18:00 ] @
Ja bih u jednu stavio tabelu stavio "komponentu", "podsklop", "proizvod", a u drugu tabelu samu relaciju izmedju entiteta u prvoj tabeli (to jest "sastavnicu" - id, parent_id, kolicina ).
To ti daje mogucnost dodavanja dodatnih nivoa np. neki "poluproizvod" i sl.
[ bogdan.kecman @ 18.11.2013. 21:21 ] @
ovo sto je farmaceut rekao je kako bih ja radio .. tj malko drugacije

object: object_id, object_type_id, object_name, .. object_stagod
object_type: object_type_id, object_type_name (enum:komponenta, podsklop, ..)
object_object: object_id, component_object_id

[ PavleK86 @ 30.01.2014. 12:49 ] @
Ok, hvala mnogo na odgovorima!

Ono sto me na neki nacin uslovljava da ovo ne koristim jeste cinjenica da svaka komponenta ima cijenu, tako da se prilikom svakog prikazivanja bilo proizvoda, bilo podsklopa, mora prikazivati ukupna cijena. Posto broj komponenata zna biti prilicno veliki (do 100 komada za podsklop, a za proizvod i do 2-3 hiljade) onda je i samo preracunavanje cijene dugotrajan posao.

Iz tog razloga, koliko je ispravan koncept da tabela `podsklop` ima polja `id`, `sastav`, `cijena`, ...., i da se u polju `sastav` cuva struktura podsklopa u JSON formatu, a da se cijena preracunava u aplikaciji i upisuje u polje `cijena` prilikom svake izmjene?
Znam da nema neke pretjerane veze, ali aplikacija je radjena u C#-u.