{"id":112911,"date":"2022-02-10T15:09:31","date_gmt":"2022-02-10T15:09:31","guid":{"rendered":"https:\/\/www.studiowiki.it\/?p=112911"},"modified":"2022-12-08T17:26:42","modified_gmt":"2022-12-08T17:26:42","slug":"le-basi-di-dati-capitolo-1","status":"publish","type":"post","link":"https:\/\/studiowiki.it\/inova\/le-basi-di-dati-capitolo-1\/","title":{"rendered":"Le basi di dati. Capitolo 1."},"content":{"rendered":"<h4><em>Glossario metodologico per la progettazione concettuale della base di dati.<\/em><\/h4>\n<p><strong>\u00a0<\/strong><strong>Definizione<\/strong><\/p>\n<p>Una <strong>base di dati<\/strong> \u00e8 definibile come <em>un insieme strutturato di dati il cui contenuto risponde alle esigenze informative di molteplici utenti<\/em> e la cui struttura \u00e8 disegnata in modo da garantire alcune fondamentali propriet\u00e0, tra cui l&#8217;integrazione (possibilit\u00e0 di associare logicamente dei dati), la non ridondanza (minimizzare la duplicazione di dati identici), la consistenza (intesa come assenza di contraddizioni tra i dati), la condivisione dei dati e l&#8217;indipendenza di questi dalle applicazioni.<\/p>\n<p>Un <strong>modello dei dati<\/strong> \u00e8 un insieme di meccanismi di astrazione per definire una base di dati, con associato un insieme predefinito di operatori e di vincoli d\u2019integrit\u00e0 (le regole che gli oggetti della realt\u00e0 rispettano e che allo stesso modo gli oggetti della rappresentazione devono rispettare).<\/p>\n<p><strong>Premessa<\/strong><\/p>\n<p>I dati in una base dati sono definibili secondo pi\u00f9 livelli (almeno tre, secondo gli standard indicati dall&#8217;American National Standard Institute, ANSI):<\/p>\n<p>1) livello interno, con le indicazioni relative all&#8217;organizzazione fisica dei dati;<\/p>\n<p>2) livello concettuale, con la definizione del modello globale dei dati;<\/p>\n<p>3) livello esterno, mediante il quale i dati sono rappresentati secondo le diverse modalit\u00e0 con cui vengono percepiti dai diversi utenti.<\/p>\n<p>L\u2019argomento \u00e8 molto complesso e pertanto ci si soffermer\u00e0 sul livello concettuale. Anche ragionando in termini di progettazione, parlando quindi operativamente, si possono distinguere nello specifico tre fasi nella costruzione di una base di dati:<\/p>\n<ul>\n<li><strong>Progettazione concettuale<\/strong>: lo scopo \u00e8 quello di rappresentare la realt\u00e0 di interesse in termini di una descrizione completa e formale, ma indipendente dai criteri di rappresentazione utilizzati nei sistemi di gestione di basi di dati. Il risultato \u00e8 uno schema, appunto detto concettuale. In questo caso si lavora sul contenuto della base dati, mentre l\u2019uso che gli utenti e applicazioni fanno della base dati viene considerato solo per verificare che lo schema contenga tutte le informazioni necessarie per eseguire le operazioni che serviranno.<\/li>\n<li><strong>Progettazione logica:<\/strong> significa tradurre lo schema concettuale nel modello di rappresentazione dei dati adottato dal sistema di gestione di base di dati (software) che si sceglie di utilizzare. Nella progettazione logica lo schema concettuale in ingresso riassume le specifiche sui dati, mentre le specifiche sulle operazioni si utilizzano, insieme alle previsioni sul carico applicativo, per ottenere uno schema logico che renda tali operazioni eseguibili in maniera efficiente.<\/li>\n<li><strong>Progettazione fisica:<\/strong> porta alla creazione di uno schema che specifica i parametri fisici di memorizzazione dei dati; questo modello dipende dai criteri di organizzazione fisica dei dati del sistema di gestione scelto.<\/li>\n<\/ul>\n<p>La prima fase di trattamento di dati \u00e8 utile proprio perch\u00e9 pu\u00f2 essere utilizzata a scopo documentativo, cio\u00e8 una volta capito il meccanismo, lo schema concettuale \u00e8 facilmente comprensibile anche da non specialisti di base di dati. Ed \u00e8 proprio su questo punto che si concentra l\u2019articolo.<strong>\u00a0<\/strong><\/p>\n<ol>\n<li><strong>Progettazione concettuale della base di dati<\/strong><\/li>\n<\/ol>\n<p>Il punto di partenza di una progettazione concettuale \u00e8 la <strong>raccolta e l\u2019analisi dei requisiti: <\/strong>si intende l\u2019individuazione dei problemi che l\u2019applicazione da realizzare deve risolvere e le caratteristiche che deve avere. I requisiti provengono da fonti come: confronti con utenti del futuro sistema (target), documentazione esistente e realizzazioni preesistenti (in questa fase \u00e8 fondamentale l\u2019interazione con gli utenti). Si dovr\u00e0 procedere con due azioni logicamente successive:<\/p>\n<ul>\n<li><strong>Raccolta:<\/strong> specifiche caratteristiche espresse in linguaggio naturale (quindi frasi spesso ambigue e disorganizzate);<\/li>\n<li><strong>Analisi:<\/strong> chiarimento e organizzazione delle specifiche dei requisiti. Utile in questa fase la creazione di un glossario dei termini (valutando ed eliminando eventuali sinonimi) e il raggruppamento dei requisiti in insiemi omogenei.<\/li>\n<\/ul>\n<ol start=\"2\">\n<li><strong>Costruzione dello schema concettuale<\/strong><\/li>\n<\/ol>\n<p>Il modello concettuale pi\u00f9 diffuso \u00e8 il <strong>modello entit\u00e0 \u2013 relazione.<\/strong> Fornisce una serie di strutture (costrutti) che permettono di descrivere la realt\u00e0 di interesse (il livello pi\u00f9 vicino alla realt\u00e0) in maniera facile, prescindendo dai criteri di organizzazione dei dati nei calcolatori.<\/p>\n<p>Queste strutture vengono utilizzate per definire gli schemi che descrivono <strong>l\u2019intera organizzazione<\/strong> e la <strong>struttura<\/strong>delle occorrenze, ovvero i valori assunti dai dati.<\/p>\n<p>I costrutti principali di questo modello sono:<\/p>\n<ul>\n<li><strong>entit\u00e0<\/strong>: rappresentano classi di oggetti (fatti, cose, persone), che hanno elementi comuni. Una occorrenza di un\u2019entit\u00e0 \u00e8 un oggetto della classe che l\u2019entit\u00e0 rappresenta. (<em>g.<\/em> Entit\u00e0 = CITTA\u2019 \u2013 Occorrenza = SAVONA). Ogni entit\u00e0 ha un nome che la identifica univocamente e viene rappresentata graficamente mediante un rettangolo con il nome dell\u2019entit\u00e0 all\u2019interno.<\/li>\n<li><strong>relazioni:<\/strong> rappresentano legami logici, tra due o pi\u00f9 entit\u00e0. (<em>g.<\/em> RESIDENZA \u00e8 un esempio di relazione che pu\u00f2 esistere tra CITTA\u2019 e IMPIEGATO). \u00c8 possibile avere relazioni che coinvolgono pi\u00f9 di due entit\u00e0.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-112964 size-full\" src=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/nuvola_art3.jpg\" alt=\"schema strategia insiede-out\" width=\"1108\" height=\"659\" srcset=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/nuvola_art3.jpg 1108w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/nuvola_art3-300x178.jpg 300w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/nuvola_art3-1024x609.jpg 1024w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/nuvola_art3-768x457.jpg 768w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/nuvola_art3-380x226.jpg 380w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/nuvola_art3-800x476.jpg 800w\" sizes=\"auto, (max-width: 1108px) 100vw, 1108px\" \/><\/p>\n<p>Ogni relazione ha un nome che la identifica univocamente e viene rappresentata tramite un rombo con all\u2019interno il nome della relazione e da linee che connettono la relazione con ciascuna delle sue componenti. (Nella scelta dei nomi di relazione \u00e8 preferibile usare sostantivi invece che verbi per non indurre a individuare un verso alla relazione). Possono esistere relazioni diverse che coinvolgono le stesse entit\u00e0. (esempi di rappresentazione).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-112965 size-full\" src=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/partecipante_art3.jpg\" alt=\"schema base della strategia mista\" width=\"1084\" height=\"116\" srcset=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/partecipante_art3.jpg 1084w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/partecipante_art3-300x32.jpg 300w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/partecipante_art3-1024x110.jpg 1024w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/partecipante_art3-768x82.jpg 768w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/partecipante_art3-380x41.jpg 380w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/partecipante_art3-800x86.jpg 800w\" sizes=\"auto, (max-width: 1084px) 100vw, 1084px\" \/><\/p>\n<p>Ci possono essere relazioni non simmetriche, \u00e8 quindi necessario stabilire i due ruoli che l\u2019entit\u00e0 coinvolta gioca nella relazione, questo pu\u00f2 essere fatto associando degli identificatori alle linee uscenti della relazione. \u00c8 possibile avere relazioni che coinvolgono pi\u00f9 entit\u00e0 e saranno rappresentate in questo modo.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-112966 size-full\" src=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/primitive-trasformazione_art3-e1646913307939.jpg\" alt=\"schema primitive di trasformazione\" width=\"805\" height=\"743\" srcset=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/primitive-trasformazione_art3-e1646913307939.jpg 805w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/primitive-trasformazione_art3-e1646913307939-300x277.jpg 300w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/primitive-trasformazione_art3-e1646913307939-768x709.jpg 768w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/primitive-trasformazione_art3-e1646913307939-380x351.jpg 380w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/primitive-trasformazione_art3-e1646913307939-800x738.jpg 800w\" sizes=\"auto, (max-width: 805px) 100vw, 805px\" \/><\/p>\n<ul>\n<li><strong>attributi<\/strong>: descrivono le propriet\u00e0 elementari di entit\u00e0 o relazioni. (<em>g.<\/em> Cognome, Stipendio, Et\u00e0 sono attributi dell\u2019entit\u00e0 IMPIEGATO.) Data e Voto sono attributi per la relazione ESAME (tra STUDENTE e CORSO).<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-112967 size-full aligncenter\" src=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/primitive-trasformazione2_art3.jpg\" alt=\"schema primitive bottom-up\" width=\"630\" height=\"774\" srcset=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/primitive-trasformazione2_art3.jpg 630w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/primitive-trasformazione2_art3-244x300.jpg 244w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/primitive-trasformazione2_art3-380x467.jpg 380w\" sizes=\"auto, (max-width: 630px) 100vw, 630px\" \/><\/p>\n<p>Sono cos\u00ec rappresentati.<\/p>\n<p>Pu\u00f2 essere utile, in alcune occasioni, raggruppare attributi di una medesima entit\u00e0 o relazione che presentano affinit\u00e0 nel loro significato o uso. (<em>e.g.<\/em> Indirizzo come attributo composto di Via, Numero civico, Cap.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-112968 size-full aligncenter\" src=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/tabella_art4.jpg\" alt=\"sistemi di classificazione\" width=\"492\" height=\"721\" srcset=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/tabella_art4.jpg 492w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/tabella_art4-205x300.jpg 205w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/03\/tabella_art4-380x557.jpg 380w\" sizes=\"auto, (max-width: 492px) 100vw, 492px\" \/><\/p>\n<p>Questi tre costrutti di base permettono gi\u00e0 di costruire schemi per descrivere realt\u00e0 di una certa complessit\u00e0. Ma altri costrutti considerati dal modello sono:<\/p>\n<ul>\n<li><strong>generalizzazioni: <\/strong>rappresentano legami logici tra un\u2019Entit\u00e0 genitore, pi\u00f9 generale, detta quindi <em>generalizzazione di\u2026<\/em>; e una o pi\u00f9 Entit\u00e0 figlie, che rappresentano dei casi particolari, detti (<em>e.g.<\/em> l\u2019entit\u00e0 PERSONA \u00e8 una generalizzazione delle entit\u00e0 UOMO e DONNA; PROFESSIONISTA \u00e8 generalizzazione delle entit\u00e0 AVVOCATO, MEDICO e INGEGNERE.) Ogni propriet\u00e0 dell\u2019entit\u00e0 genitore (attributi, identificatori, relazioni..) \u00e8 anche una propriet\u00e0 delle entit\u00e0 figlie.<\/li>\n<\/ul>\n<p>La rappresentazione grafica \u00e8 la seguente.<\/p>\n<p><img alt=\"\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-112981 size-full\" src=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/unnamed.png\" alt=\"\" width=\"512\" height=\"481\" srcset=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/unnamed.png 512w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/unnamed-300x282.png 300w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/unnamed-380x357.png 380w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/p>\n<p>In generale una stessa entit\u00e0 pu\u00f2 essere coinvolta in generalizzazioni diverse, si crea cos\u00ec una gerarchia di generalizzazioni.<\/p>\n<ul>\n<li><strong>cardinalit\u00e0 delle relazioni:<\/strong> vengono specificate per ciascuna partecipazione di entit\u00e0 a una relazione; dicono quante volte (numero massimo e numero minimo), in una relazione tra entit\u00e0, un\u2019occorrenza di una entit\u00e0 pu\u00f2 essere legata a occorrenze delle altre entit\u00e0 coinvolte (<em>g.<\/em> relazione ASSEGNAMENTO tra entit\u00e0 IMPIEGATO e INCARICO: se diciamo che IMPIEGATO ha cardinalit\u00e0 minima 1 e cardinalit\u00e0 massima 5, vogliamo dire che a un impiegato deve essere assegnato almeno 1 incarico ma non pi\u00f9 di 5. Se diciamo che INCARICO ha cardinalit\u00e0 minima 0 e cardinalit\u00e0 massima 50, vogliamo dire che un certo incarico pu\u00f2 essere assegnato o a nessun impiegato o a un numero inferiore o uguale a 50).<\/li>\n<\/ul>\n<p>Rappresentazione:<\/p>\n<p><img alt=\"\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-112982 size-full\" src=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/unnamed-1.png\" alt=\"\" width=\"512\" height=\"207\" srcset=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/unnamed-1.png 512w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/unnamed-1-300x121.png 300w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/unnamed-1-380x154.png 380w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/p>\n<ul>\n<li><strong>cardinalit\u00e0 degli attributi:<\/strong> si pu\u00f2 scegliere di specificarle per gli attributi di entit\u00e0 o di relazione; descrivono il numero minimo e massimo di valori dell\u2019attributo associati a ogni occorrenza; nella maggior parte dei casi la cardinalit\u00e0 di attributo (essendo 1,1) viene omessa; in alcuni casi per\u00f2 \u00e8 bene specificarla, perch\u00e9 pu\u00f2 avere valore 0, oppure possono esistere diversi valori di un certo attributo per una occorrenza di entit\u00e0.<\/li>\n<\/ul>\n<p><strong><img alt=\"\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-112993 size-full\" src=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/tabella.jpg\" alt=\"\" width=\"960\" height=\"758\" srcset=\"https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/tabella.jpg 960w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/tabella-300x237.jpg 300w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/tabella-768x606.jpg 768w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/tabella-380x300.jpg 380w, https:\/\/studiowiki.it\/inova\/wp-content\/uploads\/2022\/04\/tabella-800x632.jpg 800w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/> <\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<ul>\n<li><strong>identificatori delle entit\u00e0:<\/strong> descrivono i concetti (attributi e\/o entit\u00e0) dello schema, che permettono di identificare in maniera univoca le occorrenze dell\u2019entit\u00e0. L\u2019identificatore interno di entit\u00e0 pu\u00f2 essere singolo o essere un insieme di attributi (<em>g.<\/em> un identificatore interno per l\u2019entit\u00e0 AUTOMOBILE \u00e8 Targa, considerando gli attributi Modello, Colore, Targa, in quanto non possono esistere due automobili con la stessa targa ma due con stesso modello e colore).<\/li>\n<\/ul>\n<p>Se invece uno o pi\u00f9 attributi non sono in grado da soli di identificare un\u2019entit\u00e0, si utilizzano altre entit\u00e0 esterne.<\/p>\n<p><em>To be continued\u2026<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"Glossario metodologico per la progettazione concettuale della base di dati. \u00a0Definizione Una base di dati \u00e8 definibile come&hellip;\n","protected":false},"author":4,"featured_media":112912,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"0","_seopress_titles_title":"","_seopress_titles_desc":"Una base di dati \u00e8 definibile come un insieme strutturato di dati il cui contenuto risponde alle esigenze informative di molteplici utenti..","_seopress_robots_index":"","csco_singular_sidebar":"","csco_page_header_type":"","csco_page_load_nextpost":"","csco_post_video_location":[],"csco_post_video_url":"","csco_post_video_bg_start_time":0,"csco_post_video_bg_end_time":0,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[229,227],"tags":[192],"class_list":{"0":"post-112911","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-dati-e-ricerche","8":"category-inova","9":"tag-inova-45","10":"cs-entry","11":"cs-video-wrap"},"_links":{"self":[{"href":"https:\/\/studiowiki.it\/inova\/wp-json\/wp\/v2\/posts\/112911","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/studiowiki.it\/inova\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/studiowiki.it\/inova\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/studiowiki.it\/inova\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/studiowiki.it\/inova\/wp-json\/wp\/v2\/comments?post=112911"}],"version-history":[{"count":3,"href":"https:\/\/studiowiki.it\/inova\/wp-json\/wp\/v2\/posts\/112911\/revisions"}],"predecessor-version":[{"id":116210,"href":"https:\/\/studiowiki.it\/inova\/wp-json\/wp\/v2\/posts\/112911\/revisions\/116210"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studiowiki.it\/inova\/wp-json\/wp\/v2\/media\/112912"}],"wp:attachment":[{"href":"https:\/\/studiowiki.it\/inova\/wp-json\/wp\/v2\/media?parent=112911"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studiowiki.it\/inova\/wp-json\/wp\/v2\/categories?post=112911"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studiowiki.it\/inova\/wp-json\/wp\/v2\/tags?post=112911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}