Implementare il vincolo d'Integrità Referenziale in un database Access

Giorgio Borelli

Diagramma Entity-Relationship Diagram o ERD, delle relazioni tra le tabelle  Membership User di ASP.NET di un database AccessUn database Relazionale, a differenza di un database "normale", permette di definire delle relazioni tra le varie entità (tabelle) del db in modo tale da correlare i vari dati secondo una logica che astrae la realtà. Le relazioni tra le tabelle, permettono di manipolare i dati più facilmente e soprattutto evitano la ridondanza dei dati, ovvero la duplicazione inevitabile delle informazioni che si avrebbe nel caso di definizione di tabelle indipendenti. Un Diagramma Entità Relazioni (Entity-Relationship Diagram o ERD) come quello mostrato in figura, rende immediatamente idea di come le tabelle del database sono collegate tra di esse e quali siano le loro relazione.

 

La potenza e la flessibilità delle relazioni tra l'entità del db ci consente di collegare i dati che andremo a gestire con la nostra applicazione, collegando i record delle nostre tabelle in modo da gestire più informazioni (lettura, scrittura, aggiornamento) con una singola query sql, anzichè con molteplici query su singole tabelle indipendenti, ed evitare di fatto la replicazione di record (ridondanza dei dati) ed informazioni già presenti. Tutti i più moderni e diffusi database  quali: Sql Server, MySql, Oracle, Postgree SQL sono relazionali, e sebbene meno potente di quest'ultimi anche Microsoft Access è un database relazionale e permette di definire le relazioni tra le tabelle sia in maniera manuale che in modo guidato con estrema semplicità.

 

Un'altro aspetto fondamentale da tenere in considerazione durante la progettazione di un database e per la definizione delle relazioni tra le tabelle e se queste devono soddisfare o meno determinate regole di unicità e vincoli d'integrità, che assicurino la correttezza e la consistenza dei dati. Uno dei vincoli sicuramente più usato e diffuso è quello d'integrità referenziale.

 

Il Vincolo d'Integrità Referenziale è una "regola" che stabilisce che la presenza dei record tra le entità relazionate soddisfi necessariamente la presenza delle chiavi nell'una e nell'altra tabella. Tale vincolo assume pertanto il significato di predicato, che può assumere il valore di vero o falso, a seconda che la base di dati definita lo soddisfi o meno. Il Vincolo d'Integrità Referenziale (uno dei più diffusi ed usato), assicura la consistenza e la correttezza dei record presenti in un database, evitando che ci siano record orfani, ovvero che non hanno riferimento nella tabella collegata.

 

Anche con Access è possibile definire il Vincolo d'Integrità Referenziale, peremettendo di specificare anche quali azioni (effetto a catena) intraprendere sui record nel caso venga modificato o cancellato un record relazionato con record di altre tabelle.

 

Prosegue...

Categorie: Access | database

Tags:

How to fix Error AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts

Giorgio Borelli

Finestra d'errore AjaxControlToolkit requires ASP.NET Ajax 4.0 scriptsNell'articolo precedente "Come aggiungere gli Ajax Control ToolKit in Visual Studio" abbiamo visto come integrare i control extender AJAX in Visual Studio e referenziare correttamente le librerie AJAX.

Il framework ASP.NET Ajax è composto da due parti, il lato client e quello server. Il framework client rilasciato con la libreria AJAX è interamente scritto in Javascript e rappresenta decisamente la parte più corposa di ASP.NET Ajax con tanti controlli che estendono le funzionalità; ciò nonostante la comunicazione asincrona con renderizzazione parziale e senza postback della pagina, non sarebbe possibile senza il componente server, per quest'ultimo è il controllo ScriptManager responsabile della renderizzazioni e della presentazione delle funzioni javascript implementate col lato client.

 

Pertanto, per poter usufruire dei controlli AJAX nelle nostre pagine è necessario che sia presente nella stessa il controllo lato server ScriptManager. AJAX ed i suoi controlli client e server sono stati introdotti dalla versione 2.0 del .net framework in poi, nel frattempo la libreria AJAX è andata evolvendosi ampliando le sue funzionalità ed i controlli presenti nella libreria e nei Control ToolKit, di fatto alcuni nuovi controlli o quelli rivisti non sono più in grado di comunicare con la parte server gestita tramite lo ScriptManager, poichè quest'ultimo è in grado di gestire le richieste riferendosi a versioni più vecchie della Microsoft Library AJAX.

 

