Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di AtoXx
    Registrato dal
    Nov 2007
    Messaggi
    119

    Database gerarchico Mysql

    Salve a tutti, ho un quesito da proporvi riguardo la progettazione di un database.
    Dovrei progettare un database gerarchico (spero che sia il termine esatto) per dei magazzini, mi spiego meglio: la struttura sarebbe quella ad albero, nel senso che avrò un magazzino centrale e n sotto-magazzini.
    • Il magazzino centrale corrisponde alla root dell'albero e si occupa di reperire le merci dai fornitori e che poi a sua volta ridistribuirà agli altri magazzini (i sotto-magazzini).
    • I sotto-magazzini effettuano richieste di fornitura merci e le possono fare solo ai magazzini di livello superiore.


    Lo schema è come questo
    MagazzinoGerarchico.jpg


    Faccio un esempio di funzionamento: il magazzino 111 vuole ordinare 200 kg di arance. Per farlo invia una richiesta al magazzino di livello superiore (il padre per intenderci), cioè il "Magazzino 11". Quest'ultimo se ha il quantitativo di arance richiesto risponde al "Magazzino 111" di averle, se no invia la richiesta al livello superiore cioè al "Magazzino 1" e così via fino al "Magazzino centrale" se necessario. Se anche quest'ultimo non può fornire la merce richiesta allora contatterà un fornitore che gliela consegnerà.


    Ho cercato online soluzioni in letteratura ed ho trovato queste 2: Adjacency List Model e Modified Preorder Tree Traversal discussi qui http://www.html.it/articoli/le-strut...su-database-1/. Da quel che ho capito la seconda dovrebbe essere migliore nel caso di db grossi.

    Adesso quello che chiedo è: il miglior modo di fare un database del genere è tramite "Modified Preorder Tree Traversal"? Ci sono soluzioni migliori?Accetto qualsiasi consiglio dato che questa è la prima volta che faccio una cosa del genere.


    Grazie in anticipo
    Immagini allegate Immagini allegate
    Ultima modifica di AtoXx; 21-12-2014 a 15:52

  2. #2
    Utente di HTML.it L'avatar di AtoXx
    Registrato dal
    Nov 2007
    Messaggi
    119
    P.s.= volevo aggiungere che tutto il sistema funzionerà su di un unico server

  3. #3
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Ma le richieste sono solo dal basso verso l'alto oppure anche dall' alto verso il basso ???

    Rifaccio con esempio la stessa domanda
    - Magazzino112 chiede 200 kg di arance a Magazzino11
    - Magazzino11 non ha arance e chiede 200 kg di arance a Magazzino1
    - Magazzino1 non ha arance ma pero Magazzino12 ha 500 kg di arance
    --- Magazzino1 può rifornirsi da Magazzino12 ???
    --- oppure Magazzino1 NON può rifornirsi da Magazzino12 quindi deve chiedere al MagazzinoCentrale ???


    Comunque tutto questo rigiro deve essere nella applicazione che si interfaccia a MySql
    mentre nel DB resteranno solamente le giacenze di magazzino


    .

  4. #4
    Utente di HTML.it L'avatar di AtoXx
    Registrato dal
    Nov 2007
    Messaggi
    119
    Ciao nman, allora le richieste possono avvenire solo dai livelli inferiori verso soltanto i livelli superiori. Una volta che una richiesta arriva alla root dev'essere soddisfatta dalla root, o perchè ce l'ha in magazzino o perchè fa una richiesta al fornitore.

    Io volevo capire qual è il modo migliore di costruire il db dato il caso di utilizzo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    Con tutto il rispetto per le strutture gerarchiche che hai indicato, io non le applicherei ad un mio progetto, nella forma in cui sono descritte

    mi spiego, se domani ti dicessero, il magazzino x può rifornirsi dai magazzini y e z, di pari livello, tu butti tutta la tua struttura nel cestino della carta straccia e non sei in grado di reagire in breve tempo

    personalmente preferirei avere la tabella delle giacenze per magazzino e creare attraverso una seconda tabella la struttura gerarchica (limitazione alla "visualizzazione")

    poi con la giusta definizione di view, mi creerei il legame per poter trovare il materiale nei magazzini di livello superiore

    per esempio potresti estrarre le giagenze di tutti i magazzini ove presenti, limitandone la "visualizzazione" per i soli consentiti

    la gestione delle scorte di magazzino non è propriamente una gestione con struttura gerarchica anche se la si costringe (concettualmente)

    ps, i fornitori potrebbero essere equiparati a magazzini di ultimo livello (magari + di 1 per articolo)
    Ultima modifica di marino51; 22-12-2014 a 00:54

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Concordo con Marino, io vedrei solamente 4 tabelle
    - Magazzini - con dentro solamente i tuoi 10/15 magazzini
    - Articoli - con dentro tutti gli articoli del "Mondo"
    - Bolle - i movimenti fra magazzini si gestiscono con bolle
    - Inventario - è la "GranSumma" del tutto

    lo schema ER
    Relazioni.jpg


    un esempio della tabella Inventario con 2 bolle di 3 e 2 articoli
    che si traduce in 6 + 4 record
    Inventario.jpg


    Le difficolta ( si fa per dire ) le incontrerai non nel DB ma nella applicazione in quanto
    - ogni bolla dovra interessare 2 e solo 2 magazzini
    - se movimenti 3 articoli dovrai generare 6 record
    -- 3 in scarico dal MagA
    -- 3 in carico per eguali quantita al MagB


    Facci sapere


    PS: Naturalmente la mia è solo una visione parziale e immediata
    molto opinabile e suscettibile di migliorie

  7. #7
    Utente di HTML.it L'avatar di AtoXx
    Registrato dal
    Nov 2007
    Messaggi
    119
    Ogni consiglio è sempre ben accetto, anche le cose più banali perchè l'unica gestione di magazzino che ho fatto era su di un singolo magazzino e non con questa struttura. Vi farò sapere, devo pensare un pò a cosa mi viene meglio.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.