In questo video proseguiremo con l'analisi dei tipi di dati di Sql Server, in particolare vedremo com'è possibile estendere il set di tipi di dati che sono utilizzabili, a partire da quelli di Sql Server 2005. Infatti possiamo utilizzare i tipi definiti dall'utente i cosiddetti UDT (User Defined Types) che sono usati per estendere i tipi di Sql Server consentendo quindi l'archiviazione di oggetti custom all'interno di un database di Sql Server. un tipo definito dall'utente e fondamentalmente un tipo dotato di due attributi fondamentali Serializable e SqlUserDefinedType, e che impone una serie di requisiti che possiamo ritrovare a questo link. Possiamo trovare qui l'elenco dei vari requisiti da tenere in mente quando creiamo un tipo definito dall'utente (UDT). Per quanto riguarda l'archiviazione di un tipo definito dall'utente in sql Server, bisogna ricordarsi che viene archiviato in formato binario. Inizialmente in Sql server 2005 il limite per l'archiviazione di questi tipi era 8000 byte. Con la nuova versione di Sql Server 2008 questa barriera è stata abattuta permettendo anche l'utilizzo dei tipi e di dimensioni pressoché illimitata, cioè circa in due giga proprio come nel caso in Varchar(MAX), NVarchar(MAX) e VARBINARY(MAX), così via. Però bisogna tenere presente che sviluppare un tipo di dato molto complesso può portare a forti rallentamenti e in un decadimento delle prestazioni del motore del database perché tutta la logica all'interno del tipo di dato potrebbe rallentare appunto il database è invece quindi il limite reale e rappresentato dai limiti architetturali del tipo di dato più che veri e propri limiti fisici ritornando alla pagina precedente quella del sito dell'MSDN, che ci insegna che cos'è un tipo definito dall'utente e troviamo i quattro passaggi per la creazione di un uno di questi tipi qui. Vediamo uno per uno questi passaggi. Prima di tutto c'è da codifica la creazione dell'assembly che definisce il tipo. in poche parole la scrittura del codice che andrà formare il nostro tipo. Il codice deve essere necessariamente scritto in uno dei linguaggi del Net framework invece Visual Basic mette e il Visual C# e così via. all'interno del codice come abbiamo detto poco fa dovranno essere eseguite alcune linee guida c'è e i requisiti che avevo visto nella pagina precedente questa pagina qui la seconda. E la registrazione dell'assembly. registrazione che può essere effettuata o manualmente lanciando una stored procedure in Sql Server oppure lanciando un comando di deployment da a Visual studio 2010, che abbia come target il database di destinazione nel quale dovrà essere installato il tipo definito dall'utente. Abbiamo poi il terzo passaggio che èla creazione del tipo definito dall'utente (UDT) ce l'ha anche lei dai dall'aereo all'interno di si quel serve per creare il nostro tipo definito dall'utente questo viene effettuato una volta che la sembri stato caricato all'interno del database e prima di cominciare vedere operativamente come generare un tipo definito dall'utente installar sql Server e dobbiamo tener conto di alcune considerazioni prima di tutto il fatto che sql serve 2005 abbia aggiunto il supporto ai tipi definiti dall'utente (UDT) non significa che sia necessario utilizzarle oppure sia così utile farlo. per capire e la convenienza dell'uso di questi tipi dobbiamo prima pensare alla definizione di database relazionale infatti uno dei requisiti di un database relazionale e che le relazioni di tale database devono essere soltanto tra valori atomici cioè valori che non possono essere ulteriormente scomposti. Ad esempio pensiamo a un tipo varchar che è una stringa. Non possiamo suddividere una stringa in altri sotto elementi che abbiano a loro volta un significato logico viceversa un'array può essere facilmente scomposto in n stringhe una per ogni nell'elemento dell'array e quindi nel caso dell'array non si può parlare di un valore atomico nel caso della stringa nel caso del varchar invece si. In poche parole un database relazionale dovrà avere solo valori scalari ad esempio numero una stringa a un valore booleana una data e così via ma non un array, né tantomeno tabelle e neanche strutture o classi e siccome i tipi definiti dall'utente sono strutture o classi possono essere rappresentati sia forma di struttura si è forma di classe, questo andrebbe rompere questa è definizione di database relazionale. Andiamo ora a vedere operativamente come creare un tipo definito dall'utente. Dobbiamo prima di tutto entrare nell'ambiente di sviluppo di Visual studio e creare un nuovo progetto. Questo aprirà un nuovo progetto tramite File Nuovo progetto oppure direttamente dalla pagina di apertura dell'ambiente di sviluppo di Visual Studio, cliccando sulla voce ci si apre la finestra nuovo progetto nel quale possono selezionare tipi di progetto e che vogliamo inmplementare. Nel nostro caso scegliamo il gruppo di progetti che rientra sotto il nome di database Scegliere Sql Server e da questo elenco selezionare o avere un progetto di database Visual Basic oppure C#. Nel nostro caso utilizziamola C#. Denominiamo il progetto creazione primo UDT e premiamo pulsante ok. Scompare quindi la finestra dove possono selezionare database il target del nostro tipo c'è database nel quale dovremo andare installare tipo definito dall'utente nel nostro caso siccome non abbiamo ancora pronto un database di target siamo costretti a chiudere questa finestra per poi riaprirla quando avremo tutto l'ambiente pronto per cui richiamo sul pulsante cancel e vediamo che il progetto è stato creato con tutta la sua struttura dei file ci possiamo quindi dedicare alla creazione di un nuovo database. Per fare questo possiamo andare in più server Explorer e dà all'arte dal nodo data connection selezionare Sql server database selezioniamo il server e nel quale andremo a creare il nostro nuovo database. Nel mio caso utilizzerò l'istanza express del sql server che viene distribuito con Visual studio 2010 utilizzo una Windows autentication e come nome del database possiamo selezionare creazione UDT e premere il pulsante ok il database è stato creato ed estate creata alla connessione a questo nuovo database dobbiamo le cliccare col tasto destro e selezionare costruzione che permette di effettuare il le barche dei componenti ecco more in questa realtà è me che sono e che eventualmente installati sul database di target per cui selezioniamo questa questa voce e carichiamo che lei su questa finestra di conferma adesso che tutto pronto possiamo selezionare come rattristar dette il database che temono appena creato per cui andiamo il nostro progetto carichiamo col tasto destro proprietà e configuriamo la scheda database diamo selezionare la connection stringhe che punta a questo database per cui il richiamo su branco s'è selezioniamo la voce che ci compare in prima posizione c'è. La connessione al nostro nuovo database cinema accertare che i livelli di permessi e nell'accesso di questo database siano settati su sesso e modelle vere e pieni permessi di accedere al database dobbiamo anche verificare che il faremo accreditar che non sia il frame or quattro ma mai fare molte tre. Cinque perché altrimenti i deplori mentre risulta impossibile per cui target frame or che ne faremo altre tre. Cinque possiamo quindi chiudere questa finestra di proprietà di aggiungere il è la classe che ospiterà il nuovo tipo di dato per fare questo andiamo sulla e non sul nostro progetto carichiamo col tasto destro ad user refrain Cariplo anche data acquistando quest'elenco selezioniamo user refrain Cariplo e inseriamo il nome della nostro tipo che nel nostro caso può essere mio udì nuovo tipo premiamo pulsante ad essi compare il codice base e generato dall'a dalla auto generazione codice di Visual studio 2000 e 10 che rappresenta della classe base per la creazione di un nuovo tipo definito dall'utente da questa classe compilerà e genererà un tipo è valido che però chiaramente che avrà delle funzioni minime per cui si tratterà semplicemente di andare ad implementare questi metodi che sono noi per il momento di semplici segni apposti andare a conchiglia riempirli convergere tutta la logica che sta dietro al nostro tipo nel nostro caso possiamo a titolo di esempio usare anche questo tipo ora auto generato dalla è da Visual studio per cui il primo passo da fare è quello di compilare il codice propendiamo in visita e richiamo su video sull'uscio possono vedere da quale il progresso della notifica che il compilazione e riuscita correttamente secondo passo e il secondo passo è tornare nel menù di vedere e selezionare deplori sull'uscio non c'è stessa cosa può essere fatta anche tramite clic destro sulla progetto quindi vivida effettuerà le nuovamente alla compilazione del progetto e i deplori effettuerà il trasferimento deplori mentre del tipo sul database di target per cui possiamo provare a cliccare su deplori vediamo che il re deplori mentre è cominciato e a quanto pare da quanto voce viene notificato il livello d'istruzione e riuscita correttamente per cui a questo punto sono tornare sul nostro database verifichiamo che il nostro tifo sia stato installato correttamente possiamo andare nelle tabelle creare una nuova tabella con Nintendo riferiamo non ho colonna ed elenchiamo i tipi di dati disponibili ecco qua nuovo tipo che proprio il tipo che avevamo installato e vediamo che proprio il tipo che abbiamo generato installato su si quel server possono vedere anche dal nodo tra ex e nell'elenco dei tipi da noi definiti e installati si quel server possiamo fare anche le ulteriori prove andando ad esempio a studiarci è il codice che nella Microsoft utilizza come un esempio per l'azione di un nuovo tipo definito dall'utente possono selezionare gli tutto il codice copiarlo e incollarlo al posto del codice originale a questo o questo codice ci genererà un nuovo tipo palpò niente se proviamo a compilare e poi di effettuare la distribuzione sul server di target vediamo che anche questo tipo è stato correttamente installato possiamo fare ad affreschi vedere che effettivamente il nostro ottico stato sostituito da AN del nuovo o niente si quindi entriamo in questa tabella vediamo la definizione vediamo che nell'elenco adesso abbiamo poi