Database gestione multilivello

mercoledì 04 gennaio 2012 - 18.20
Tag Elenco Tags  Access (.mdb)

groser Profilo | Newbie

ciao a tutti,
sono alle prese con la creazione di un data base per la gestione di una rete vendita multilivello o meglio chiamata a piramide.
Avrei bisogno di un aiuto nella creazione delle relazioni fra le tabelle che ho creato.
nell'eventualità che qualcuno abbia già realizzato qualcosa di simile mi piacerebbe confrontarne i dati di partenza.

Grazie mille
Serena

alx_81 Profilo | Guru

>ciao a tutti,
ciao

>sono alle prese con la creazione di un data base per la gestione
>di una rete vendita multilivello o meglio chiamata a piramide.
>Avrei bisogno di un aiuto nella creazione delle relazioni fra
>le tabelle che ho creato.
>nell'eventualità che qualcuno abbia già realizzato qualcosa di
>simile mi piacerebbe confrontarne i dati di partenza.
siccome mi sembra che tu stia parlando di gerarchia, credo che dovresti darti una bella letta ai vari tipi di implementazioni:
Parent-Child: http://msdn.microsoft.com/en-us/library/ms174846.aspx
oppure Materialized path/Nested sets: http://www.rampant-books.com/art_vadim_nested_sets_sql_trees.htm

un manuale che può servirti scritto da Joe Chelko: http://www.computermanuals.co.uk/scripts/browse.asp?ref=669251

>Grazie mille
di nulla!

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

groser Profilo | Newbie

e qualcosa di un pò meno complicato???....

alx_81 Profilo | Guru

>e qualcosa di un pò meno complicato???....
il problema non è semplice per nulla, la gestione delle gerarchie pretende un pochino di studio per implementarle come si deve.
Considera che una parent child è molto semplice da implementare (sono solo due campi, iditem e idparent, e poi le chiamate ricorsive le puoi fare con le CTE se usi sql a partire dalla 2005).
Una materialized path è semplicemente scrivere un path in stringa e con delle like a destra ricavi tutta la gerarchia a partire da un livello.
La teoria può essere complicata, ma l'implementazione è relativamente semplice.
Cerchiamo comunque di entrare più nel dettaglio, ogni livello cosa deve essere per te?
Cosa fai effettivamente in dettaglio? Potresti cavartela con una tabella parent child o mpath (considera che la gestione che sto seguendo è una gerarchia di eventi sportivi.. potrebbe essere molto simile).
Proviamo ad entrare un po' più in dettaglio del problema, vediamo se ci si salta fuori.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

groser Profilo | Newbie

premettiamo il fatto che io di access sò i fondamentali e mi "diletto" a smanettarci dentro.
Quindi di tutto quello che tu mi hai scritto e di quello che ho letto c'ho capito 1/10... premesso questo ti dico brevemente il mio "obiettivo"...

Dunque io ho un collaboratore che deve presentarmi almeno altri 2 collaboratori che a loro volta dovranno presentarmii altri 2 collaboratori ciascuno e così via fino al 10 livello di collaboratori. Fatta questa "gerarchia" come la chiami tu, il mio DB dovrebbe riuscire a calcolarmi le provvigioni per ciascun collaboratore in base ad una percentuale che gli imputo io che è del 2%.

Banalmente pensavo di costruire un DB cosi strutturato:
T_collaboratore
T_subcollaboratore1 - T_subcollaboratore2
che queste tabelle sono collegate tra loro da una relazione ( e qui nasce il mio problema, quale relazione definire???).
Pensavo onestamente che Access potesse essermi d'aiuto ma tu mi parli di SQL e altro, quindi mi risulta più complicato.

alx_81 Profilo | Guru

>premettiamo il fatto che io di access sò i fondamentali e mi
>"diletto" a smanettarci dentro.
>Quindi di tutto quello che tu mi hai scritto e di quello che
>ho letto c'ho capito 1/10... premesso questo ti dico brevemente
>il mio "obiettivo"...
access non è il meglio per gestire questo tipo di operazioni.. non puoi utilizzare un bel sql express che ha tutto ed è free?
Se usi access e non sei un po' skillato sulla teoria dei database e delle gerarchie non è un semplice problema da affrontare in effetti.

>Dunque io ho un collaboratore che deve presentarmi almeno altri
>2 collaboratori che a loro volta dovranno presentarmii altri
>2 collaboratori ciascuno e così via fino al 10 livello di collaboratori.
alla fine si tratta di un balanced tree, ogni nodo ha due figli, eccetto a livello foglia dell'albero, corretto?

