Database management system: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
orfanizzo
Riga 10:
== Descrizione ==
 
Un DBMS può essere costituito da un insieme complesso di programmi [[software]] che controllano l'organizzazione, la memorizzazione e il reperimento dei dati ([[Campo (informatica)|campi]], [[Recordrecord (informaticadatabase)|record]] e archivi) in un database. Un DBMS controlla anche la sicurezza e l'integrità del database. Il DBMS accetta richieste di dati da parte del programma [[applicazione (informatica)|applicativo]] e "istruisce" il [[sistema operativo]] per il trasferimento dei dati appropriati.
 
=== Autorizzazioni ===
Riga 63:
[[Edgar F. Codd]] lavorava alla sede [[california]]na della [[IBM]] come ricercatore sulla nascente tecnologia degli [[hard disk]] 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 Basi di dati condivise" (''A Relational Model of Data for Large Shared Data Banks'').
 
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 (informaticadatabase)|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.
 
Ad esempio, un utilizzo comune delle [[database|basi di dati]] è quello di registrare delle informazioni sugli utenti: il loro nome, informazioni di accesso, indirizzo e numeri di telefono. In un database navigazionale tutti questi dati sarebbero stati memorizzati in un unico ''"[[record (informaticadatabase)|record]]"'', e gli elementi non presenti (ad esempio un utente di cui non sia noto l'indirizzo) sarebbero stati semplicemente omessi. Al contrario, in un database 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''.
 
Uno degli aspetti interessanti introdotti nei database relazionali sta nel collegamento delle tabelle: nel modello relazionale, per ogni ''"[[record (informaticadatabase)|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), o un campo che viene aggiunto specificatamente per questo scopo (spesso chiamato ''"OID"'' - ''"Object IDentifier"''), o una combinazione di più campi (chiave composta).
 
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 (informaticadatabase)|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]]'''.
 
Utilizzando una branca della [[matematica]] chiamata "calcolo delle ''tuple''", dimostrò che questo sistema era in grado di compiere tutte le normali operazioni di amministrazione dei database (inserimento, cancellazione, etc.) e che inoltre consentiva di disporre di uno strumento semplice per trovare e visualizzare gruppi di dati tramite un'unica operazione.