Microsoft Access Creazione Tabelle, Relazioni e Popolazione Data Base
Contratti telefonici (requisiti) Si progetti la base di dati per la gestione dei contratti telefonici di un operatore mobile. Il cuore del servizio è il contratto telefonico. Questo viene identificato dal numero di telefono ed è caratterizzato dalla data di attivazione del numero. In particolare, i contratti telefonici sono suddivisi in contratti a ricarica e contratti a consumo: per i primi, si ha il credito residuo; per i secondi, si hanno i minuti residui del mese. Ai contratti è normalmente associata una SIM la quale è identificata da un codice ed è caratterizzata dal tipo. Le SIM attualmente associate ad un contratto sono attive. Per le SIM attive si vuole sapere la data di attivazione. Si noti che possono esserci contratti temporaneamente senza SIM e che alcune SIM posso essere state disattivate. In questo caso, è di interesse conoscere oltre a quella che era la data di attivazione, anche la data di disattivazione e quale era il contratto telefonico su cui erano state attivate. Infine, per ogni contratto si registrano alcune informazioni sulle telefonate effettuate. Una telefonata è identificata da un numero univoco nell ambito del contratto, dalla data e ora, dalla durata, dal costo (deliberatamente non si vuole sapere il numero di telefono chiamato). Si svolga il progetto concettuale della base di dati.
Schema concettuale (schema ER) minuti residui numero data attivazione Consumo Ricarica (T, e) Contratto telefonico (0, 1) (0, n) (0 n) effettuata da credito residuo id associata a era associata a (1, 1) Telefonata data ora data attivazione (1, 1) Attiva Non Attiva (1, 1) Disattivata data attivazione costo durata (T, e) data disattivazione SIM codice tipo_sim
Modello Logico (relazionale) Telefonate (id, effettuata_da, data, ora, durata, costo) Contratti_telefonici(numero, data_attivazione, tipo, minuti_residui*, credito_residuo*) Constraints su Contratto_tel: (tipo= consumo AND minuti_residui is not null AND credito_residuo is null) OR (tipo= ricarica AND minuti_residui is null AND credito_residuo is not null) SIM_non_attive (codice, tipo_sim) SIM_attive (codice, tipo_sim, associata_a, data_attivazione) Indice senza duplicati su SIM_attive (associata_a) SIM_disattivate (codice, tipo_sim, era_associata_a, data_attivazione, data_disattivazione)
Creazione Tabelle 1) Creazione tabella Contratti_telefonici numero Chiave Primaria data_attivazione Data/ora tipo Valido se: contratto Or ricaricabile minuti_residui credito_residuo Numerico Numerico Constraints su Contratti_telefonici: (tipo= consumo AND minuti_residui is not null AND credito residuo is null) OR (tipo= ricaricabile AND minuti_residui is null AND credito residuo is not null) ([tipo]='consumo' And Not IsNull([minuti_residui]) And IsNull([credito_residuo])) Or ([tipo]='ricaricabile' And IsNull([minuti_residui]) And Not IsNull([credito_residuo]))
Popolare le tabelle È possibile inserire i dati nella tabella manualmente andando a modificare la struttura tabellare detta Foglio dati di MS Access. Alternativamente è anche possibile definire una Maschera per l inserimento dati. Ancora, è possibile popolare una tabella importando I dati da un file esterno (ad esempio un file di MS Excell) Popolare le tabelle «Contratti_telefonici», e «Sim_attive» importando i dati dai file Excell.
Creare tabella da un File Excell (1) Una funzionalità molto comoda messa a disposizione da MS Access, è quella di poter creare una tabella del database a partire da una tabella in un file Excell. Oltre a definire direttamente la struttura della tabella, l operazione importerà anche i dati contenuti nella tabella Excell. Creare direttamente dal foglio Excel la tabella «Telefonate» Creare direttamente dal foglio Excel la tabella «SIM_non_attive» Creare direttamente dal foglio Excel la tabella «SIM_disattivate»
Creare tabella da un File Excell (2) La tabella Telefonate id Numerico Chiave Primaria effettuata_da data Data/ora ora Data/ora costo Valuta durata Numerico
Creare tabella da un File Excell (3) Tabella: SIM_non_attive codice Numerico Chiave Primaria tipo_sim Tabella: SIM_disattivate codice Numerico Chiave Primaria tipo_sim associato_a data_attivazione Data/ora Data_disattivazione Data/ora
Relazioni tra tabelle Le relazioni di Access corrispondono ai vincoli di integrità referenziale.
Relazioni uno a uno e uno a molti - opzioni Applica integrità referenziale, questo assicura che le relazioni tra i record delle tabelle correlate siano valide e che non vengano eliminati o modificati i dati correlati. Aggiorna campi correlati a catena, modificando un valore chiave primaria nella tabella primaria, vengono automaticamente aggiornati i valori corrispondenti in tutti i record correlati. Elimina record correlati a catena, eliminando un record nella tabella primaria, vengono eliminati tutti i record correlati nella tabella correlata.
Creare le relazioni mostrate in tabella: Tabella Tabella Correlata Tipo di Relazione Contratto_telefonico.numero SIM_attiva.associata_a Uno ad uno Contratto_telefonico.numero SIM_disattivata.associata_a Uno a molti Contratto_telefonico.numero Telefonata.effettuata_da Uno a molti
Esercizio Creare le Tabelle relative allo Schema Logico «Servizio Sanitario» 1. Creare manualmente la tabella «Cittadino» e importare i dati dal foglio Excel. 2. Creare manualmente la tabella «Ospedale» e importare i dati dal foglio Excel. 3. Creare manualmente la tabella «Ricovero» e importare i dati dal foglio Excel. 4. Creare manualmente la tabella «Patologia_del_ricovero» e importare i dati dal foglio Excel. 5. Creare direttamente dal foglio Excel la tabella «Patologia». 6. Creare direttamente dal foglio Excel la tabella «Patologia_cronica». 7. Creare direttamente dal foglio Excel la tabella «Patologia_mortale». NOTA: rispettare il nome delle tabelle e fare attenzione ai tipi dei vari campi delle tabelle, quando esse vengono importate direttamente dal foglio Excel.
Tabella: Cittadino CSSN Numerico Chiave Primaria nome cognome data_nascita Data/ora luogo_nascita indirizzo Tabella: Ospedale codice Numerico Chiave Primaria nome citta indirizzo direttore_sanitario
Tabella: Ricovero cod_ospedale Numerico Chiave Primaria cod Numerico Chiave Primaria cittadino Numerico data Data/ora durata Numerico motivo costo Valuta Tabella: Patologia_del_ricovero Nome campo Tipo Note cod_ospedale Numerico Chiave Primaria cod_ricovero Numerico Chiave Primaria cod_patologia Numerico Chiave Primaria
Tabella: Patologia cod Numerico Chiave Primaria nome criticita Numerico Tabella: Patologia_cronica cod_patologia Numerico Chiave Primaria Tabella: Patologia_mortale cod_patologia Numerico Chiave Primaria
Creare le relazioni mostrate in tabella: Tabella Tabella Correlata Tipo di Relazione Cittadino.CSSN Ricovero.cittadino Uno a molti Patologia.cod Patologia_mortale.cod_patologia Uno a uno Patologia.cod Patologia_cronica.cod_patologia Uno a uno Ospedale.codice Ricovero.cod_ospedale Uno a molti Ricovero.cod_ospedale Patologia_del_ricovero.cod_ospedale Uno a molti Ricovero.cod Patologia_del_ricovero.cod_ricovero Uno a molti Patologia.cod Patologia_del_ricovero.cod_patologia Uno a molti NOTA: le ultime tre relazioni vanno a creare una relazione Molti a molti.