Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
In occasione del proprio Snapdragon Summit Qualcomm annuncia i due nuovi chip per dispositivi mobile di fascia alta che entreranno nel mercato nel corso del 2027: tanta potenza a disposizione per elaborazioni di intelligenza artificiale sempre più complesse
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
Hogwarts arriva in fascia media grazie a realme, con una special edition che unisce la Quadra Light-Sensing Color-changing Tech, un baule in stile Hogwarts Express pieno di collezionabili e una scheda tecnica sostanzialmente identica al 16 Pro di partenza: ecco cosa cambia davvero, come si comporta nell'uso quotidiano e quanto vale in base al prezzo di 699,99 euro
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-11-2015, 10:59   #1
_Mara_
Junior Member
 
Iscritto dal: Apr 2015
Messaggi: 15
Struttura database: dubbio su relazioni

Buongiorno a tutti,
ho 2 tabelle: 'Manager' e 'Agenti' (ciascuno di questi fa riferimento a un determinato manager) legate nel modo seguente:
SELECT * FROM Agenti INNER JOIN Manager ON Agenti.fk_manager = Manager.pk_manager
Struttura
[Manager]
id_manager
(...)

[Agenti]
id_agente
fk_manager
(...)

Ora devo tenere conto anche delle vendite di ciascuno di loro quindi pensavo 2 possibili strade:
Aggiungo nelle rispettive tabelle un campo 'numero_vendite' (datatype: int)
oppure
creo tabella 'Vendite' dove inserirò campo numerico e un generico campo persona dove inserisco id_manager o fk_agente?

Ultimo dubbio: nel primo caso se mi chiedesseo uno storico degli aggiornamenti del numero vendite come potrei fare?

Grazie
Mara
_Mara_ è offline   Rispondi citando il messaggio o parte di esso
Old 09-11-2015, 14:31   #2
-MiStO-
Senior Member
 
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2288
ho qualche dubbio: le vendite le fanno solo gli agenti o anche i manager?
perchè vedo che vorresti inserire nell ipotetica tabella vendite o l'id dell'agente o quello del manager...

num. vendite concettualmente non è un attributo di agente quindi per me è sbagliato modellarlo all interno della tabella agente

in ogni caso, a mio modo di vedere la soluzione piu pulita è fare una tabella vendite separata, contenente tutti i dati relativi alla singola vendita, tra cui suppongo importo e data (fondamentale per poter pensare ad uno storico) e con chiave esterna l'id dell'agente che l'ha effettuata.

lo storico in questo modo ti viene "gratis": query su vendite per data e via felice

sul tuo dubbio: devi per forza avere una data a cui fare riferimento per avere uno storico, quindi agente dovrebbe avere due nuovi campi ad esempio "num vendite" e "anno vendite"(o mese/anno a seconda del dettaglio che ti serve), ma francamente lo trovo brutto perchè duplicheresti gli agenti per ogni nuova entry di vendita (num vendite, data)
__________________
neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w
trattative concluse : tante...


Ultima modifica di -MiStO- : 09-11-2015 alle 14:36.
-MiStO- è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2015, 08:46   #3
_Mara_
Junior Member
 
Iscritto dal: Apr 2015
Messaggi: 15
Quote:
Originariamente inviato da -MiStO- Guarda i messaggi
ho qualche dubbio: le vendite le fanno solo gli agenti o anche i manager?
perchè vedo che vorresti inserire nell ipotetica tabella vendite o l'id dell'agente o quello del manager...
Esatto, sia manager che agenti fanno N vendite per cui devo tenere traccia dei valori.
Infatti pensavo alla tabella 'Vendite' dove in un generico campo 'id_persona' inserisco id_venditore oppure fk_agente con i suoi attributi.

Non l'avevo scritto ma avevo pensato al discorso data per poi gestire lo storico... grazie del suggerimento :-)

Grazie
Mara
_Mara_ è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2015, 10:19   #4
_Mara_
Junior Member
 
Iscritto dal: Apr 2015
Messaggi: 15
Quote:
Originariamente inviato da -MiStO- Guarda i messaggi

in ogni caso, a mio modo di vedere la soluzione piu pulita è fare una tabella vendite separata, contenente tutti i dati relativi alla singola vendita, tra cui suppongo importo e data (fondamentale per poter pensare ad uno storico) e con chiave esterna l'id dell'agente che l'ha effettuata.
Ho un dubbio nella realizzazione:
tab. 'Vendite' (con dati di esempio)
IDvendite | IDpersona |
1 | 1 -- ID di un manager |
2 | 2 -- ID di un agente |
.. | ..
Come faccio a discriminare se l'ID nel campo IDpersona si riferisce a manager o agente?
Lavoro con SQL Server e studio management come tool per creare relazioni e query.

