Base di dati: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
disambiguia Carlo Strozzi
 
(92 versioni intermedie di 34 utenti non mostrate)
Riga 1:
{{Nota disambigua||Database (disambigua)|Database}}
{{Nota disambigua|i software per la gestione delle basi di dati|Database management system}}
{{NN|informatica|febbraio 2013}}
 
{{Aggiornare|arg=informatica}}
[[File:Applications-Noun project database 1276526 cc.svg|thumb|upright=0.8|Simbolo vettorialegenerico usato per rappresentare delleuna banchebanca dati]]
 
Con '''base di dati''' (o '''banca dati''', a volte abbreviato con la sigla '''DB''' dall'[[lingua inglese|inglese]] ''database'') in [[informatica]] si indica un insieme di [[dati]] strutturati ovvero omogeneo per contenuti e formato, [[memoria (informatica)|memorizzati]] in un [[computer]], rappresentando di fatto la versione [[Digitale (informatica)|digitale]] di un archivio dati o schedario.
In [[informatica]] una '''base di dati''' o '''banca dati''',<ref>{{Treccani|banca-dati|Banca dati}}</ref> detta anche, dall'[[Lingua inglese|inglese]], '''''database''''' o '''''data base''''',<ref>{{Treccani|base-di-dati_(Enciclopedia-della-Matematica)|accesso=2022-07-19}}</ref><ref name=":0">{{Treccani|data-base|Data base|v=x}}</ref> è una collezione di dati organizzati immagazzinata e accessibile per via elettronica.<ref name=":0" />
 
Nel linguaggio comune e informale, la [[locuzione]] ''database'' tende a essere utilizzata impropriamente con varie sfumature di significato, di ordine più generale rispetto a "collezione astratta di dati":
 
* ''[[server|database server]]'': ovvero il [[hardware|sistema fisico]], comprendente sia le risorse di [[processore|elaborazione]] che di [[memoria (informatica)|memorizzazione]] necessarie al funzionamento della base di dati;
* ''[[database management system]]'': ovvero il [[sistema software]] necessario all'interfacciamento con la base di dati.
 
La progettazione delle basi di dati è un'attività complessa, che si basa sull'applicazione di [[formalismo matematico|tecniche formali]] in congiunzione a considerazioni pratiche derivate dalla natura dei dati stessi. In fase di progettazione si affrontano quindi problemi in materia di [[modellazione dei dati|modellazione]], [[codifica|rappresentazione]], [[memoria (informatica)|archiviazione]] e [[accessibilità (design)|accesso]] ai dati, oltre che della loro [[sicurezza informatica|sicurezza]], [[privatezza]] e [[integrità dei dati|integrità]]. Senza contare altre questioni di contorno che pertengono più propriamente ai [[DBMS]].<ref>{{cita|Atzeni 2018|pp. 197-202}}.</ref>
 
== Storia ==
{{S sezione|informatica}}
All'inizio della [[storia dell'informatica]], la grande maggioranza dei programmi specializzati consentivano l'accesso a una singola base di dati, per guadagnare in velocità di esecuzione pur perdendo in flessibilità. Oggi, invece, i moderni sistemi possono essere utilizzati per compiere operazioni su un gran numero di basi di dati differenti. Dagli [[anni settanta]] del [[XX secolo]] le basi di dati hanno subito un enorme sviluppo sia in fatto di quantità di dati memorizzati sia in fatto di tipi di architetture adottate. A partire da allora e soprattutto dall'inizio del [[XXI secolo]]. Queste sono le architetture dati che si sono sviluppate negli anni:
 
All'inizio della [[storia dell'informatica]], la grande maggioranza dei programmi specializzati consentivano l'accesso a una singola base di dati per guadagnare in velocità di esecuzione, pur perdendo in flessibilità. Oggi, invece, i moderni sistemi possono essere utilizzati per compiere operazioni su un gran numero di basi di dati differenti. Dagli [[anni settanta]] del [[XX secolo]] le basi di dati hanno subito un enorme sviluppo sia in fatto di quantità di dati memorizzati sia in fatto di tipi di architetture adottate.
* Architettura centralizzata, [[Database management system|DBMS]];
* Architettura parallela;
* [[Database distribuito|Architettura distribuita]];
* Architettura federata;
* Architettura [[Data integration|''data Integration'']];
* Architettura [[Data warehouse|''data Warehouse'']].
 
=== I modelli navigazionali ===
== Descrizione ==
{{vedi anche|Modello gerarchico|Modello reticolare}}
=== Utilizzo terminologico ===
La [[locuzione]] può anche indicare contemporaneamente:
* l'archivio a livello fisico ([[hardware]]) cioè il sistema con i supporti di [[memoria (informatica)|memorizzazione]] (''[[storage]]'', es. [[dischi rigidi]]) che contengono i dati stessi, deputati cioè alla [[persistenza (informatica)|persistenza]] dei dati, e il [[processore]] per l'elaborazione di questi (''[[database server]]'');
* l'archivio a livello logico, cioè i dati strutturati, e la parte [[software]], cioè il ''[[database management system]]'' (DBMS) ovvero quella vasta categoria di [[applicazione (informatica)|applicazioni]] che consentono la creazione, la manipolazione (gestione) e l'interrogazione efficiente dei dati.
 
Negli anni sessanta, con la crescita della capacità elaborativa dei calcolatori e la creazione di una serie di banche dati utilizzabili per diverse applicazioni, crebbe l'interesse nel fissare uno standard. [[Charles W. Bachman]], creatore del database navigazionale [[Integrated Data Store|IDS]], fondò il ''Database Task Group'' all'interno del gruppo ''[[CODASYL]]'': il team di lavoro dedicato alla creazione e standardizzazione del [[linguaggio di programmazione]] [[COBOL]]. Il lavoro del gruppo venne pubblicato nel 1971 e lo standard risultante prese il nome di "Approccio CODASYL", varie implementazioni commerciali apparvero sul mercato dopo poco tempo.
Informalmente e impropriamente la parola "banca dati" viene spesso usata per indicare il ''database management system'' (DBMS) riferendosi dunque alla sola parte software. Un [[client]] di banca dati [[lato client]] interagisce con il DBMS [[server]] e quindi anche con la banca dati in senso fisico.
 
L'approccio CODASYL era basato sulla navigazione manuale in un insieme di dati disposti sotto forma di rete. Alla prima apertura del programma questo si trovava sul primo dato disponibile contenente, tra le altre cose, un [[Puntatore (programmazione)|puntatore]] ai dati successivi. Per trovare un dato il programma attraversava la serie di puntatori fino a trovare il dato corretto. Delle semplici ''[[query]]'' come "Trova tutte le persone nate in [[Svezia]]" richiedevano l'attraversamento dell'intero set di dati. Non esisteva alcuna funzione di ricerca; oggi questo potrebbe sembrare una limitazione, ma all'epoca, essendo i dati archiviati su [[nastro magnetico]], operazioni come quelle evidenziate sopra peggioravano ulteriormente il tempo di ricerca.
Nelle banche dati più moderne, ovvero quelle basate sul modello relazionale, i dati vengono suddivisi in apposite tabelle per argomenti e poi questi argomenti vengono suddivisi per categorie (campi) con tutte le possibili operazioni di cui sopra. Questa suddivisione e questa funzionalità rendono le basi di dati notevolmente più efficienti rispetto a un archivio di dati creato per esempio tramite il [[file system]] di un [[sistema operativo]] su un [[computer]], almeno per la gestione di dati complessi.
 
Nel 1968 [[IBM]] sviluppò un proprio [[DBMS]] chiamato [[Information Management System|IMS]]. IMS era lo sviluppo di un programma utilizzato nelle [[Programma Apollo|missioni Apollo]] sui calcolatori IBM [[System/360]] e utilizzava un sistema simile all'approccio CODASYL, con l'unica differenza di utilizzare un modello gerarchico anziché a rete.
 