Ecco perchè nel caso in cui noi abbiamo referenziato l'ultima versione della libreria AJAX nella nostra applicazione web, e cerchiamo di gestirla tramite lo ScriptManager, è possibile che in fase di caricamento della pagina venga fuori l'errore: "AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts".

 

Ma così come vengono rilasciate nuove versioni della libreria AJAX client, lo stesso accade per quella server, in modo da permettere una corretta interazione delle chiamate asincrone. Quindi per correggere l'errore "AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts" basta usare la nuova versione del controllo server ScriptManager.

 

Prosegue...

Categorie: Ajax | ASP.NET | fix | Visual Studio

Tags: , ,

Come aggiungere gli Ajax Control ToolKit alla Toolbox di Visual Studio e referenziare le librerie AJAX

Giorgio Borelli

Come aggiungere gli Ajax Control ToolKit alla Tolbox di Visual StudioIl termine AJAX che è l'acronimo di Asynchronous Javascript and XML, è quella "tecnologia" che consente di effettuare chiamate asincrone tra il client (il browser) ed il server, evitando il classico postback della pagina.

 

Sebbene AJAX non sia di per sè una novità, in quanto risale ad un componente microsoft inserito in Internet Explorer nel lontano 1998 per il controllo della posta via veb su Exchange, il suo successo è comunque recente, ma tale da spopolare sul web degli ultimi anni. La possibilità d'implementare chiamate asincrone ed evitare il postback, offre agli sviluppatori web una potenza ed una velocità di esecuzione della pagina impensabile sino a questo momento, rivoluzionando di fatto il modo di pensare il web, ed aumentando in modo esponenziale la Web User Experience degli utenti.

 

Chi sviluppa web, oggi come oggi, non può pensare di prescindere da AJAX, così anche microsoft si attrezza per mettere a disposizione dei suoi sviluppatori questa potente tecnica, ed introduce una piattaforma per AJAX nel .net framework sin dalla versione 2.0 chiamata ASP.NET AJAX, che si compone di due parti una client, ed una server. Il contributo di Microsoft ad AJAX però non si ferma qui, essa infatti sviluppa un progetto Open Source, mettendo a disposizione della community di sviluppatori una serie di controlli belli e pronti per realizzare applicazioni AJAX chiamati AJAX Control ToolKit, rendendo di fatto più facile l'approccio e lo sviluppo di applicazioni web AJAX based da parte dei Web Developer.

 

Di fatto però, un'applicazione web sviluppata con ASP.NET, non è di per sè AJAX based, e lo stesso Visual Studio non incorpora all'interno della sua ToolBox il Kit dei Controlli AJAX, come fare allora per aggiungere questi controlli all'interno della ToolBox dell'IDE di Visual Studio?

 

Prosegue...

Categorie: Ajax | ASP.NET | Visual Studio

Tags: , , ,

Accedere ai siti Internet più velocemente evitando le chiamate al DNS

Giorgio Borelli

Modificare il file HOSTS di Windows per evitare le chiamate al DNS ed accedere più velocemente ai siti webQuando scriviamo un'indirizzo web per visitare un sito, quello che scriviamo effettivamente è l'indirizzo IP pubblico del server che ospita il sito. Siccome per una persona è molto più facile ricordare e scrivere un nome anzichè una sequenza di numeri, è stata messa appunto questa tecnica che prende il nome di risoluzione dei nomi a dominio.

La risoluzione del nome a dominio è possibile grazie al DNS (Domain Name System), un database distribuito che consente di mappare il nome del sito al suo corrispondente indirizzo IP e viceversa. Quindi quando scriviamo un indirizzo web del tipo www.informaticando.net, non veniamo indirizzati direttamente sul sito, ma viene dapprima effettuata un'interrogazione (query DNS) al DNS per risolvere il nome col suo indirizzo IP, questa operazione prende il nome di DNS lookup, mentre l'operazione inversa, ovvero risalire da un indirizzo IP al nome a dominio viene detta reverse DNS lookup. Potete notare la risoluzione osservando in basso a sinistra la barra di stato del vostro browser mentre attendete il caricamento dela pagina, se avete un'occhio attento ed allenato noterete che prima del nome del sito compare il suo indirizzo IP che poi viene risolto.

 

