Newsgroup: it.comp.lang.visual-basic
Titolo: Programmare database

Ciao a tutti,
vorrei cominciare lo studio di database dall' inizio
con VB.net e msde ,vorrei  anche impara a gestirlo
con la programmazione ad oggetti,  da dove comincio ? ciao Maria


Domanda da 1 Milione di Dollari :)))
Vabbeh dai, cerco di aiutarti.
Iniziamo col dire che MSDE è abbastanza potente e complesso.
Con MSDE puoi creare 2 tipi diversi di database: quelli semplici
Access e quelli SqlServer.
Personalmente ti consiglio di studiarti direttamente i secondi.
SqlServer è un RDBMS. Cosa significa questo?
Significa che non devi ragionare in termini di "record" ma in
termini di righe e colonne.
Le righe corrispondono all'insieme dei dati, mentre le colonne
all'insieme dei meta-dati.
I meta-dati sono le "etichette" del database, descrivono cioè
la struttura logica dello stesso.
Gli RDBMS sono generalmente composti di due parti: un server
ed uno o più client.
Il server è quel programma che effettivamente gestisce il database,
mentre i client sono i programmi che fanno le richieste( "query" ) al
programma server.
Siccome possono esserci più client che richiedono un medesimo
dato al server, si dice che il server "fa un lock"( cioè blocca ) uno
specifico insieme di dati nell'intorno del dato del richiesto.
Quando si fa una query, essa fa parte di una transazione.
Una transazione è una rappresentazione atomica di una o
più operazioni componenti.
Per capirci, supponiamo di dover fare un bonifico da un conto
ad un altro.
Senza transazioni, io prelevo da un conto e verso nell'altro,
ma se qualcosa va storto, qualcuno potrebbe ritrovarsi con
un ammanco senza un rispettivo accredito o viceversa.
Con una transazione, se qualcosa va storto si torna indietro( "rollback" )
mentre se tutto va bene si conferma( "commit" ).
Passiamo alla progettazione di un database.
Questo argomento da solo dovrebbe occupare un post
enorme, quindi ti dò solo qualche indicazione di base
giusto per farti capire in che direzione devi muoverti.
La progettazione di un DB dovrebbe essere "aim-oriented"( orientata allo
scopo ).
Per le applicazioni "tradizionali"( agenda telefonica, contabilità, ecc ) le
regole
di base sono poche e semplici:
1) Per il database scegli un nome descrittivo( meglio "Fatture" piuttosto
che "DB1" ).
2) Per le colonne scegli un nome descrittivo( meglio "ID_Fattura" che
"CampoID" ).
3) Per le colonne scegli un tipo di dato appropriato( se puoi scegliere un
tipo di dato
per l'ID, preferiscine uno numerico che è più facile da gestire ).
4) Mai mettere più insiemi di dati in una sola colonna( meglio "Via","CAP" e
"Città"
piuttosto che "Indirizzo" ).
5) Cerca di mantenere le colonne di una tabella omogenee ed organiche
pur nella loro diversità( non mettere il campo "Nome cliente" nelle
anagrafiche fornitori ).
6) Limitare al minimo le ridondanze( nella tabella Ordini, basta "IdCliente"
anziché "Nome cliente"
e "Cognome cliente" ).
Ah, ma non ti ho ancora parlato delle tabelle?
Beh, le tabelle sono quelle strutture logiche che compongono il database
in quanto tale.
Vabbeh, ora ti faccio un esempio di Database, così ti rendi conto( metto
solo i nomi dei
campi, per i tipi vedi tu ).
Database Gestione Ordini
Tabella Anagrafiche
ID_Anagrafica
Cognome
Nome
Via
CAP
Città
Stato
Nazione
Prefisso tel ufficio
Numero tel ufficio
Prefisso tel cellulare
Numero tel cellulare
Indirizzo Email
Web address
Tabella Clienti
ID_Cliente
ID_Anagrafica
Data primo contatto
Totale valore ordini
Tabella Ordini
ID_Prodotto
ID_Fattura
Data
Numero pezzi
Tabella Prodotti
ID_Prodotto
Nome prodotto
Descrizione prodotto
Costo pezzo
Tabella Magazzino
ID_Prodotto
Quantità
Data ultimo inventario
Tabella Fornitori
ID_Fornitore
ID_Anagrafica
Data primo contatto
Tabella Fatture
ID_Fattura
ID_Cliente
Totale fattura
Ecco, questa è una struttura abbastanza abbozzata per una gestione ordini.
Naturalmente non è il massimo, ma ti da una idea di come si lavora.
Noterai che gli ID sono molto usati, questo naturalmente per ridurre al
minimo
il lavoro necessario al fine di gestire tutto.
Quando vedi degli ID che non sono logicamente collegati con il resto delle
colonne,
essi sono detti "chiavi esterne", mentre quando sono logicamente collegati
al resto delle colonne nella tabella, sono detti "chiavi primarie".
Quando una chiave primaria viene collegata alla rispettiva chiave esterna,
allora si dice che viene stabilita una "relazione" tra le due tabelle.
La tabella con la chiave primaria è chiamata tabella master,
mentre quella con la chiave esterna è detta tabella detail.
Le relazioni sono di tantissimi tipi diversi, ed elencarle tutte è
praticamente
impossibile. La più comune, comunque, è la relazione uno a molti.
In questo tipo di relazione, un solo record nella tabella master
può essere collegato a molti record nella tabella detal.
Nell'esempio sopra, molte fatture possono essere collegate
ad un cliente, ma è improbabile che vi siano molti clienti collegati
ad una stessa fattura.
Non ho preteso di essere esauriente, ci sarebbero ancora tantissime cose
da dire, ma sicuramente questo ti dà un "kickstart" non indifferente.
Studia!!!! :))
Ciao
Andrea

Ciao Andrea
 mi hai dato la partenza, ed e' propio quello
che voglio fare , concordo con te, MSDE voglio usarlo x abituarmi
ai database SQL.
1° domanda. Quali libri per aiutarmi a costruire la struttura ?
Tabelle,campi,indici... quello di cui mi hai parlato tu.
Per il momento voglio cominciare con la classica rubrica telefonica in
monoutenza e in un secondo momento alla multiutenza, per ultimo se DIO
vorra' al client-server.
Per la parte di accesso ai dati voglio utilizzare VB.net.
2° domanda. Ci sono libri per .net che mi spiegano in che modo strutturare
gli oggetti x l' accesso ai dati?.
Ho gia una buona conoscenza sulla prog. ad oggetti (VB5, VB6)
ma non per gestire database, so' per esperienza che mi dirai che essendo
un modello astratto dovro' adattarlo alle mie esigenze pero', vorrei un
testo di base che non mi faccia compiere errori grossolani, sopprattutto per
VB.net che avra' sicuramente un nuovo approccio a oggetti .
Come mi dici tu .... STUDIA!!!... ma quali libri x msde e 
vb.net
?
Saluti Maria.
Mi sa che tra non molto vi travolgo di domande :-))

 Mi sa che tra non molto vi travolgo di domande :-))
Fai pure, siamo qui!!! :)