Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
[SQL 2000] Ho un dubbio sulla fattibilità su PREVENTIVO e VERSIONE PRE...
domenica 11 gennaio 2009 - 20.59
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
plaguebreath
Profilo
| Junior Member
115
messaggi | Data Invio:
dom 11 gen 2009 - 20:59
Salve a tutto il meraviglioso forum, sono un novizio di sql 2000 e sto buttando giù uno schizzo per un piccolo progetto in VB EXPRESS 2005 e ADO.NET per una gestione preventivazione, l'idea era quella di avere un una tabella Preventivo con chiave IDPreventivo e poi la distinzione per versione dello stesso partendo da 00 fino a 99 eventualmente. Mi era venuto in mente di usare una chiave composita però leggendo alcuni commenti ho pensato che non era il caso di complicarsi troppo la vita. La particolarità secondo me è che in caso di nuovo preventivo il codice identificativo della versione del preventivo dovrebbe resettarsi automaticamente a 00 altrimenti dovrebbe essere incrementata con passo 1. Che metodo potrebbe essere il migliore per strutturare un database in questo modo ? Grazie a tutti per ogni suggerimento.
(PS: credo che sia come la gestione Master Detail però non ho capito come gestire in questo caso la numerazione del Detail ..)
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 15 gen 2009 - 00:49
>Salve a tutto il meraviglioso forum
ciao e un sentito grazie dallo staff
>Mi era venuto in mente di usare una
>chiave composita però leggendo alcuni commenti ho pensato che
>non era il caso di complicarsi troppo la vita.
Diciamo che nel tuo caso potresti pensare ad un IDPreventivo autoincrementante come chiave primaria surrogata (per comodità poi nelle relazioni). Ma puoi comunque gestire una coppia CodicePreventivo/Versione come chiave logica (impostando un vincolo di univocità).
>La particolarità secondo me è che in caso di nuovo preventivo il codice identificativo
>della versione del preventivo dovrebbe resettarsi automaticamente
>a 00 altrimenti dovrebbe essere incrementata con passo 1. Che
>metodo potrebbe essere il migliore per strutturare un database
>in questo modo ?
Credo che il db non sia la parte più interessata dal problema. A mio avviso il database deve avere una struttura simile a questa (inventata, quindi modificala opportunamente):
IDPreventivo int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED
CodicePreventivo smallint NOT NULL
Versione tinyint NOT NULL
....
E' l'applicazione che gestirà il database che inserirà uno 0 nel caso in cui il preventivo sia nuovo e un MAX(Versione) + 1 WHERE CodicePreventivo = @TuoCodice nel caso in cui sia un incremento di versione per un preventivo preesistente.
>Grazie a tutti per ogni suggerimento.
di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
plaguebreath
Profilo
| Junior Member
115
messaggi | Data Invio:
gio 15 gen 2009 - 07:45
Grazie mille per la spiegazione, non mi è chiaro però (sono un principiante di SQL) questa voce PRIMARY KEY CLUSTERED, cosa fa esattamente ?
Una cosa del genere in ottica di programmazione su ADO.NET (quindi logica disconnessa) è fattibile utilizzando ad esempio stored procedure o funzioni ? Grazie per la gentilezza.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 15 gen 2009 - 09:50
>Grazie mille per la spiegazione, non mi è chiaro però (sono un
>principiante di SQL) questa voce PRIMARY KEY CLUSTERED, cosa
>fa esattamente ?
Eh questo è un discorso lungo. In brevissimo:
PRIMARY KEY è la chiave primaria, ovvero quel o quei campi che rendono univoco il record. Mentre l'altro attributo definisce il modo con cui l'indice sulla chiave viene creato.
Se però non conosci questi termini, ti consiglio di dare una bella letta a qualche manuale di sql server, perchè è importante conoscere le basi prima di muoversi.
>Una cosa del genere in ottica di programmazione su ADO.NET (quindi
>logica disconnessa) è fattibile utilizzando ad esempio stored
>procedure o funzioni ?
A te non interessa creare alcuna logica, la stored procedure immagino che farà solo una insert (o al massimo una update). E' l'applicazione che gestirà le logiche del preventivo.
La cosa migliore, a mio modo di vedere, è fare un livello applicativo (web o windows) che, tramite interfaccia utente ben pensata, permetta di inserire un nuovo preventivo o di aggiornarne un'altro. In ognuno dei due casi, la stored procedure che lanci è la medesima, con la medesima insert, così ti tieni la storia di tutti i preventivi.
>Grazie per la gentilezza.
Di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
plaguebreath
Profilo
| Junior Member
115
messaggi | Data Invio:
gio 15 gen 2009 - 12:32
Grazie mille per la chiarezza, allora ti chiedo subito una cosa, mi dai un consiglio du un buon libro per sql 2000 e eventualmente sql 2005 ? Tu dici che comunque secondo te per dialogare su Ado.Net per intercettare il numero di versione non mi serva usare una stored procedure magari parametrica che in output mi da il max(verprev)+1 ? Grazie ancora per la cortesia.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 15 gen 2009 - 12:37
>mi dai un consiglio du un buon libro per sql 2000 e eventualmente
>sql 2005 ?
segui questo thread:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=23061
>Tu dici che comunque secondo te per dialogare su Ado.Net
>per intercettare il numero di versione non mi serva usare una
>stored procedure magari parametrica che in output mi da il max(verprev)+1?
puoi fare una stored procedure che prima seleziona e salva in una variabile il max +1 e poi lo inserisce nella tabella.
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
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 !