Cosa centra tutto questo con la possibilità di poter accedere ad un sito più velocemente? Un'interrogazione al DNS, seppur veloce, comporta comunque uno spreco di tempo e di risorse, inoltre non sempre la query al DNS viene risolta al primo colpo, se il vostro DNS primario non riesce a rivolvere l'indirizzo, l'interrogazione passerà al DNS secondario e così via nella gerarchia dei DNS sino a quando il nome non viene risolto col suo IP. Tutto ciò ha un prezzo in termini di tempo e di risorse, per agevolare questo meccanismo, Windows possiede un file, detto di HOSTS, sul quale è possibile agire per evitare le chiamate al DNS e ridurre i tempi di accesso ai siti internet.

 

Prosegue...

Categorie: Hack | Internet | Reti | Windows

Tags:

Il Registro di Sistema di Windows

Giorgio Borelli

Il Registro di sistema di WindowsIl Registro di Sistema non è altro che un database organizzato con una struttura ad albero, nel quale vengono conservate quasi tutte le impostazioni del Sistema Operativo e della macchina, sia hardware che software, come ad esempio quali driver s'interfacciano con le varie periferiche, dove sono installati i programmi, le impostazioni dell'utente e così via.

 

Storicamente il registro di sistema sostituisce gran parte delle impostazioni che prima erano presenti nei file di configurazione (file .ini) del vecchio Windows 95 e 98. Conoscere il registro di sistema è fondamentale poichè tramite esso è possibile accedere e modificare molte delle funzionalità e personalizzazioni di Windows, allo stesso tempo è bene muoversi con cautela e sapere cosa fare, rimuovere una chiave di registro o assegnarle un valore errato potrebbe compromettere seriamente la stabilità del sistema.

 

Il registro di sistema ci consente pertanto di gestire diversi aspetti del nostro Windows, molte delle personalizzazione che effettuiamo ad es. tramite il pannello di controllo, non sono altro che modifiche apportate al registro di sistema, come potrebbe essere ad esempio la velocità del mouse o l'effetto di trasparenza sulle finestre, è possibile ottenere lo stesso risultato agendo direttamente sul registro di sistema tramite il suo editor, conosciuto col nome di regedit.

 

Prosegue...

Categorie: Windows

Tags:

Come generare numeri casuali in C#

Giorgio Borelli

Comm generare un numero casuale in C#Nel .net framework non poteva di certo mancare una classe per gestire i numeri random (casuali), questa è la classe System.Random, la quale ci permette di generare numeri casuali interi, double o riempire array di byte. Possiamo specificare anche un valore massimo, o un range di valori nel quale il nostro numero casuale deve ricadere.

 

Tramite la classe Random generare numeri casuali in C# è davvero un gioco da ragazzi, dobbiamo porre però attenzione a questo argomento, poichè nasconde un'insidia, infatti è bene sapere che la classe Random permette di generare numeri pseudo-casuali, i numeri generati non sono completamente casuali, poiché sono generati da un'algoritmo matematico (algoritmo sottrattivo) che per sua natura stessa non può essere casuale.

 

La genereazione di un numero casuale avviene partendo da un valore d'inizializzazione, detto seme, scegliendo sempre lo stesso seme si otterrà sempre la stessa sequenza di numeri pseudo-casuali, proprio perchè generati da un'algoritmo matematico. Per ottenere dei numeri veramente casuali è necessario variare il valore del seme in base ad un qualche fattore, molto utile potrebbe essere il fattore tempo, affidandoci magari al clock di sistema.

 

Andiamo a vedere come usare la classe Random per generare numeri casuali in C#, facendo bene distinzione tra quelli pseudo-casuali e quelli casuali puri.

 

Prosegue...

Categorie: .NET framework | C#

Tags: ,

Come chiudere automaticamente i programmi in esecuzione durante la fase di arresto di Windows

Giorgio Borelli