Ambedue le soluzioni presero poi il nome di "banche dati navigazionali" a causa del metodo di consultazione che era stato previsto. Inoltre [[Charles Bachman]], in occasione della premiazione nel 1973 in cui gli venne conferito il [[Premio Turing]], presentò un lavoro intitolato ''Il programmatore come navigatore''. IMS è abitualmente classificato come una banca dati [[Modello gerarchico|gerarchica]], mentre IDS e IDMS (ambedue banche dati ''CODASYL''), CINCOMs e [[TOTAL]] sono classificati come banche dati [[Modello reticolare|reticolari]].
 
=== Il modello relazionale ===
{{vedi anche|Modello relazionale#Storia}}
 
[[Edgar F. Codd]] lavorava nella sede [[california]]na di [[IBM]] come ricercatore sull'allora nascente tecnologia dei [[dischi rigidi]] quando osservò l'inefficienza dell'approccio [[CODASYL]] con la nuova modalità di memorizzazione dei dati, inefficienza principalmente dovuta all'assenza di una funzione di ricerca.
Nel 1970 cominciò a produrre diversi documenti schematizzanti un nuovo approccio alla costruzione delle basi di dati, culminati nell'articolo "''A Relational Model of Data for Large Shared Data Banks''" ({{lett|Un modello relazionale dei dati per banche dati condivise di grandi dimensioni|lingua=it}}).
In questo articolo descrisse un nuovo sistema per archiviare e modificare grandi quantità di dati, basato su [[collezione (informatica)|collezioni]] di [[tuple]] di dimensione fissata ([[relazione (matematica)|relazioni]]) invece che [[albero (informatica)|alberi]] di ''[[record (database)|record]]''.<ref name="Codd 1970">{{cita|Codd 1970}}.</ref>
 
IBM cominciò a implementare questo modello in alcuni prototipi all'inizio degli anni settanta, a cominciare dal ''[[System R]]''. Agli inizi degli anni '80 il sistema aveva ormai dimostrato la sua superiorità rispetto a ''[[CODASYL]]'' e quindi IBM passò a sviluppare una versione commerciale di ''System R'', che prese il nome di "SQL/DS" prima e "[[IBM DB2|DB2]]" infine.<ref>{{cita web|url=https://www.ibm.com/it-it/topics/relational-databases#Breve+storia+dei+database+relazionali|titolo=Breve storia dei database relazionali|accesso=2024-03-18}}</ref>
Parallelamente il lavoro di Codd era stato ripreso dal mondo accademico attraverso il progetto [[INGRES]], dal quale nacquero numerosi spin-off commerciali che andarono a concorrere con IBM.<ref>{{cita pubblicazione|autore1=[[Michael Stonebraker]]|autore2=[[Lawrence A. Rowe]]|titolo=The design of POSTGRES|url=http://db.cs.berkeley.edu/papers/ERL-M85-95.pdf|p=4|rivista=SIGMOD '86: Proceedings of the 1986 ACM SIGMOD international conference on Management of data|editore=[[Association for Computing Machinery]]|città=Washington, DC|data=maggio 1986|lingua=en|ISBN=0897911911
|DOI=10.1145/16894}}</ref>
Nello stesso periodo venne anche standardizzato il linguaggio [[SQL]].
 
=== Il movimento NoSQL ===
{{vedi anche|NoSQL}}
 
Il termine NoSQL fu usato per la prima volta nel 1998 per descrivere una base di dati relazionale [[open source]] che non usava un'interfaccia [[SQL]].
L'autore [[Carlo Strozzi (informatico)|Carlo Strozzi]] dichiarò che "come movimento, NoSQL diparte in modo radicale dal modello relazionale, e quindi andrebbe chiamato in modo più appropriato NoREL, o qualcosa di simile".<ref>[http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/NoSQL/Home%20Page Carlo Strozzi, NoSQL]</ref>
 
All'opposto di quanto si potrebbe pensare il movimento NoSQL non è contrario all'utilizzo di database relazionali. Il termine NoSQL infatti è acronimo di ''Not Only SQL'', a significare che esistono diversi casi d'uso per i quali il modello relazionale rappresenta una forzatura, ma tanti altri per i quali tale modello è ancora la soluzione migliore.
 
Il termine fu riutilizzato nel 2009 da un dipendente di [[Rackspace]], Eric Evans, quando [[Johan Oskarsson]] di [[Last.fm]] volle organizzare un evento per discutere di basi di dati distribuite open source<ref>[http://blog.knuthaugen.no/2010/03/a-brief-history-of-nosql.html A Brief History of NoSQL]</ref>.
Il nome era un tentativo di etichettare il crescente numero di database non relazionali e distribuiti che spesso non garantivano le classiche proprietà [[ACID]], a causa di vari compromessi formulati sulla base del [[teorema CAP]].
 
== Caratteristiche ==
 
=== Gestione delle informazioni ===
La banca dati deve contenere anche le informazioni sulle loro rappresentazioni e sulle relazioni che li legano. Spesso, ma non necessariamente, una base dati contiene le seguenti informazioni:
 
* [[Strutture dati]] che velocizzano le operazioni frequenti, di solito a spese di operazioni meno frequenti.
* Collegamenti con dati esterni, cioè riferimenti a file locali o remoti non facenti parte della banca dati.
* Informazioni di sicurezza che autorizzano solo alcuni profili utente ada eseguire alcune operazioni su alcuni [[Tipo di dato|tipi di dati]].
* Programmi che vengono eseguiti, automaticamente o su richiesta di utenti autorizzati, per eseguire elaborazioni sui dati. Un tipico automatismo consiste nell'eseguire un [[Programma (informatica)|programma]] ogni volta che viene modificato un dato di un certo tipo.
 
In un sistema informatico una banca dati può essere usata direttamente dai programmi applicativi, interfacciandosi con il [[supporto di memorizzazione]] agendo direttamente sui file. Questa strategia era adottata universalmente fino agli [[anni 1960|anni sessanta]], ed è tuttora impiegata quando i dati hanno una struttura molto semplice o quando sono elaborati da un solo programma applicativo.
 
Tuttavia dalla fine degli anni sessanta, per gestire banche dati complesse condivise da più applicazioni, si sono utilizzati appositi sistemi software detti "sistemi per la gestione di basi di dati" (in inglese "[[Databasedatabase Managementmanagement Systemsystem]]" o "DBMS"). Uno dei vantaggi di questi sistemi è la possibilità di non agire direttamente sui dati, ma di vederne una rappresentazione concettuale.
 
La ricerca nel campo delle banche dati studia le seguenti problematiche:
* Progettazione di banche dati.
* Progettazione e implementazione di DBMS.
* Interpretazione (analisi) di dati contenuti nelle banche dati.
 
Le banche dati spesso fanno uso di tecnologie derivate da altre branche dell'informatica. È usuale utilizzare tecniche derivate dall'[[intelligenza artificiale]], come ad esempio il [[data mining]], per cercare di estrarre relazioni o più in generale informazioni presenti nelle banche dati, ma non immediatamente visibili.
Line 46 ⟶ 76:
=== Struttura e modello logico ===
[[File:Hierarchisches_Datenbankmodell.svg|thumb|Modello gerarchico di database]]
Le [[informazione|informazioni]] contenute in una banca dati sono strutturate e collegate tra loro secondo un particolare modello logico scelto dal progettista, per esempio [[Modello relazionale|relazionale]], [[Modello gerarchico|gerarchico]], [[Modello reticolare|reticolare]] o [[Modello a oggetti|a oggetti]]. Gli utenti si interfacciano con le banche dati attraverso i cosiddetti [[linguaggio di interrogazione|linguaggi di interrogazione]] ([[query]] di ricerca o interrogazione, inserimento, cancellazione, aggiornamento ecc.) e grazie a particolari applicazioni [[software]] dedicati ([[DBMS]]).
 
Di solito le banche dati possono avere varie strutture, in ordine cronologico di comparsa e diffusione:
 
# [[Modello gerarchico|gerarchico]] ([[anni 1960|anni sessanta]]) rappresentabile tramite un [[albero (informatica)|albero]], ovvero con strutture simili ai [[file system]] gerarchici,
# [[Modello reticolare|reticolare]] ([[anni 1960|anni sessanta]]) rappresentabile tramite un [[grafo]],
# [[Modello relazionale|relazionale]] ([[anni 1970|anni settanta]]) attualmente il più diffuso, rappresentabile mediante tabelle e relazioni tra esse,
# [[Modello a oggetti|ada oggetti]] ([[anni 1980|anni ottanta]]) estensione alle basi di dati del paradigma "Object Oriented", tipico della programmazione a oggetti,
# [[Database orientato al documento|Document-oriented]] ([[NoSQL]]),
# [[Key-Value Store]] ([[NoSQL]]),
# [[Database a grafo|Graph-based]] ([[NoSQL]]),
# [[Colonnari]] ([[NoSQL]]),
# semantica (inizio [[anni 2000|anni duemila]]) rappresentabile con un grafo relazionale.
[[File:Netzwerkdatenbankmodell.svg|thumb|Modello reticolare di database]]
Line 67 ⟶ 97:
La funzionalità di una banca dati dipende in modo essenziale dalla sua [[progettazione]]: la corretta individuazione degli scopi della banca dati stessa e quindi delle tabelle, da definire attraverso i loro campi e le relazioni che le legano, permette poi una estrazione dei dati più veloce e in generale una gestione più efficiente.
 
==== BaseProprietà diACID dati navigazionali ====
{{vedi anche|Transazione (basi di dati)|ACID|Trigger (basi di dati)}}
Con la crescita della capacità elaborativa dei calcolatori questo contrasto con la flessibilità andò attenuandosi, con la creazione negli [[anni 1960|anni sessanta]] di una serie di banche dati utilizzabili per diverse applicazioni. L'interesse nel fissare uno standard crebbe e [[Charles W. Bachman]], creatore di IDS, uno di questi prodotti, fondò il ''Database Task Group'' all'interno del gruppo ''Codasyl'', il team di lavoro dedicato alla creazione e standardizzazione del [[linguaggio di programmazione]] [[COBOL]]. Nel [[1971]] questo standard fu prodotto e prese il nome di "Approccio Codasyl" e presto fu disponibile sul [[mercato]] una serie di prodotti basati su questo approccio.
Una qualunque modifica allo stato del database tramite operazioni varie è detta [[Transazione (basi di dati)|transazione]], la quale deve rispettare le cosiddette regole o proprietà [[ACID]]. Le operazioni più tipiche in un DB sono quelle riassunte dall'acronimo [[CRUD]].
 
=== Efficienza e sicurezza ===
Questo approccio era basato sulla navigazione manuale in un insieme di dati disposti sotto forma di rete. Alla prima apertura del programma questo si trovava sul primo dato disponibile contenente, tra le altre cose, un [[Puntatore (programmazione)|puntatore]] ai dati successivi. Per trovare un dato il programma attraversava la serie di puntatori fino a trovare il dato corretto. Delle semplici ''[[query]]'' come "Trova tutte le persone nate in Svezia" richiedevano l'attraversamento dell'intero set di dati. Non esisteva alcuna funzione di ricerca; oggi questo potrebbe sembrare una limitazione, ma all'epoca, essendo i dati archiviati su [[nastro magnetico]], operazioni come quelle evidenziate sopra peggioravano ulteriormente il tempo di ricerca.
{{vedi anche|Protezione dai guasti (basi di dati)|Attacco ai database}}
Sicurezza significa impedire che la base dati venga danneggiata da interventi accidentali o non autorizzati, per esempio un [[attacco ai database]], e mantenerne l'integrità ovvero garantire che le operazioni effettuate sulla base di dati da utenti autorizzati non provochino una perdita consistente di dati, garantendone al contempo l'[[affidabilità (basi di dati)|affidabilità]]. La protezione da accessi non autorizzati è un tema importante nella gestione delle basi di dati che si rivelano vulnerabili nei seguenti punti:
 
* [[Sicurezza informatica|Sicurezza dei server]]
Nel [[1968]] [[IBM]] sviluppò un proprio sistema [[DBMS]] chiamato [[Information Management System|IMS]]. IMS era lo sviluppo di un programma utilizzato nelle [[Programma Apollo|missioni Apollo]] sui Sistemi /360 e utilizzava un sistema simile all'approccio ''Codasyl'', con l'unica differenza di avere un sistema gerarchico anziché a rete.
* Connessioni tra database
* Controllo sugli accessi al database
* [[Data warehouse]]
* [[Data mining]]
 
== Classificazione ==
Ambedue le soluzioni presero poi il nome di "banche dati navigazionali" a causa del metodo di consultazione che era stato previsto. Inoltre [[Charles Bachman]], in occasione della premiazione nel [[1973]] in cui gli venne conferito il [[Premio Turing]], presentò un lavoro intitolato "Il programmatore come navigatore". IMS è abitualmente classificato come una banca dati [[Modello gerarchico|gerarchico]], mentre IDS e IDMS (ambedue banche dati ''CODASYL''), CINCOMs e [[TOTAL]] sono classificati come banche dati a rete (o [[Modello reticolare|reticolari]]).
 
==== BaseSecondo diil datimodello relazionalidei dati ====
{{vedi anche|RDBMS|Algebra relazionale|Calcolo relazionale|SQL}}
[[File:Deletion anomaly.svg|thumb|upright=1.6|Esempio di tabella di un [[RDBMS]] ovvero secondo il [[modello relazionale]] (''Docenti e loro corsi''). Visibile in alto in grigio l'intestazione o testata della tabella con i nomi dei vari campi o attributi e i valori assunti da questi nelle rispettive righe, record o tuple nel corpo sottostante (è presente un record duplicato).]]
I DBMS relazionali sono detti anche RDBMS (''Relational DBMS'').
 
==== Base di dati navigazionale ====
[[Edgar F. Codd]] lavorava alla sede [[california]]na di [[IBM]] come ricercatore sulla nascente tecnologia dei [[dischi rigidi]] quando osservò l'inefficienza dell'approccio ''Codasyl'' con la nuova modalità di memorizzazione dei dati, inefficienza principalmente dovuta all'assenza di una funzione di ricerca. Nel [[1970]] cominciò a produrre diversi documenti schematizzanti un nuovo approccio alla costruzione delle basi di dati, culminati nel "[[modello relazionale]] per banche dati condivise di grandi dimensioni" (''A Relational Model of Data for Large Shared Data Banks'').
{{vedi anche|Modello gerarchico|Modello reticolare}}
 
Le basi di dati navigazionali sono orientate alla navigazione manuale in un insieme di dati disposti sotto forma di rete o [[albero (informatica)|albero]]. Alla prima apertura del programma questo si trovava sul primo dato disponibile contenente, tra le altre cose, un [[Puntatore (programmazione)|puntatore]] ai dati successivi. Per trovare un dato il programma attraversava la serie di puntatori fino a trovare il dato corretto.
In questo articolo, descrisse un nuovo sistema per archiviare e modificare grandi quantità di dati. Invece di utilizzare delle "righe" (in [[Lingua inglese|inglese]], ma anche molto usato in [[lingua italiana|italiano]]: ''"[[record (database)|record]]"'' o anche "[[tupla|tuple]]") collegate tra di loro attraverso un qualche tipo di struttura "ad albero", come in ''Codasyl'', ritenne di utilizzare una "tabella" di righe a lunghezza fissa. Questo sistema sarebbe stato molto inefficiente nell'archiviazione di dati "sparsi", in cui la tabella avrebbe potuto avere diverse "celle" vuote; tale errore di impostazione fu corretto dividendo i dati in diverse tabelle, in cui gli elementi opzionali venivano spostati, anziché sprecare spazio nella tabella principale.
 
Questi modelli non brillano particolarmente in prestazioni.
Ad esempio, un utilizzo comune delle [[banche dati]] è quello di registrare delle informazioni sugli utenti: il loro nome, informazioni di accesso, indirizzo e numeri di telefono. In una banca dati navigazionale tutti questi dati sarebbero stati memorizzati in un unico ''"[[record (database)|record]]"'', e gli elementi non presenti (ad esempio un utente di cui non sia noto l'indirizzo) sarebbero stati semplicemente omessi. Al contrario, in una banca dati relazionale, le informazioni vengono divise, ad esempio, nelle tabelle "utente", "indirizzi", "numeri di telefono" e solo se i dati sono presenti viene creata, nella rispettiva tabella, una ''tupla''.
Delle semplici ''[[query]]'' come "Trova tutte le persone nate in Svezia" richiedono l'attraversamento dell'intero set di dati. Non è prevista alcuna funzione di ricerca; oggi questo potrebbe sembrare una limitazione, ma all'epoca, essendo i dati archiviati su [[nastro magnetico]], operazioni come quelle evidenziate sopra peggioravano ulteriormente il tempo di ricerca.
 
Alcuni esempi di DBMS basati su modelli navigazionali sono: IDS, IDMS, CINCOM, [[TOTAL]] e [[Information Management System|IMS]].
Uno degli aspetti interessanti introdotti nelle banche dati relazionali sta nel collegamento delle tabelle: nel modello relazionale, per ogni ''"[[record (database)|record]]"'' viene definita una "chiave", ovvero un identificatore univoco della ''tupla''. Nella ricostruzione delle relazioni, l'elemento di riferimento, che distingue una riga da un'altra è proprio questa "chiave" e viene richiamata nella definizione della relazione. La chiave può essere uno dei dati stessi che vengono memorizzati (ad esempio, per la tabella utenti, il "Codice Fiscale" della persona), una loro combinazione (chiave composta), o ancora un campo che viene aggiunto specificatamente per questo scopo. In ogni caso, la chiave primaria deve essere presente in ogni tupla e mai ripetuta più di una volta in ogni relazione.
[[File:Relational_Model.jpg|thumb|upright=1.6|Relazione tra tabelle]]
 
==== Base di dati relazionale ====
Questa operazione di "riunificazione" dei dati non è prevista nei linguaggi di programmazione tradizionali: mentre l'approccio navigazionale richiede semplicemente di ''"ciclare"'' per raccogliere i diversi ''"[[record (database)|record]]"'', l'approccio relazionale richiede al programma di "ciclare" per raccogliere le informazioni riguardanti ogni record. Codd, propose, come soluzione, la creazione di un linguaggio dedicato a questo problema. Tale linguaggio, più tardi, si è sviluppato nella codifica che oggi è universalmente adottata e che è il mattone fondamentale delle basi di dati: '''[[SQL]]'''.
{{vedi anche|Modello relazionale}}
 
[[File:Relational_Model.jpg|thumb|In una base di dati relazionale i dati sono organizzati in relazioni, ovvero [[tupla|tuple]] di valori correlati che rappresentano un'entità univoca. Tuple diverse possono essere associate individuando valori chiave in comune.]]
Utilizzando una branca della [[matematica]] chiamata "calcolo delle ''tuple''", dimostrò che questo sistema era in grado di compiere tutte le normali operazioni di amministrazione delle banche dati (inserimento, cancellazione, etc.) e che inoltre consentiva di disporre di uno strumento semplice per trovare e visualizzare gruppi di dati tramite un'unica operazione.
 
Uno degli aspetti interessanti introdotti nelle banche dati relazionali sta nel collegamento delle tabelle: nel modello relazionale, per ogni [[record (database)|record]] viene definita una [[Chiave (basi di dati)|chiave]], ovvero un identificatore univoco della tupla. Nella ricostruzione delle relazioni, l'elemento di riferimento, che distingue una riga da un'altra è proprio questa chiave e viene richiamata nella definizione della relazione. La chiave può essere uno dei dati stessi che vengono memorizzati (ad esempio, per la tabella utenti, il "Codice Fiscale" della persona), una loro combinazione (chiave composta), o ancora un campo che viene aggiunto specificatamente per questo scopo. In ogni caso, la chiave primaria deve essere presente in ogni tupla e mai ripetuta più di una volta in ogni relazione.
[[IBM]] cominciò a implementare questa teoria in alcuni prototipi all'inizio degli [[anni 1970|anni settanta]], come nel ''"System R"''. La prima versione fu realizzata nel [[1974]]/[[1975|75]] con uno strumento "monotabella"; negli anni successivi furono studiati i primi sistemi che potessero supportare la suddivisione dei dati in tabelle separate, utile, come abbiamo visto, per la separazione dei dati opzionali in tabelle diverse da quella principale. Versioni "multiutente" furono realizzate nel [[1978]] e nel [[1979]]; negli stessi anni fu standardizzato il linguaggio [[SQL]]. La superiorità di questo sistema rispetto a ''Codasyl'' fu quindi evidente e IBM passò a sviluppare una versione commerciale di ''"System R"'', che prese il nome di "SQL/DS" prima e di "Database 2" (DB2) infine.
 
Il lavoro di Codd venne proseguito presso l'[[Università di Berkeley]] da [[Eugene Wong]] e [[Michael Stonebraker]]. Il loro progetto, chiamato [[INGRES]] e finanziato con fondi destinati alla creazione di una banca dati [[geografia|geografica]], vide la luce nel [[1973]] e produsse i primi risultati nel [[1974]] anche grazie all'opera di numerosi [[studente|studenti]] che si prestarono quali programmatori (quasi 30 persone lavorarono al progetto). [[INGRES]] era assai simile a ''"System R"'' e prevedeva un linguaggio alternativo a [[SQL]], chiamato [[QUEL]].
[[File:Sql_statement_anatomy.png|upright=1.6|thumb|Esempio di istruzione SQL UPDATE]]
 
Molte delle persone coinvolte nel progetto si convinsero della fattibilità commerciale dello stesso e fondarono imprese per entrare nel mercato con questo prodotto. Sybase, Informix, NonStop SQL e alla fine Ingres stessa nacquero quali ''"spin-off"'' per la diffusione di [[INGRES]] all'inizio degli [[anni 1980|anni ottanta]]. Perfino [[Microsoft]] SQL Server è, per certi versi, una derivazione di ''"Sybase"'' e, quindi, di [[INGRES]]. Solamente la [[Oracle Corporation|Oracle]] di [[Larry Ellison]] partì utilizzando un approccio diverso, basato sul ''"System R"'' di IBM, e alla fine prevalse sulle altre compagnie con il suo prodotto, lanciato nel [[1978]].
 
In [[Svezia]] il lavoro di Codd venne sviluppato nella [[Università di Uppsala]] che sviluppò un diverso prodotto, ''"[[Mimer SQL]]"'', commercializzato nel [[1984]]. Una particolarità di questa soluzione sta nell'introduzione del concetto di [[Transazione (basi di dati)|transazione]], successivamente importata in quasi tutti i DBMS.
 
==== Base di dati multidimensionali ====
Line 120 ⟶ 149:
===== Base di dati a grafo =====
{{vedi anche|Base di dati a grafo}}
[[File:GraphDatabase_PropertyGraph.pngsvg|thumb|[[Base di dati a grafo]]]]
Una base di dati a grafo usa nodi e archi per rappresentare e archiviare l'informazione.
La rappresentazione dei dati mediante [[grafo|grafi]] offre un'alternativa al [[modello relazionale]] che fa uso di tabelle, alle [[Base di dati orientata al documento|basi di dati orientate al documento]] (che usano documenti), o altri, come i sistemi ad [[archivio strutturato|archivi strutturati]] (structured storage) basati su colonne o su cesti non interpretati di dati.
 
I database a grafo sono spesso più veloci di quelli relazionali nell'associazione di set di dati, e mappano in maniera più diretta le strutture di applicazioni orientate agli oggetti.
Scalano più facilmente a grandi quantità di dati e non richiedono le tipiche e onerose operazioni di unione ([[Join (SQL)|join]]).
Dipendono meno da un rigido schema [[entità-relazione]] e sono molto più adeguati per gestire dati mutevoli con schemi evolutivi.
Al contrario, i database relazionali sono tipicamente più veloci nell'eseguire le stesse operazioni su un grande numero di dati.
Line 131 ⟶ 160:
===== Base di dati a oggetti =====
{{vedi anche|Base di dati a oggetti}}
 
I DBMS a oggetti sono detti anche [[ODBMS]] (Object DBMS). Le banche dati multidimensionali ebbero comunque un ruolo importante sul mercato: portarono alla creazione di banche dati a oggetti. Basata sugli stessi concetti generali, questa nuova tipologia di sistemi, consente agli utenti di memorizzare direttamente "oggetti" all'interno delle diverse basi di dati. Ovvero, gli stessi principi della [[Linguaggio di programmazione|programmazione a oggetti]], invece di dover effettuare un adattamento di metodi e variabili.
Evoluzione del precedente [[#Base di dati multidimensionale|modello multidimensionale]], questa tipologia di sistemi consente di memorizzare direttamente "oggetti" affini a quelli utilizzati nella [[programmazione a oggetti]].
Questo permette di aggirare il problema dell{{'}}''[[Object-relational impedance mismatch]]''.
 
Questo può avvenire grazie al particolare concetto di proprietà delle banche dati multidimensionali. Nella programmazione a oggetti, ognuno di questi "oggetti" tipicamente ne conterrà altri. Ad esempio, l'oggetto contenente il Signor Rossi, conterrà un riferimento all'oggetto "Indirizzo". Contenendo il supporto per molti linguaggi di programmazione a oggetti, le banche dati che sfruttano la medesima tecnologia stanno avendo un periodo di forte sviluppo di questi tempi.
 
==== Base di dati spaziale ====
Oggi molti DBMS applicano in realtà un misto tra il modello relazionale e il modello a oggetti. Si parla quindi di ORDBMS (''Object Relational DBMS'').
{{Vedi anche|Base di dati spaziale}}
 
Una base di dati spaziale è una base di dati ottimizzata per archiviare e interrogare dati correlati a oggetti nello spazio, tra cui punti, linee e poligoni. Nelle basi di dati spaziali sono integrate quindi delle funzionalità aggiuntive per processare tipi di dati spaziali. L'[[Open Geospatial Consortium]] ha creato le specifiche ''Simple Features'' che stabiliscono degli standard per l'aggiunta di funzionalità spaziali alle banche dati.
=== In Internet ===
{{F|terminologia informatica|marzo 2010|arg2=basi di dati}}
Sono un particolare tipo di [[Web service|servizi web]] che offrono la possibilità di creare [[Cloud database|basi di dati]] direttamente sul [[Web]]. Questi servizi offrono normalmente tutte le caratteristiche base di una normale base di dati per costruire tabelle strutturate di dati di ogni genere con campi di tipo testo, numeri, data e ora e altri.
 
==== Base di dati multimediale ====
Il loro servizio non è solo quello di [[repository]] o contenitore di dati, ma anche quello di creare un'[[interfaccia grafica]] [[Usabilità|usabile]] per la gestione degli stessi presentandosi come vere e proprie [[applicazione web|applicazioni web]]. La condivisione svolge un ruolo importante proprio perché i dati sono visibili su [[Internet]] e quindi da altre persone che, con le dovute autorizzazioni, possono lavorare sui dati.
{{vedi anche|Base di dati multimediale}}
 
Una base di dati multimediale è una base di dati che raccoglie oggetti di tipo testo, immagine, oggetti 3D, audio, video e una combinazione di questi e fornisce strumenti per la loro memorizzazione, accesso, ricerca e controllo. Attualmente il DBMS Oracle fornisce funzioni tipiche delle basi di dati multimediali.
==== Cloud database ====
{{vedi anche|Cloud database}}
Un [[cloud database]] è un database che tipicamente gira su una piattaforma che sfrutta il paradigma di cloud computing, ed accedendo ad essa tale database viene fornito come un semplice servizio. I servizi del database si prendono cura di garantire la scalabilità e un'elevata disponibilità della base di dati. Essi rendono lo stack del software sottostante trasparente all'utente.
 
=== AltriSecondo databasela tipologia di servizio ===
==== Database parallelo ====
{{vedi anche|Database parallelo}}
Un database parallelo è un tipo di database in cui le prestazioni vengono ottimizzate tramite la parallelizzazione di varie funzionalità, ad esempio il caricamento dei dati, la costruzione degli indici e la gestione delle interrogazioni.[1] Nell'esecuzione parallela, molte operazioni sono eseguite contemporaneamente, al contrario dell'esecuzione seriale, dove le diverse fasi di elaborazione sono sequenziali.
 
==== DatabaseBase spaziledi dati in cloud ====
{{Vedivedi anche|DatabaseCloud spazialedatabase}}
Una [[base di dati spaziale]] (anche nota banca dati spaziale o database spaziale; in sigla: SDB) è una base di dati ottimizzata per archiviare e interrogare dati correlati ad oggetti nello spazio, tra cui, punti, linee e poligoni. Nelle basi di dati spaziali sono integrate quindi delle funzionalità aggiuntive per processare tipi di dati spaziali. L'Open Geospatial Consortium (Consorzio geospaziale aperto) ha creato le specifiche Simple Features che stabiliscono degli standard per l'aggiunta di funzionalità spaziali alle banche dati.
 
Quella dei ''database'' in ''cloud'' è una tipologia di basi di dati che viene ospitata su una piattaforma di ''[[cloud computing]]''. Nelle versioni più evolute la maggior parte del sistema database è gestito dalla piattaforma cloud, lasciando al proprietario solo compiti amministrativi di alto livello. Si parla in questo caso di ''Database-as-a-Service'' (DBaaS).
== Caratteristiche ==
=== Server di basi di dati ===
{{vedi anche|DBMS}}
[[File:Screenshot-mysql-client-text-debian.png|thumb|[[Client]] [[MySQL]] a [[riga di comando]]]]
[[File:Turbobird_screenshot.png|thumb|Interfaccia di [[Firebird SQL]]]]
[[File:MSAccess2019.png|thumb|Interfaccia di [[Microsoft Access]]]]
Il [[server]] è la parte del [[DBMS]], e per estensione il [[server]] su cui il programma opera, che si occupa di fornire i servizi di utilizzo della base di dati ad altri [[programma (informatica)|programmi]] e ad altri [[computer]] secondo la modalità [[client/server]]. Il server memorizza i dati, riceve le richieste dei [[client]] ed elabora le [[Input/output|risposte]] appropriate.
 
=== Secondo la modalità di accesso ai dati ===
Tra i più diffusi DBMS [[open source]] troviamo:
* [[MySQL]]
* [[MariaDB]]
* [[Firebird SQL]]
* [[PostgreSQL]]
 
==== Base di dati parallela ====
I più diffusi sistemi commerciali sono:
{{vedi anche|Database parallelo}}
* [[Oracle Database|Oracle]]
Un database parallelo è un tipo di database in cui le prestazioni vengono ottimizzate tramite la parallelizzazione di varie funzionalità, ad esempio il caricamento dei dati, la costruzione degli indici e la gestione delle interrogazioni. Nell'esecuzione parallela, molte operazioni sono eseguite contemporaneamente, al contrario dell'esecuzione seriale, dove le diverse fasi di elaborazione sono sequenziali.
* [[IBM DB2]]
* [[Microsoft SQL Server]]
* [[Adaptive Server Enterprise|Sybase]]
* [[Microsoft Access]]
* [[Teradata]]
*[[FileMaker]]
 
==== Base di dati distribuita ====
I ''database server'' sono complessi [[sistema software|sistemi software]] concepiti oltre che per memorizzare i dati, anche per fornire un accesso rapido ed efficace a una pluralità di utenti contemporaneamente e garantire protezione sia dai [[guasto|guasti]] sia dagli accessi indebiti (sicurezza o protezione della base dati).
{{vedi anche|Database distribuito}}
In informatica un database distribuito è un database che si trova sotto il controllo di un database management system (DBMS) nel quale gli archivi di dati non sono memorizzati sullo stesso computer bensì su più elaboratori o nodi. In altri termini il database in senso fisico può essere dislocato in più computer situati nello stesso luogo, oppure distribuito in una rete di computer connessi tra loro sotto forma appunto di sistema distribuito.
 
== Progettazione ==
=== Client di base di dati ===
{{vedi anche|Progettazione di basi di dati}}
Tra i [[client]] piu' diffusi di base di dati che si interfacciano lato utente con il [[DBMS]] si hanno:
[[File:ER_Diagram_MMORPG.svg|thumb|Un [[Modello ER|diagramma ER]]. Tipicamente utilizzato durante le prime fasi di progettazione di una base di dati, per rappresentarla in modo astratto.]]
* [[Toad (software)|Toad]]
* [[SQuirreL SQL Client]]
 
La progettazione di basi di dati è il processo di formulazione di un modello dettagliato del database. Questo modello contiene tutte le scelte progettuali a livello logico e fisico e i parametri fisici di memorizzazione necessari per la generazione del [[Data Definition Language|data definition language]] (DDL) che può essere usato per l'implementazione del database. Un modello dei dati completamente specificato contiene i dettagli specifici per ogni singola entità.
=== Transazioni e proprietà ===
{{vedi anche|Transazione (basi di dati)|ACID|Trigger (basi di dati)}}
Una qualunque modifica allo stato del database tramite operazioni varie è detta [[Transazione (basi di dati)|transazione]], la quale deve rispettare le cosiddette regole o proprietà [[ACID]]. Le operazioni più tipiche in un DB sono quelle riassunte dall'acronimo [[CRUD]].
 
== Gestione ==
=== Efficienza e sicurezza ===
{{vedi anche|ProtezioneDatabase daimanagement guasti (basi di dati)|Attacco ai databasesystem}}
{{...|informatica}}
Sicurezza significa impedire che la base dati venga danneggiata da interventi accidentali o non autorizzati, per esempio un [[attacco ai database]], e mantenerne l'integrità ovvero garantire che le operazioni effettuate sulla base di dati da utenti autorizzati non provochino una perdita consistente di dati, garantendone al contempo l'[[affidabilità (basi di dati)|affidabilità]]. La protezione da accessi non autorizzati è un tema importante nella gestione delle basi di dati che si rivelano vulnerabili nei seguenti punti:
 
=== Linguaggi di interrogazione ===
* [[Sicurezza informatica|Sicurezza dei server]]
* Connessioni tra database
* Controllo sugli accessi al database.
* [[Data warehouse]]
* [[Data mining]]
 
== Implementazione e gestione ==
[[File:ER_Diagram_MMORPG.png|thumb|[[Modello ER|Diagramma ER]] per la [[progettazione di basi di dati]]]]
=== Progettazione ===
{{vedi anche|Progettazione di basi di dati}}
La progettazione di basi di dati è il processo di formulazione di un modello dettagliato del database. Questo modello contiene tutte le scelte progettuali a livello logico e fisico e i parametri fisici di memorizzazione necessari per la generazione del data definition language (DDL) che può essere usato per l'implementazione del database. Un modello dei dati completamente specificato contiene i dettagli specifici per ogni singola entità.
 
=== Linguaggi utilizzati ===
Nell'ambito dell'utilizzo/amministrazione della base di dati, una qualunque operazione sulla base di dati da parte dell'utente/amministratore su DBMS è ottenibile tramite un opportuno linguaggio attraverso un [[DBMS manager]] a [[interfaccia grafica]] o a [[interfaccia a riga di comando]]. In generale è possibile distinguere più linguaggi per basi di dati, ciascuno con lessico e [[sintassi (informatica)|sintassi]] che definiscono tutte le [[istruzione (informatica)|istruzioni]] possibili, a seconda del loro utilizzo o finalità a partire dalla creazione/progettazione, gestione, ristrutturazione, sicurezza, fino all'interrogazione della base di dati stessa:
 
Line 223 ⟶ 220:
* Linguaggi grafici e ''[[user-friendly]]'', come [[QBE]] (Query By Example), che possono essere utilizzati anche dai meno esperti.
 
== Aspetti legali ==
== Rapporto col diritto d'autore ==
{{vedi anche|Diritto d'autore#Banche dati}}
{{U|verso=a|Diritto d'autore#Banche dati|informatica|maggio 2024}}
{{L|diritto|gennaio 2024|arg2=informatica}}
 
Le banche di dati sono tutelate dalla legge sul [[diritto d'autore]] sia come opere di ingegno di carattere creativo sia come bene prodotto grazie ai rilevanti investimenti finanziari.
=== Diritto ''sui generis'' ===
Il diritto ''sui generis'' è rivolto al costitutore di una banca di dati, individuato in colui che ha effettuato investimenti di denaro, tempo e lavoro, indipendentemente dal valore creativo e originale dell’opera.
 
Il diritto ''sui generis'' è stato riconosciuto in ambito comunitario grazie all’introduzione della Direttiva 96/9/CE presentata dall’[[Unione europea|Unione Europea]], in cui si parla del suddetto diritto nel capitolo III e più precisamente negli articoli che vanno dal 7 fino all'11.<ref>{{Cita web|url=https://eur-lex.europa.eu/legal-content/IT/TXT/HTML/?uri=CELEX:31996L0009&from=EN|titolo=Direttiva 96/9/CE del Parlamento europeo e del Consiglio}}</ref>
In Italia L'art 64 quinquies della [[legge 633/1941]] sul diritto d'autore prevede che:<blockquote>''L'autore di un banca di dati ha il diritto esclusivo di eseguire o autorizzare:''</blockquote><blockquote>''a) la riproduzione permanente o temporanea, totale o parziale, con qualsiasi mezzo e in qualsiasi forma;''</blockquote><blockquote>''b) la traduzione, l'adattamento, una diversa disposizione e ogni altra modifica;''</blockquote><blockquote>''c) qualsiasi forma di distribuzione al pubblico dell'originale o di copie della banca di dati; la prima vendita di una copia nel territorio dell'Unione europea da parte del titolare del diritto o con il suo consenso esaurisce il diritto di controllare, all'interno dell'Unione stessa, le vendite successive della copia;''</blockquote><blockquote>''d) qualsiasi presentazione, dimostrazione o comunicazione in pubblico, ivi compresa la trasmissione effettuata con qualsiasi mezzo e in qualsiasi forma;''</blockquote><blockquote>''e) qualsiasi riproduzione, distribuzione, comunicazione, presentazione o dimostrazione in pubblico dei risultati delle operazioni di cui alla lettera b).''<ref>{{Cita web|url=http://www.altalex.com/documents/codici-altalex/2014/06/26/legge-sul-diritto-d-autore#titolo1|titolo=Legge sul diritto d'autore {{!}} Altalex|sito=Altalex|accesso=18 gennaio 2017|urlarchivio=https://web.archive.org/web/20190605100158/https://www.altalex.com/documents/codici-altalex/2014/06/26/legge-sul-diritto-d-autore#titolo1|dataarchivio=5 giugno 2019|urlmorto=sì}}</ref></blockquote>L'autore di una banca di dati, che ha scelto e organizzato creativamente il materiale all'interno della raccolta, è quindi titolare delle facoltà esclusive di natura patrimoniale e morale riconosciute a tutti gli autori di opere dell'ingegno secondo l'articolo 64-quinquies e seg. della [[legge 633/1941]]. I diritti esclusivi di riproduzione, traduzione, adattamento, distribuzione, presentazione e dimostrazione sono detti diritti patrimoniali, cioè hanno un valore economicamente valutabile. In quanto patrimoniali i sopracitati diritti sono trasferibili.
 
L'autore può quindi effettuare o autorizzare: la riproduzione permanente o temporanea, totale o parziale, la traduzione, le modifiche, gli adattamenti e le diverse disposizioni del materiale, la distribuzione, la presentazione in pubblico e l'utilizzazione economica.
 
C'è invece la possibilità di una libera utilizzazione quando l'accesso e la consultazione sono svolte per finalità didattiche o di ricerca scientifica, quando l'uso dei dati persegue fini di sicurezza pubblica e quando i dati sono utilizzati per una procedura amministrativa o giurisdizionale. La durata del diritto d'autore è di 70 anni dalla morte dell'autore.
 
In qualunque caso le banche dati sono tutelate dal diritto d’autore indipendentemente dalla tutela eventualmente accordata alle opere o ai dati da cui esse sono composte, con la precisazione che la tutela della banca dati non si estende alle opere o dati in questione. In sostanza la tutela riguarda la struttura della banca dati, in pratica la sua forma espressiva.
 
Nel caso in cui la banca di dati sia originale, cioè con dati organizzati secondo criteri originali e non per esempio in ordine alfabetico o cronologico, l'autore gode dei diritti morali e di sfruttamento economico della banca dati stessa. Invece nel caso in cui la banca dati non sia originale la tutela dei diritti non è per l'autore, ma per il costruttore ovvero colui che effettua investimenti per la costituzione della banca dati. Al costitutore della banca di dati sarà riconosciuta, sul solo territorio dell'[[Unione europea]], la titolarità di un diritto [[sui generis]] diverso dal diritto d'autore e dai diritti connessi, volto a tutelare il lavoro svolto e gli investimenti effettuati. Infatti il costitutore può vietare le operazioni di estrazione e reimpiego della totalità o di una parte della banca dati. La durata del diritto del costitutore è di 15 anni, rinnovabile in caso di modifiche o integrazioni sostanziali apportate alla raccolta. Il conteggio dei 15 anni comincia dal 1º gennaio dell'anno successivo alla data del completamento della banca dati. Nel caso in cui il database sia accessibile via internet i 15 anni cominciano dal 1º gennaio successivo alla messa a disposizione della banca di dati stessa.
 
=== Diritto sui generis ===
Il diritto sui generis è rivolto al costitutore di una banca di dati, individuato in colui che ha effettuato investimenti di denaro, tempo e lavoro, indipendentemente dal valore creativo e originale dell’opera.
 
Il diritto sui generis è stato riconosciuto in ambito comunitario grazie all’introduzione della Direttiva 96/9/CE presentata dall’[[Unione europea|Unione Europea]], in cui si parla del suddetto diritto nel capitolo III e più precisamente negli articoli che vanno dal 7 fino all'11.<ref>{{Cita web|url=https://eur-lex.europa.eu/legal-content/IT/TXT/HTML/?uri=CELEX:31996L0009&from=EN|titolo=Direttiva 96/9/CE del Parlamento europeo e del Consiglio}}</ref>
 
Tramite questo diritto, gli Stati membri conferiscono al costitutore di una banca di dati la possibilità di vietare operazioni di estrazione e/o reimpiego della totalità o di una parte sostanziale del contenuto della stessa, valutata in termini qualitativi o quantitativi, qualora il conseguimento, la verifica e la presentazione di tale contenuto attestino un investimento rilevante.
Line 255 ⟶ 245:
Per tali ragioni la tutela sui generis trova il suo fondamento giuridico nel [[principio di territorialità]], in quanto solo le banche dati create da un cittadino di uno Stato membro dell’Unione Europea ne beneficiano.
 
Il requisito fondamentale richiesto per la concessione della tutela sui generis è un ingente investimento di risorse umane ed economiche, in modo tale da poter differenziare la raccolta con una semplice copia di informazioni, che non richiede un impiego tanto grande.L’investimento L'investimento che viene preso in considerazione riguarda le attività di raccolta di dati, la verifica delle informazioni e la presentazione dell’insieme dei materiali.
 
Analizzando il [[Dirittodiritto d'autore|diritto d’autore]] e il diritto sui generis, in questa prospettiva, è facile capire le differenze. Il primo si limita a proteggere la forma, quindi l’architettura e la sequenza in cui sono disposti i dati, frutto di una elaborazione creativa; il secondo si applica al materiale raccolto, a prescindere dal modo in cui viene organizzato.
 
=== In Italia ===
In Italia l'art 64 quinquies della [[legge 633/1941]] sul diritto d'autore prevede che:{{Citazione|L'autore di una banca di dati ha il diritto esclusivo di eseguire o autorizzare:}}{{Citazione|a) la riproduzione permanente o temporanea, totale o parziale, con qualsiasi mezzo e in qualsiasi forma;}}{{Citazione|b) la traduzione, l'adattamento, una diversa disposizione e ogni altra modifica;}}{{Citazione|c) qualsiasi forma di distribuzione al pubblico dell'originale o di copie della banca di dati; la prima vendita di una copia nel territorio dell'Unione europea da parte del titolare del diritto o con il suo consenso esaurisce il diritto di controllare, all'interno dell'Unione stessa, le vendite successive della copia;}}{{Citazione|d) qualsiasi presentazione, dimostrazione o comunicazione in pubblico, ivi compresa la trasmissione effettuata con qualsiasi mezzo e in qualsiasi forma;}}{{Citazione|e) qualsiasi riproduzione, distribuzione, comunicazione, presentazione o dimostrazione in pubblico dei risultati delle operazioni di cui alla lettera b).}}<ref>{{Cita web|url=http://www.altalex.com/documents/codici-altalex/2014/06/26/legge-sul-diritto-d-autore#titolo1|titolo=Legge sul diritto d'autore {{!}} Altalex|sito=Altalex|accesso=18 gennaio 2017|urlarchivio=https://web.archive.org/web/20190605100158/https://www.altalex.com/documents/codici-altalex/2014/06/26/legge-sul-diritto-d-autore#titolo1|dataarchivio=5 giugno 2019|urlmorto=sì}}</ref>
 
L'autore di una banca di dati, che ha scelto e organizzato creativamente il materiale all'interno della raccolta, è quindi titolare delle facoltà esclusive di natura patrimoniale e morale riconosciute a tutti gli autori di opere dell'ingegno secondo l'articolo 64-quinquies e seg. della [[legge 633/1941]]. I diritti esclusivi di riproduzione, traduzione, adattamento, distribuzione, presentazione e dimostrazione sono detti diritti patrimoniali, cioè hanno un valore economicamente valutabile. In quanto patrimoniali i sopracitati diritti sono trasferibili.
 
L'autore può quindi effettuare o autorizzare: la riproduzione permanente o temporanea, totale o parziale, la traduzione, le modifiche, gli adattamenti e le diverse disposizioni del materiale, la distribuzione, la presentazione in pubblico e l'utilizzazione economica.
 
C'è invece la possibilità di una libera utilizzazione quando l'accesso e la consultazione sono svolte per finalità didattiche o di ricerca scientifica, quando l'uso dei dati persegue fini di sicurezza pubblica e quando i dati sono utilizzati per una procedura amministrativa o giurisdizionale. La durata del diritto d'autore è di 70 anni dalla morte dell'autore.
 
In qualunque caso le banche dati sono tutelate dal diritto d’autore indipendentemente dalla tutela eventualmente accordata alle opere o ai dati da cui esse sono composte, con la precisazione che la tutela della banca dati non si estende alle opere o dati in questione. In sostanza la tutela riguarda la struttura della banca dati, in pratica la sua forma espressiva.
 
Nel caso in cui la banca di dati sia originale, cioè con dati organizzati secondo criteri originali e non per esempio in ordine alfabetico o cronologico, l'autore gode dei diritti morali e di sfruttamento economico della banca dati stessa. Invece nel caso in cui la banca dati non sia originale la tutela dei diritti non è per l'autore, ma per il costruttore ovvero colui che effettua investimenti per la costituzione della banca dati. Al costitutore della banca di dati sarà riconosciuta, sul solo territorio dell'[[Unione europea]], la titolarità di un diritto [[sui generis]] diverso dal diritto d'autore e dai diritti connessi, volto a tutelare il lavoro svolto e gli investimenti effettuati. Infatti il costitutore può vietare le operazioni di estrazione e reimpiego della totalità o di una parte della banca dati. La durata del diritto del costitutore è di 15 anni, rinnovabile in caso di modifiche o integrazioni sostanziali apportate alla raccolta. Il conteggio dei 15 anni comincia dal 1º gennaio dell'anno successivo alla data del completamento della banca dati. Nel caso in cui il database sia accessibile via internet i 15 anni cominciano dal 1º gennaio successivo alla messa a disposizione della banca di dati stessa.
 
=== Licenze ===
{{Vedi anche|Licenza d'uso}}
Le licenze d'uso instaurano un rapporto contrattuale con cui il licenziante concede dei permessi al licenziatario richiedendo il permesso di alcune condizioni. Queste due componenti sono di solito presenti in tutte le licenze d'uso e la differenza è maggiormente osservabile se guardiamo le licenze [[Creative Commons]]. Dal momento che in Unione Europea esista un particolare sistema di tutela per le banche dati comporta che una licenza d'uso per banche dati, per funzionare in modo corretto sul contesto europeo, debba tenerne conto e soprattutto debba gestire il diritto sui generis.<ref>{{cita web|url=https://ondata.github.io/aspetti-legali-opendata/le-licenze-per-dati-aperti/|titolo=Le licenze per dati aperti}}</ref> Una licenza che non menzioni quel diritto e non consideri le sue peculiarità rischia di rimanere "monca", ossia parzialmente inefficiente, dato che quel diritto non è correttamente licenziato.
 
[[Licenza libera|Licenze libere]] di banche dati:
* [[CCPL]]
* [[Open Database License]] (utilizzata da [[OpenStreetMap|Open Street Map]])
* [[CC0]] (Licenza che consiste nella rinuncia di tutti i diritti)
* [[Open Government License]]
* [[French PSI Re-Used License]]
* [[Italian Open Data License#IODL v1.0|IODL 1.0]] (Licenze del [[Governo italiano]] [[copyleft]])
* [[Italian Open Data License#IODL v2.0|IODL 2.0]] (Licenze del Governo italiano non copyleft)
 
== Applicazioni ==
Line 266 ⟶ 282:
 
== Bibliografia ==
* {{cita libro
* {{cita libro| autore1=Paolo Atzeni | autore2=Stefano Ceri | autore3=Stefano Paraboschi | autore4=Riccardo Torlone | titolo=Basi di dati (modelli e linguaggi di interrogazione) | anno=2003 | editore=McGraw Hill | ISBN=978-88-386-6600-1 }}
|autore = Paolo Atzeni
* Atzeni, Ceri, Fraternali, Paraboschi, Torlone – ''Basi di dati (architetture e linee di evoluzione)'' - McGraw Hill, 2003
|autore2 = Stefano Ceri
|autore3 = Piero Fraternali
|autore4 = Stefano Paraboschi
|autore5 = Riccardo Torlone
|titolo = Basi di dati
|editore = McGraw-Hill
|anno = 2018
|edizione = 5
|città = Milano
|ISBN = 978-88-386-9445-5
|cid = Atzeni 2018
}}
 
*{{Cita testo|titolo=Data base – Concetti e disegno|url=https://archive.org/details/databaseconcettiedisegno|autore=Roberto Doretti|editore=Gruppo Editoriale Jackson|anno=1985|ISBN=88-7056-174-7}}
* {{en}} Ramez Elmasri, Shamkant B. Navathe, ''Fundamentals of Database Systems'', Fourth Edition, Addison Wesley, 2003
Line 273 ⟶ 302:
* Giovanni Guglielmetti, ''La tutela delle banche dati con diritto sui generis nella direttiva 96/9/CE'', in ''Contratto e impresa / Europa'', 1997, pag. 177 e segg.
* Paola A.E. Frassi, ''Creazioni utili e diritto d'autore. Programmi per elaboratore e raccolte di dati'', Giuffrè, 1997
* Laura Chimienti e Niccolò Machiavelli, ''Banche dati e diritto d'autore'', Giuffrè, 1999
* {{cita pubblicazione
|autore = [[Edgar F. Codd]]
|titolo = A Relational Model of Data for Large Shared Data Banks
|rivista = Communications of ACM
|volume = 13
|numero = 6
|data = 1970-06-01
|editore = [[Association for Computing Machinery]]
|lingua = en
|doi = 10.1145/362384.362685
|cid = Codd 1970
}}
 
== Voci correlate ==
{{div col|5}}
* [[ACID]]
* [[Affidabilità (basi di dati)]]
* [[Algebra relazionale]]
* [[Sistemista]] (DBA)
* [[Attacco ai database]]
* [[Base di conoscenza]]
* [[Base di dati spaziale]]
* [[Base di dati multimediale]]
* [[Base di dati a grafo]]
* [[Base di dati multimediale]]
* [[Cache]]
* [[Campo (informatica)]]
* [[Chiave (basi di dati)]]
* [[Colonna virtuale]]
* [[Base di dati orientata al documento]]
* [[Dato]]
* [[Data integration]]
* [[Database parallelo]]
* [[Database distribuito]]
* [[Cloud database]]
* [[Database management system]]
* [[Database Source Name]]
* [[Descrittore (informazione)]]
* [[Direttiva relativa alla tutela giuridica delle banche di dati]]
* [[Domain Name System]]
* [[Dump]]
* [[Linguaggio di interrogazione]]
* [[Modello relazionale]]
* [[Modello reticolare]]
* [[Modello gerarchico]]
* [[Modello a oggetti]]
* [[Base di dati relazionale a oggetti|Modello relazionale a oggetti]]
* [[Modello E-R]]
* [[Persistenza (informatica)|Persistenza]]
* [[Progettazione di basi di dati]]
* [[Normalizzazione (informatica)]]
* [[Protezione dai guasti (basi di dati)|Protezione del database]]
* [[Query]]
* [[Record (database)]]
* [[Vista (basi di dati)]]
* [[Schema di database]]
* [[Schema evolution]]
Line 322 ⟶ 333:
* [[Structured Query Language]]
* [[Database Source Name]]
* [[Java DataBase Connectivity]]
* [[JDBC]]
* [[Open Database Connectivity]]
* [[ODBC]]
* [[Tablespace]]
* [[Transazione (basi di dati)]]
* [[Trigger (basi di dati)]]
* [[Data entry]]
* [[Data warehouse]]
* [[Business intelligence]]
* [[Big data]]
* [[Big data analytics]]
* [[Toad (software)]]
* [[SQuirreL SQL Client]]
{{div col end}}
 
== Altri progetti ==
{{interprogetto|preposizione=suisul|etichetta=database|wikt=database|v_oggetto=la materia|v_preposizione= |v_etichetta=Basi di dati|v=Materia: Basi di dati 1}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC|database|database}}
* {{cita web|https://sites.google.com/site/appuntididatabase/home|Appunti di database}}
* {{cita web | 1 = https://sites.google.com/site/appuntididatabase/home | 2 = Appunti di database | accesso = 4 maggio 2014 | dataarchivio = 4 maggio 2014 | urlarchivio = https://web.archive.org/web/20140504231338/https://sites.google.com/site/appuntididatabase/home | urlmorto = sì }}
* {{cita web | 1 = http://www.illuminamente.org/database | 2 = Appunti sulla progettazione di database relazionali | accesso = 4 maggio 2014 | urlarchivio = https://web.archive.org/web/20140505015925/http://www.illuminamente.org/database/ | dataarchivio = 5 maggio 2014 | urlmorto = sì }}
* {{cita web | 1 = http://www.dirittodautore.it | 2 = Diritto D'autore | accesso = 26 giugno 2020 | urlarchivio = https://web.archive.org/web/20190524061232/http://www.dirittodautore.it/ | dataarchivio = 24 maggio 2019 | urlmorto = sì }}