MSDE istruzioni per l'uso (parte 2) - Creazione di un database MSDE
a cura di Sabrina Cosolo (requisiti: conoscenza generica di Access e database SQL)
<Precedente Successiva> Lavorare con MSDE:
Come si Costruisce un DB usando MSDE e Access 2000 (in XP è praticamente lo stesso!)
Definiamo il nostro Case Study. Scavando nei meandri del mio PC ho trovato un DB che magari può far piacere a qualcuno provare a realizzare per se stesso, si chiama MusicBox e serve per gestire la mia collezione di CD anche se credo che con qualche estensione potremmo esagerare e gestire anche VHS e DVD. Vediamone la struttura:
Tabella Funzione Struttura MDB tbBrani Brani contenuti nei CD
Nome Tipo Lunghezza IDBrano Contatore 4 NumBrano Numerico (Long) 4 TitoloBrano Testo 128 IDCd Numerico (Long) 4 IDInterprete Numerico (Long) 4 IDRitmo Numerico (Long) 4 IDCatMusicale Numerico (Long) 4 tbCaseDisc Case Discografiche
Nome Tipo Lunghezza IDCasaDisc Contatore 4 Nome Testo 128 tbCate Categoria CD
Nome Tipo Lunghezza IDCate Contatore 4 Nome Testo 50 tbCatMusicali Categoria Musicale Brano
Nome Tipo Lunghezza IDCatMusicale Contatore 4 Nome Testo 50 tbCd Dati del CD
Nome Tipo Lunghezza IDCd Contatore 4 Titolo Testo 128 IDInterprete Numerico(Long) 4 Anno Numerico(Long) 4 IDCasaDisc Numerico(Long) 4 IDCate Numerico(Long) 4 IDCdISBN Testo 16 tbInterpreti Dati dell'Interprete
Nome Tipo Lunghezza IDInterprete Contatore 4 Nome Testo 128 TiPers Testo 1 IDGruppo Numerico(Long) 4 tbRitmi Ritmo del brano
Nome Tipo Lunghezza IDRitmo Contatore 4 Nome Testo 50 Come potete notare, è un Database quasi normalizzato ovvero nessun dato viene ripetuto su più tabelle, la sola eccezione è l'Interprete perché solitamente è uno solo, ma nelle compilation è diverso per ogni brano.
Vediamo ora come si sviluppano le relazioni tra le tabelle:
Campo Tabella secondaria Tipo di relazione Chiave Esterna tbCd.IDInterprete Molti a 1 (Molti CD x 1 Interprete) tbInterpreti.IDInterprete tbCd.IDCasaDisc Molti a 1 tbCaseDisc.IDCasaDisc tbCd.IDCate Molti a 1 tbCate.IDCate tbBrani.IDCd Molti a 1 (Molti Brani x 1 CD) tbCd.IDCd tbBrani.IDInterprete Molti a 1 tbInterpreti.IDInterprete tbBrani.IDRitmo Molti a 1 tbRitmi.IDRitmo tbBrani.IDCatMusicale Molti a 1 tbCatMusicali.IDCatMusicale tbInterpreti.IDGruppo Molti a 1 tbInterpreti.IDInterprete La relazione di una tabella (tbInterpreti) su se stessa è stata inserita per rendere le cose più interessanti.
Cosa dobbiamo fare per realizzare questo database su MSDE usando Access:
- Generare un Progetto Database Access
- Generare il Database e connetterci
- Generare le tabelle
- Generare le relazioni
Pratica: Apriamo Access 2000 e selezioniamo la generazione di un nuovo progetto. Nella finestra Nuovo progetto, sezione Generale, selezioniamo Progetto (Database Nuovo).
Selezioniamo una cartella su cui salvare il Progetto (attenzione il progetto contiene solo programma e interfaccia, non contiene i dati). Chiamiamo il nostro Progetto MusicBox e Premiamo il tasto Crea. Il file Progetto sarà salvato col nome di Musicbox.adp Ci appare la maschera di Creazione guidata Database: nella combo "Indicare il database SQL Server..." selezioniamo "." (punto dovrebbe essere proposto in automatico, è l'istanza di default di SQL Server ovvero l'istanza del computer locale). Se ci sono più SQL Server in rete, nella combo dovremmo trovarne l'elenco. Come ID di Accesso, avendo noi appena installato MSDE, useremo l'utente di default "sa" senza alcuna Password.
Si può generare utenti e cambiare le password, volendo, ma per farlo, non essendo inclusi nell'MSDE gli strumenti di Amministrazione Grafica, bisogna programmare un po' in SQL, più avanti potrei dedicare un articolo alla cosa, se ve ne sarà interesse.Nella combo Nome da assegnare al nuovo Database lasciamo il nome proposto "MusicBoxSQL"
Premiamo Avanti>
Abbiamo terminato la generazione del Progetto Database e del Database, ora nella cartella selezionata per il progetto troveremo un File MusicBox.adp in cui andremo ad implementare il nostro Database. Mentre nella cartella Dati di SQL Server (Per l'installazione di default C:\MSSQL7\Data) Troveremo due nuovi File
- MusicBoxSQL.MDF
- MusicBoxSQL.LDF
Che contengono i Dati ed il Log delle transazioni del nostro database. Premiamo il tasto Fine
A questo punto, il nostro progetto Access avrà un aspetto familiare: la finestra Database di Access con alcune piccole differenze: tre cartelle in più (Visualizzazioni, Diagrammi di database, Stored procedure) ed una in meno (Query).
Potete notare anche che non ci sono Creazioni guidate se non su Maschere e Report.
Proviamo ad inserire la nostra prima Tabella usando "Crea una tabella in Visualizzazione struttura".
Se non appena facciamo partire la maschera sembra che Access si sia piantato, probabilmente stiamo lavorando su Windows 2000 o XP, ebbene: vi invito a osservare l'angolo in alto a sinistra del vostro schermo che ho riportato sull'immagine a fianco. C'è una finestra senza nome, cognome o numero di scarpe, non so se questa sia una anomalia di Windows XP o 2000 oppure dovuta a ciò che è installato sul mio PC, ma io la prima volta non me ne sono accorta e ho terminato Access. Invece, basta battere <Invio> e arriviamo alla pagina di definizione della tabella che è quasi identica a quella di SQL 7.0, a mio avviso più immediata e pratica di quella di Access, ma pare che alla Microsoft la pensino diversamente: infatti in SQL 2000 e Access XP la finestra è stata strutturata come per gli MDB Access con le proprietà dei campi inseriti in una tabbed dialog a Piè Pagina.
La maschera per l'inserimento delle tabelle è la seguente: Viene richiesto subito un nome per la tabella e poi vanno specificati tutti i dati dei campi. Inserisco i dati della nostra Tabella Brani, prima di proseguire con le note: Come potete vedere, per definire la colonna contatore, ho tolto il flag Ammetti Null ed ho impostato il flag Identità, in questo modo viene proposto automaticamente l'Inizio Identità e l'Incremento Identità che possono comunque essere modificati. Usando il tastino con la Chiave sulla toolbar e selezionando la riga del campo IDBrano, ho impostato il campo come chiave primaria. Un'altra cosa che potete notare è che il tipo di campo è diverso: infatti ha la dicitura "int"; gli interi SQL sono sempre Long, gli interi a 2 byte sono indicati con il tipo Smallint e gli interi a un byte come Tinyint. Un'altra piccola variazione che ho fatto è quella di usare un campo "Varchar" per la stringa anziché un "Char" (Testo) che pure esiste ed è legale. La differenza fra i due è che un Char ha lunghezza costante (in questo caso occupa 128 byte anche se non è pieno), un Varchar occupa solo lo spazio che gli serve. Per contro, il Varchar occupa sempre alcuni byte per definire la propria lunghezza e forma, perciò è buona cosa usarlo solo su variabili + lunghe di una decina di byte. La trattazione dei tipi di dati di SQL è lunga più o meno un altro articolo, vi rimando a MSDN nella documentazione di T-SQL. Attenzione che in SQL Server i campi Text corrispondono ai Memo di MDB.
A questo punto, esempio alla mano, procederete (così come faccio io immediatamente) a inserire le altre tabelle dati con il proprio ID contatore e la propria Primary Key.
Una volta inserite le tabelle, andremo a disegnare le relazioni utlizzando la finestra "Diagrammi di Database" che troviamo sulla barra degli strumenti del nostro Progetto ADB. Premiamo il tasto "Crea un Diagramma nella finestra..." e otterremo la finestra seguente (anche qui ci sarà, se siete fortunati, la finestrina vuota per cui è necessario premere il tasto <Invio>).
Dopo avere aperto la finestra di progettazione, avrete un diagramma vuoto con la tabella Mostra Tabelle aperta.
Aprite la cartella Tabelle e trascinate le tabelle nella finestra diagramma così come nell'immagine qui sotto.Proviamo ora ad impostare la prima relazione tbBrani.idCD -> tbCD.IDCd:
Trasciniamo il campo idcd di tbBrani su idcd di tbCd
Appare la finestra Crea relazione. A differenza degli MDB, dove le relazioni sembravano non avere alcun identificativo (ne avevano uno implicito), in un Database SQL bisogna esplicitamente dare a ciascuna relazione un nome significativo. Le linee guida Microsoft consigliano di chiamare le relazioni su chiave esterna (Foreign Key) FKqualcosa, infatti la proposta automatica del Nome relazione è "FK_tbBrani_tbCd" che noi lasceremo tal quale. Un'altra buona pratica indicata da Microsoft e applicata a questo esempio è quella di dare ai campi delle Foreign Key lo stesso nome su entrambe le tabelle perché rendono migliore la leggibilità del Database.Possiamo procedere allo stesso modo per tutte le relazioni indicate prima in modo da costruire il nostro Database.
A questo punto, se vogliamo, possiamo lavorare con Access andando nella cartella Maschere a generare le nostre maschere, oppure con VB 6 costruendo la nostra Interfaccia per la gestione del DB, ma questo non è argomento di questo articolo.
<Precedente Successiva>