Terminare automaticamente i processi ancora in esecuzione durante la fase di arresto di WindowsSono certo che sarà capitato anche a voi che durante la fase di arresto di Windows, qualche programma ancora in esecuzione non vi permette l'arresto del sistema operativo, avvisandovi di chiudere il programma con la classica finestrella "Termina Adesso".

 

Questo meccanismo è tanto fastidioso quanto inutile, seve soltanto a far perdere tempo, se voglio arrestare il sistema operativo è normale che voglia chiudere qualsiasi programma, che lavori in background o meno. Per chi è stufo di questo messaggio, è possibile correggere questo comportamento di Windows con un piccolo hack sul registro di sistema, andiamo a vedere come fare.

 

Prosegue...

Categorie: Hack | Windows

Tags: ,

Come si scrive l'indirizzo eMail tutto minuscolo o tutto maiuscolo?

Giorgio Borelli

eMail è case insensitiveMa come si scrive un indirizzo email, tutto minuscolo o tutto maiuscolo? Ne ho sentite di cotte e di crude, maiuscolo, minuscolo, con lo spazio, tutto attaccato, ed altro ancora.

 

E voi a quale scuola di pensiero appartenete? Siete schierati per quelli che scrivono l'email tutta in minuscolo o tra quelli che sono convinti che vada scritta tutto maiuscolo.

 

Ma dove stà la verità? Come deve essere scritto effettivamente un indirizzo emai? E se vi dicessi che io solitamente lo scrivo così: mARioRoSSI@nOMEdoMinIO.iT

 

Sorpresi? Non dovreste, se volete scoprire come effettivamente và scritto un'indirizzo email continuate a leggere questo ironico articolo.

 

Prosegue...

Categorie: e-mail | Internet | Web

Tags:

How to Fix SQLDUMPER library failed initialization

Giorgio Borelli

Come risolvere il problema del messaggio d'errore legato al servizio di SQL Server WriterIl servizio SQL Server Writer è un servizio di Microsoft SQL Server che permette di ripristinare e fare il backup di SQL Server tramite l'applicazione Copia Shadow del volume (VSS).

 

Il servizio SQL Writer viene installato automaticamente con SQL Server e se avviato permette a Windows di operare sui file di dati di SQL Server mentre è in esecuzione il motore di database, consentendo alle applicazioni di backup di Windows che si appoggiano su SQL Server d'interagire ed operare sui file anche mentre il motore è in esecuzione

 

A tal proposito, può manifestarsi a causa della corruzione di qualche database legato al servizio il seguente messaggio d'errore: "SQLDUMPER library failed initialization. Your installation is either corrupt or has been tampered with. Please uninstall then re-run setup to correct this problem"

 

Tale messaggio d'errore si presenta in una finestra modale ad ogni avvio della macchina, andiamo a vedere come risolvere e rimuovere così l'errore.

 

Prosegue...

Categorie: fix | Sql Server

Tags:

Il pattern Singleton in C#

Giorgio Borelli

Il design pattern Singleton in C SharpNell'ambito della programmazione OOP i design patterns non sono altro che delle soluzioni efficaci, testate e funzionanti a problemi comuni. Utilizzare un pattern al momento opportuno si rivela sicuramente una soluzione elegante ed efficace, ed evita di ri-scrivere del codice potenzialmente non ottimizzato o contentente dei bug. Tuttavia i patterns non rappresentano delle regole scritte per una buona programmazione, più che altro forniscono delle linee guida da seguire quando uno sviluppatore deve mettere appunto un determinata soluzione.

I design patterns sono diversi, ed è celebra la loro raccolta nel libro “Design Patterns: Elements of Reusable Object-Oriented Software” ad opera del Gof (Gang of four - la banda dei quattro), quattro esperti programmatori di fama, i quali hanno suddiviso i patterns in tre famiglie: strutturali, creazionali e comportamentali.

Oggi vogliamo prendere in considerazione il pattern Singleton, appartenente ai patterns creazionali, specifici per la creazione d'istanze. Lo scopo del pattern Singleton è quello di permettere per una classe la creazione di una ed una sola istanza con un'unico punto d'accesso (entry-point) all'istanza a livello globale.
Andiamo a scoprire come s'implementa un pattern Singleton in C# e quali caratteristiche e vantaggi comporta.


Prosegue...

Categorie: C# | Programmazione

Tags: ,