Graficamente posso utilizzare tabella 'Vendite' 2 volte dovendola mettere in relazione sia con id_manager e id_agente?
In pratica: creo 1^ relazione 'Vendite'/'Manager' e poi 2^ relazione 'Vendite_1'/'Agenti': è un'operazione lecita?

Grazie!
Mara
_Mara_ è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2015, 16:13   #5
cdtux
Member
 
L'Avatar di cdtux
 
Iscritto dal: Nov 2015
Messaggi: 67
In una situazione del genere, ho risolto inserendo un campo TIPO nella tabella utente (assegnando ad es. 0 per il manager e 1 per l'agente) per distinguere le varie tipologie.

Non so se è la soluzione migliore, comunque nel mio caso ha funzionato perfettamente.
cdtux è offline   Rispondi citando il messaggio o parte di esso
Old 11-11-2015, 11:44   #6
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
La soluzione è la normalizzazione: crei una tabella "anagrafica" nella quale inserisci tutte le persone indipendentemente dal loro ruolo, in questo modo la tabella vendite potrà referenziare indifferentemente i manager e gli agenti. Per distinguere il ruolo delle persone puoi utilizzare un semplice campo enum nella tabella anagrafica; se i due ruoli necessitano di campi distinti non usare il campo enum, crea invece due tabelle - agenti e manager - con i soli campi differenziati e vi inserisci una relazione con l'anagrafica.
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2015, 08:47   #7
-MiStO-
Senior Member
 
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2288
han già detto quasi tutto

la soluzione di cdtux è la più rapida e funzionale se non hai bisogno di altre query

Daniels118 invece propone bene di suddividere ulteriormente la base di dati, più flessibile come soluzione:avere un anagrafica "persona" e le tabelle "agente" e "manager" per discriminare sul tipo ti permette, quasi aggratis aggiungendo la relazione tra agenti e manager, tutta una serie di query come "tutti gli agenti di un manager", "tutte le vendite degli agenti di un manager" ecc ecc

come sempre, dipende dal grado di dettaglio desiderato
__________________
neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w
trattative concluse : tante...

-MiStO- è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2015, 09:39   #8
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
Aggiungo che, visto che c'era la possibilità che venisse chiesto uno storico, si potrebbe ulteriormente normalizzare la base dati anche nella dimensione del tempo, ovvero trasformare le tabelle agente e manager in un'unica tabella denominata rapporto_di_lavoro, avente i seguenti campi:
- id_anagrafica
- tipo_rapporto (enum: {agente, manager})
- data_inizio_rapporto
- data_fine_rapporto
Invece che referenziare direttamente l'anagrafica, le vendite potrebbero puntare al rapporto di lavoro, in questo modo se una persona cambia ruolo puoi facilmente distinguere se le vendite di quella persona sono state fatte in qualità di manager o di agente e in quale periodo (senza necessariamente escludere la possibilità di avere un campo data_vendita nella tabella vendite). Avere una tabella unica ti consente inoltre di poter aggiungere in futuro eventuali nuovi ruoli senza modificare lo schema del database.
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2015, 10:49   #9
_Mara_
Junior Member
 
Iscritto dal: Apr 2015
Messaggi: 15
Preziosissimi!

A presto per altre domande.
Mara
_Mara_ è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
Apple rilascia le prime beta pubbliche d...
La Terra di Mezzo: L'Ombra di Mordor e L...
iPhone 18 Pro e Pro Max smontati da iFix...
Control Resonant supera i 2 milioni di w...
Anker porta in Italia gli auricolari ope...
Googlebook, preordini aperti per i primi...
MSI Pro Max Edge AI+: fino a 96 GB di me...
Trump propone di cambiare il nome dell'i...
Sennheiser MOMENTUM 5 a 299€ invece di 3...
Il prossimo Halo sarà sviluppato ...
Philips Sonicare contro Oral-B iO: spazz...
DJI Osmo Action 4 Combo Essential a 194€...
Google porta i giochi su Android Auto e ...
NVIDIA Smooth Motion arriva sulle RTX 30...
ASUS GPU Tweak III introduce lo spegnime...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:33.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v