>Fatta questa "gerarchia" come la chiami tu, il mio DB dovrebbe
>riuscire a calcolarmi le provvigioni per ciascun collaboratore
>in base ad una percentuale che gli imputo io che è del 2%.
esatto.. ci siamo, è una gerarchia multilivello e ti dico.. per me puoi seguire ogni tipo di gerarchia, siccome è readonly (non devi spostare livelli durante il calcolo ma parti da una gerarchia consolidata ed immodificabile durante il calcolo) puoi usare MPATH, questo perchè è molto più veloce e semplice in lettura.

>Banalmente pensavo di costruire un DB cosi strutturato:
>T_collaboratore
>T_subcollaboratore1 - T_subcollaboratore2
>che queste tabelle sono collegate tra loro da una relazione (
>e qui nasce il mio problema, quale relazione definire???).
no, farei una sola tabella con all'interno il path che lega ogni livello

>Pensavo onestamente che Access potesse essermi d'aiuto ma tu
>mi parli di SQL e altro, quindi mi risulta più complicato.
in realtà è una cosa del tutto simile lato dabase.. il problema è l'interfaccia grafica che dovrai sviluppare, se servirà

Se sei d'accordo ti posto un esempio semplice di calcolo, ok?
se vuoi darmi altri dettagli l'esempio sarà più simile alla tua situazione reale.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

groser Profilo | Newbie

>premettiamo il fatto che io di access sò i fondamentali e mi
>"diletto" a smanettarci dentro.
>Quindi di tutto quello che tu mi hai scritto e di quello che
>ho letto c'ho capito 1/10... premesso questo ti dico brevemente
>il mio "obiettivo"...
access non è il meglio per gestire questo tipo di operazioni.. non puoi utilizzare un bel sql express che ha tutto ed è free?
Se usi access e non sei un po' skillato sulla teoria dei database e delle gerarchie non è un semplice problema da affrontare in effetti.

Il mio problema è che poi dovrei far girare questo"programmino" in un pc non molto "moderno" e ho paura che non funzioni più. Ma ci studio sopra e vedo, accolgo il suggerimento.

>Dunque io ho un collaboratore che deve presentarmi almeno altri
>2 collaboratori che a loro volta dovranno presentarmii altri
>2 collaboratori ciascuno e così via fino al 10 livello di collaboratori.
alla fine si tratta di un balanced tree, ogni nodo ha due figli, eccetto a livello foglia dell'albero, corretto? Si esatto

>Fatta questa "gerarchia" come la chiami tu, il mio DB dovrebbe
>riuscire a calcolarmi le provvigioni per ciascun collaboratore
>in base ad una percentuale che gli imputo io che è del 2%.
esatto.. ci siamo, è una gerarchia multilivello e ti dico.. per me puoi seguire ogni tipo di gerarchia, siccome è readonly (non devi spostare livelli durante il calcolo ma parti da una gerarchia consolidata ed immodificabile durante il calcolo) puoi usare MPATH, questo perchè è molto più veloce e semplice in lettura.

>Banalmente pensavo di costruire un DB cosi strutturato:
>T_collaboratore
>T_subcollaboratore1 - T_subcollaboratore2
>che queste tabelle sono collegate tra loro da una relazione (
>e qui nasce il mio problema, quale relazione definire???).
no, farei una sola tabella con all'interno il path che lega ogni livello

>Pensavo onestamente che Access potesse essermi d'aiuto ma tu
>mi parli di SQL e altro, quindi mi risulta più complicato.
in realtà è una cosa del tutto simile lato dabase.. il problema è l'interfaccia grafica che dovrai sviluppare, se servirà

Se sei d'accordo ti posto un esempio semplice di calcolo, ok?
Grazie accetto volentieri.

se vuoi darmi altri dettagli l'esempio sarà più simile alla tua situazione reale.
quali altri dati ti possono servire?

alx_81 Profilo | Guru

>quali altri dati ti possono servire?
in generale la tua entità, com'è fatta.. magari la definizione dell'sql di creazione.
Poi qualche dato di esempio, per popolare una gerarchia verosimile.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

groser Profilo | Newbie

Innanzitutto ho provato a guardare come si utilizza sql server 2008 express... direi un gran casino, da persona che non lo ha mai utilizzato...
ci devo ragionare sopra, soprattutto su come si apre... sono riuscita solo a fare l'installazione!!

per i dati che ti servono ti dò degli esempi:

cod agente
A0001 AC(cognome e nome) presenta A0011 ED (cognome e nome) e A0021 SB ( cognome e nome).
A0011 ED presenta A0111 ET e A0121 RE.
e così via la percentuale di guadagno per ogniuno è 2% sul venduto di minimo €40,00. non mi interessa cosa vendono ma l'importo del venduto.

Spero ti possa servire
Grazie
Serena

alx_81 Profilo | Guru

>ci devo ragionare sopra, soprattutto su come si apre... sono
>riuscita solo a fare l'installazione!!
Ciao Serena,
è diverso da access, che non è solo un database, ma ti offre altre cose come maschere, report integrati, ecc.. Ovviamente ha i suoi rovesci della medaglia (ad esempio non è un database server, non è fatto per una multiutenza, ecc..).
SQL Server è un servizio e l'installazione del servizio deve essere accompagnata (se nella versione express) dall'installazione dell'editor, che puoi trovare qui (http://www.microsoft.com/downloads/it-it/details.aspx?FamilyID=08e52ac2-1d62-45f6-9a4a-4b76a8564a2b).
Detto questo, una volta che l'editor, chiamato SQL Server Management Studio Express, è aperto, crea una nuova query vuota sul tuo database e incolla questo script e poi eseguilo premendo F5 (tranquilla che non fa nulla, crea e distrugge tabelle di demo sul database tempdb).
Spero faccia al caso tuo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

>Grazie
Di nulla!

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

groser Profilo | Newbie

Innanzitutto grazie per l'aiuto che mi stai dando.
Poi volevo dirti che ho installato SQL server 2008, ho aperto managment Studio, ma non riesco a connettermi al server. Penso che ci siano dei parametri errati.
ti allego il print della schermata sperando che tu possa "svelarmi" il mistero di questo errore di connessione.
grazie
Serena

alx_81 Profilo | Guru

>Innanzitutto grazie per l'aiuto che mi stai dando.
speriamo di arrivarci in fondo

>Poi volevo dirti che ho installato SQL server 2008, ho aperto
>managment Studio, ma non riesco a connettermi al server. Penso
>che ci siano dei parametri errati.
>ti allego il print della schermata sperando che tu possa "svelarmi"
>il mistero di questo errore di connessione.
quando si installa sql server devi definire che tipo di autenticazione scegli. Se scegli mixed mode devi fornire la pwd dell'utente sa e selezionare quale è l'utente windows che sarà anche admin, se scegli solo windows devi specificare quale utente windows sarà amministratore.
Secondo me, se il nome del tuo pc è quello e l'istanza è SQLEXPRESS (default, quindi dovrebbe essere tutto ok) potremmo dover reinstallare sql server.
prova a reinstallare sql server (tanto siamo all'inizio) e al momento dell'autenticazione, scegli mixed, fornisci una password per l'sa e poi imposta l'utente che installa (Add current user) come utente amministratore. L'hai installato con la tua utenza?

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

groser Profilo | Newbie

Torno a chiederti un aiuto in quanto ho provato a gestire il mio DB con SQL ma ci devo studiare un pò e dato i miei tempi un pò ristretti ho rispolverato il mio DB in Access.
Ora però ho un problema e volevo sapere se ti andrebbe di aiutarmi a risolverlo, ovviamente in access.
io inizio ad accennartelo e poi vediamo.
Ho creato le mie tabelle e le mie maschere in modo da poter inserire i miei dati e fin qui ci sono. Ora i miei problemi sono:
1 - quello di far risultare nel mio Report finale ( chiamato R_Fattura) il prodotto fra il nr dei miei affiliati ed il valore specificato di 2,00€ (valore assegnato manualmente ad ogni affiliato)
2 - Creare una queri di controllo sul nominativo che si è fermato, cioè che non mi stà portando contatti (Q_inattivi)

Sò che ti chiedo tanto ma ti allego ilfile in zip in modo che se vuoi dargli un'occhiata e magari risìesci ad aiutarmi ti sono grata.
Grazie
Serena

alx_81 Profilo | Guru

>Sò che ti chiedo tanto ma ti allego ilfile in zip in modo che
>se vuoi dargli un'occhiata e magari risìesci ad aiutarmi ti sono
purtroppo, per scelta, non ho access, quindi non riesco ad aiutarti. Però, svisceriamo punto per punto:

>1 - quello di far risultare nel mio Report finale ( chiamato R_Fattura) il prodotto fra il nr dei miei affiliati ed il valore
>specificato di 2,00€ (valore assegnato manualmente ad ogni affiliato)
puoi fare quanto ho scritto nell'esempio con semplici cicli in VBA. Ma devi cmq partire secondo me da una struttura gerarchica.
O anche da quella che hai, fatti un bel programmino che produce la tabella che ti serve e poi fai il report su quello. Segui l'indicazione dell'sql che ti ho fatto e traducilo in VBA.

>2 - Creare una queri di controllo sul nominativo che si è fermato,cioè che non mi stà portando contatti (Q_inattivi)
in che contesto? Quando va fatto il controllo? c'è una procedura? Prova a postare come sono fatte le tabelle, e cosa vorresti ottenere dalla query
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5