Riassunto gerarchico delle nozioni del corso 2004-2005 di BASI
DI DATI della Prof. Nicoletta Dessì - Università degli Studi di
Cagliari, Facoltà di Scienze Matematiche Fisiche Naturali,
Dipartimento di Matematica ed Informatica, Corso di Laurea in
Informatica
Riferimenti: Raghu Ramakrishnan, Johannes Gehrke - Sistemi di basi
di dati, McGraw-Hill
- Introduzione
- Basi di Dati (DataBase - db)
- insieme organizzato di dati utilizzati per il supporto allo svolgimento di attività di un'ente (azienda, ufficio, persona)
- punti di vista
- metodologico
- tecnologico
- (sistema) organizzazione / azienda
- utilizza un'insieme di risorse e regole per lo svolgimento
coordinato di attività al fine di conseguire uno scopo
- persone
- denaro
- materiali
- informazioni
- utilizza un'insieme di risorse e regole per lo svolgimento
coordinato di attività al fine di conseguire uno scopo
- sistema informativo
- è il componente di un'organizzazione che gestisce (acquisisce, elabora, conserva, produce) le informazioni di interesse utili al perseguimento degli scopi della stessa
- osservazioni
- ogni organizzazione ha un sistema informativo
- il sistema informativo è il supporto ad altri sottosistemi
- il sistema informativo è di solito suddiviso in sottosistemi
- funzioni
- acquisizione delle informazioni
- conservazione delle informazioni
- elaborazione delle informazioni
- distribuzione, scambio di informazioni
- nota
- in linea di principio non esiste nessuna correlazione tra il concetto di "sistema informativo" e l'informatizzazione, questo concetto è indipendente da qualsiasi automazione
- esistono organizzazioni la cui ragion d'essere è la gestione delle informazioni e che operano da secoli, come le banche
- sistema informatico
- porzione automatizzata del sistema informativo
- anche prima dei sistemi informatici, molti sistemi informativi hanno adottato modalità di razionalizzazione e standardizzazione delle informazioni
- relazioni tra i precedenti sistemi
- sistema azienda
- un sottoinsieme dell'azienda è il sistema informativo
- un sottoinsieme del sistema informativo è il sistema informatico
- un sottoinsieme dell'azienda è il sistema informativo
- sistema azienda
- informazioni
- notizie dati o elementi che consentono di avere conoscenza più o meno esatta di fatti, situazioni, modi di essere
- vengono rappresentate in maniera essenziale e spartana attraverso i dati
- la rappresentazione precisa di forme di conoscenza e informazione più complesse dei singoli dati è difficile
- dati
- ciò che è immediatamente presente alla conoscenza prima di ogni elaborazione
- in informatica: elementi di informazione costituiti da simboli che devono essere elaborati
- sono fatti elementari, informazioni codificate che hanno bisogno di essere interpretate per fornire conoscenza
- i dati costituiscono una risorsa strategica più stabile nel tempo di altre componenti (processi, tecnologie, ruoli umani)
- informazioni e dati
- occorre fornire un contesto interpretativo ai dati per accedere in modo efficiente alle informazioni da essi codificate
- in informatica questo contesto tecnologico è rappresentato dai DBMS
- Base di dati
- generica - insieme organizzato di dati utilizzati per il
supporto allo svolgimento delle attività di un ente
- specifica - collezione di dati gestita da un DBMS
- generica - insieme organizzato di dati utilizzati per il
supporto allo svolgimento delle attività di un ente
- DBMS (Data Base Management System - Sistema di Gestione di Basi
di Dati)
- è un sistema (prodotto software) in grado di gestire collezioni
di dati:
- grandi
- solitamente più della RAM, vanno quindi gestite su memoria secondaria
- il limite massimo è dato dalla capienza della memoria secondaria
- persistenti
- i dati hanno un ciclo di vita che dura nel tempo
- condivise
- è una risorsa che può essere condivisa tra più applicazioni che ad esempio possono compiere l'accesso simultaneo ad uno stesso dato
- sono necessari meccanismi di autorizzazione per regolamentare attività diversa su dati in parte condivisi
- sono necessari meccanismi di controllo della concorrenza durante le attività multi-utente su dati condivisi
- grandi
- permettono una gestione dei dati:
- affidabile
- garanzia, gestione e conservazione dei dati
- efficiente
- utilizzo di risorse (tempo e spazio) accettabili per gli utilizzatori
- efficace
- capacità di rendere produttive le attività dei suoi utilizzatori
- affidabile
- DBMS vs File System
- la gestione di grandi insiemi di dati persistenti è possibile anche attraverso strumenti più semplici dei db quali i file system
- i filesystem consentono anche forme rudimentali di condivisione
- i DBMS estendono le funzionalità dei file system fornendo più servizi ed in maniera integrata
- svantaggi del file system
- ridondanza
- inconsistenza
- privatezza
- condivisione
- accesso concorrente
- i DBMS sono maggiormente flessibili
- è possibile accedere contemporaneamente a record diversi di uno stesso file o addirittura allo stesso record (solo in lettura)
- esiste una porzione della base di dati, detta catalogo o dizionario, che contiene una descrizione centralizzata dei dati che può essere utilizzata dai vari programmi
- organizzazione tipica di una soluzione basata su DBMS
(dall'alto in basso)
- software applicativo
- DBMS
- sistema operativo
- database (unico)
- i file system
- prevedono forme di condivisione, permettendo accessi contemporanei in lettura ed esclusivi in scrittura
- ogni programma tradizionale che accede a un file contiene una descrizione della struttura del file stesso con i conseguenti rischi di incoerenza fra le descrizioni e i file stessi
- organizzazione tipica di una soluzione basata su file system
(dall'alto in basso)
- software applicativo
- sistema operativo
- file (più file distinti)
- obiettivi di un DBMS
- integrazione dei dati
- consente di aumentare la possibilità di consultare i dati, ridurre la ridondanza e l'inconsistenza
- indipendenza dei dati
- consente di agevolare lo sviluppo di nuove applicazioni e facilitare la manutenzione delle applicazioni
- controllo centralizzato sui dati
- consente di garantire la qualità, privatezza e sicurezza dei dati
- integrazione dei dati
- servizi offerti da un DBMS
- descrizione dei dati
- consente di specificare i dati da memorizzare
- manipolazione dei dati
- consente di accedere ai dati per modificare o cancellare quelli esistenti o inserirne di nuovi
- controllo di integrità
- evita la memorizzazione di dati non corretti
- strutture di memorizzazione
- consentono di rappresentare in memoria i concetti di un modello dei dati
- ottimizzazione delle interrogazioni
- determina la strategia più efficiente per accedere ai dati
- privatezza dei dati
- per proteggere i dati da accessi non autorizzati
- ripristino del DB
- per evitare che errori o malfunzionamenti creino un DB inconsistente
- dizionario dei dati
- per determinare i dati disponibili nel DB
- descrizione dei dati
- esempi di DBMS
- commerciali
- Access
- DB2
- Oracle
- Informix
- Sybase
- ...
- gratuiti
- MySQL
- PostGres
- Firebird
- ...
- commerciali
- è un sistema (prodotto software) in grado di gestire collezioni
di dati:
- modello dei dati
- è un insieme di costrutti, o formalismo, che descrive i dati ad alto livello nascondendo molti dettagli di memorizzazione a basso livello
- in un linguaggio di programmazione l'analogia con il modello dei dati è offerta dalle variabili (in quanto descrivono il tipo di dato)
- è composto da 3 componenti fondamentali
- un insieme di strutture dati
- una notazione per specificare i dati tramite le strutture dati del modello
- un insieme di operazioni per manipolare i dati
- esempio applicato a studenti e corsi
- entità
- Nicola Piras, corso basi di dati
- insiemi di entità
- è l'insieme di tutti gli studenti e di tutti i corsi
- attributi
- nome studente, matricola, nome del corso
- associazione
- è il fatto che Nicola Piras frequenta il corso di basi di dati e quello di laboratorio V
- entità
- qualsiasi modello dei dati deve rispondere e due domande
fondamentali
- a) come rappresentare le entità e i loro attributi
- b) come rappresentare le associazioni
- la maggioranza dei modelli usa strutture come il record, in cui
ogni componente rappresenta un attributo
- i modelli differiscono notevolmente sotto questo aspetto, in quanto la rappresentazione può avvenire mediante strutture, valori, puntatori
- esistono due tipi principali di modelli
- logici
- sono utilizzati per l'organizzazione dei dati stessi
- ad essi fanno riferimento i programmi
- sono indipendenti dalle strutture fisiche
- ne sono un esempio i modelli
- relazionale
- reticolare
- gerarchico
- a oggetti
- descrivono l'organizzazione dei dati nei DBMS "visibile" all'utente
- sono indipendenti dalle strutture fisiche
- evoluzione
- anni 60 - modelli di prima generazione
- reticolare
- detto anche Codasyl, ideato da IBM
- standard fallito
- gerarchico
- utilizza una struttura ad albero
- reticolare
- anni 70 - modello relazionale
- evoluzioni recenti (senza successo)
- modelli relazionali estesi (basi di dati attive)
- modelli dei dati ad oggetti
- modelli di basi di dati deduttive
- modelli relazionali ad oggetti
- anni 60 - modelli di prima generazione
- modello logico dei dati
- è così definito l'insieme dei costrutti utilizzati da un DBMS per organizzare i dati di interesse e descrivere le operazioni su di essi
- all'interno di questo modello sono definite le regole per gli schemi e per le istanze
- concettuali o semantici
- permettono di rappresentare ad alto livello i concetti del mondo reale
- sono utilizzati nelle fasi preliminari di progettazione
- il più noto è il modello Entity-Relationship o ER
- logici
- scenario di interazione utente/DBMS
- esistono vari utenti che interagiscono con il DBMS
- il DBMS a sua volta interagisce con il DB
- è solo il DBMS ad aver accesso al DB fungendo da interfaccia con gli utenti
- architettura a tre livelli ANSI/SPARC (dall'alto verso il
basso)
- utenti
- livello 1 - schema esterno
- è la descrizione di parte della base di dati in un modello
logico
- (viste parziali, derivate, anche in modelli diversi)
- una vista è una rappresentazione logica di tutti i dati o di parte di essi (un sottoinsieme di tabelle)
- (viste parziali, derivate, anche in modelli diversi)
- è la descrizione di parte della base di dati in un modello
logico
- livello 2 - schema logico
- è la descrizione dell'intera base di dati nel modello logico "principale" del DBMS
- esempio
- modello relazionale : schema tabelle
- livello 3 - schema interno o fisico
- è la rappresentazione dello schema logico per mezzo di strutture fisiche di memorizzazione
- esempio
- istanze, dati, file
- base di dati
- note
- l'utente ha a che fare solo con una rappresentazione logica dei dati
- i dati non dipendono più dalle applicazioni
- è possibile eseguire modifiche a livello fisico senza che l'utente ne risenta
- indipendenza fisica
- il livello logico e quello esterno sono indipendenti da quello
fisico e viceversa
- una tabella è utilizzata nello stesso modo qualunque sia la sua implementazione fisica che può anche variare nel tempo
- indipendenza fisica dei dati
- consente di cambiare lo schema interno, come ad esempio la riorganizzazione dei file fisici, senza dover cambiare lo schema logico o le viste esterne
- il livello logico e quello esterno sono indipendenti da quello
fisico e viceversa
- indipendenza logica
- il livello esterno è indipendente da quello logico e viceversa
- aggiunte o modifiche alle viste non richiedono modifiche a livello logico
- modifiche allo schema logico che lascino inalterato lo schema esterno sono trasparenti
- indipendenza logica dei dati
- è la capacità di cambiare lo schema logico senza dover cambiare le viste esterne o i programmi applicativi
- è sufficiente cambiare la definizione della vista
- il livello esterno è indipendente da quello logico e viceversa
- linguaggi dei DBMS
- DDL - Data Definition Language
- consente di effettuare operazioni sullo schema
- definisce:
- lo schema logico e le viste del DB
- vincoli di integrità
- autorizzazioni per l'accesso ai dati
- esempio
- CREATE TABLE orario{
- insegnamento char(20),
- docente char(20),
- aula char(4),
- ora char(5)
- }
- CREATE TABLE orario{
- DML - Data Manipulation Language
- consente di effettuare operazioni sui dati
- utilizzato per l'interrogazione (query language) e l'aggiornamento del DB
- esempio
- SELECT docente FROM orario WHERE aula = 'n1'
- DDL - Data Definition Language
- linguaggi per basi di dati
- linguaggi testuali interattivi (SQL)
- linguaggi interattivi immersi in un linguaggio ospite
- problema del conflitto d'impedenza (impedance matching)
- con interfacce non testuali (MS Access)
- interfacce dei DBMS
- interfacce a menu per la navigazione
- interfacce a moduli
- interfacce grafiche d'utente
- interfacce in linguaggio naturale
- interfacce per utenti parametrici
- interfacce per il DBA - Data Base Adminitrator
- Data Base Administrator
- persona o gruppo di persone responsabili
- del controllo centralizzato e gestione del sistema
- delle prestazioni
- dell'affidabilità
- delle autorizzazioni
- tra le sue funzioni rientrano in parte anche quelle di progettazione
- persona o gruppo di persone responsabili
- transazioni
- accezione generica
- sono programmi che realizzano attività frequenti e predefinite, con poche eccezioni previste a priori
- esempio
- versamento ad uno sportello bancario
- prenotazione aerea
- le transazioni sono solitamente realizzate con programmi in linguaggio ospite
- accezione specifica
- sequenza indivisibile di operazioni
- le operazioni devono essere eseguite tutte oppure nessuna
- sequenza indivisibile di operazioni
- accezione generica
- figure professionali
- progettisti e realizzatori di DBMS
- progettisti e amministratori della base di dati
- progettisti e programmatori di applicazioni
- utenti
- profili utenti
- casuali
- accesso occasionale (manager aziendale)
- linguaggi di query sofisticati
- parametrici
- canned transaction (transazioni predefinite)
- sofisticati
- tecnici programmatori, progettisti e amministratori della base di dati
- indipendenti
- utilizzano interfacce predisposte
- data base personali
- casuali
- vantaggi dei DBMS
- dati come risorsa comune, basi di dati come modello della realtà
- gestione centralizzata con possibilità di standardizzazione ed "economia di scala"
- disponibilità di servizi integrati
- riduzione di ridondanze e inconsistenze
- indipendenza dei dati
- favorisce lo sviluppo e la manutenzione delle applicazioni
- svantaggi dei DBMS
- costo dei prodotti e della transazione verso di essi
- non scorporabilità delle funzionalità con riduzione di efficienza
- Basi di Dati (DataBase - db)
- modello relazionale
- proposto da E. F. Codd nel 1970 per favorire l'indipendenza dei dati
- reso disponibile come modello logico in DBMS reali nel 1981
- si basa sul concetto matematico di relazione (con una variante)
- è basato su una singola struttura dati (relazione)
- è costituito da:
- strutture dati relazionali
- regole di integrità
- algebra relazionale
- definizioni
- tupla
- indica la riga di una tabella
- dominio
- insieme di appartenenza di un tipo specifico di dati (appartenenti alla stessa colonna)
- colonna = sottoinsieme del dominio
- attributo
- nome del dominio o nome della colonna (etichetta)
- chiave primaria
- identificatore univoco delle righe della tabella
- relazione
- relazione matematica
- la definizione deriva dalla teoria degli insiemi
- è un insieme di n-uple ordinate (d1, d2,
..., dn) : d1∈ D1, d2∈
D2, ..., dn∈ Dn
- D1, D2, ..., Dn(n insiemi anche non distinti) sono i domini della relazione
- il prodotto cartesiano D1 x D2 x ... x Dn, è l'insieme di tutte le n-uple ordinate (d1, d2, ..., dn) : d1∈ D1, d2∈ D2, ..., dn∈ Dn
- una relazione matematica su D1, D2, ..., Dnè un sottoinsieme del prodotto cartesiano D1 x D2 x ... x Dn
- una relazione su n domini ha grado n
- il numero di n-uple è la cardinalità della relazione
- nelle applicazioni reali la cardinalità è sempre finita
- una relazione è un insieme con le seguenti caratteristiche
- non è definito alcun ordinamento fra le n-uple
- le n-uple di una relazione sono distinte l'una dall'altra
- le n-uple sono ordinate
- l'i-esimo valore di ciascuna proviene dall'i-esimo dominio
- è definito un ordinamento fra i domini
- la struttura è posizionale, ovvero non sono definiti i nomi di dominio (attributi)
- relazione secondo il modello relazionale
- è rappresentata da una tabella con righe, dette tuple, e colonne contenenti dati di tipo specificato, che appartengono ad un definito dominio, come le stringhe o gli interi
- attributo
- nome unico nella relazione associato a ciascun dominio e che ne descrive il ruolo
- sono in pratica i nomi (o etichette) delle colonne della tabella
- la struttura è non posizionale
- l'ordinamento fra gli attributi è irrilevante
- uno schema di relazione si indica con R(A1,
A2, ..., An)
- R = nome della relazione
- (A1, A2, ..., An) = elenco attributi
- ogni attributo Ai fornisce il nome del ruolo interpretato da un certo dominio D nello schema di relazione D=dom(Ai)
- una relazione r(R) dello schema R(A1, A2,
..., An) è un insieme di n-tuple r={t1,
t2, ..., tm}
- ogni n-tupla è un'elenco ordinato di n valori
t=<d1, d2, ..., dn> dove:
- di∈ D=dom(Ai) oppure di=NULL
- ogni n-tupla è un'elenco ordinato di n valori
t=<d1, d2, ..., dn> dove:
- relationship
- rappresenta una relazione fra due entità nel modello Entity-Relationship
- relazione matematica
- tupla
- proprietà delle relazioni
- non vi sono duplicati di una tupla
- le tuple non sono ordinate
- gli attributi non sono ordinati
- non possono essere individuati tramite posizione
- i valori degli attributi sono atomici
- schema di una base di dati
- è un metadato
- è in sostanza l'intestazione della tabella
- definisce i campi della tabella ed il loro significato
- esempio
- Orario(Insegnamento, Docente, Aula, Ora)
- istanza di una base di dati
- è il dato vero e proprio
- esempio in relazione all'esempio di schema precedente
- (Fisica I, Luigi Neri, N3, 8:00)
- tabelle
- una tabella rappresenta una relazione se
- i valori di ciascuna colonna sono fra loro omogenei (dallo stesso dominio)
- le righe sono diverse fra loro
- le intestazioni delle colonne sono diverse fra loro
- l'ordinamento tra le righe è irrilevante
- l'ordinamento tra le colonne è irrilevante
- una tabella rappresenta una relazione se
- il modello relazionale è basato su valori
- i riferimenti fra dati in tabelle diverse avvengono tramite i valori dei dati stessi
- vantaggi
- indipendenza delle strutture fisiche che possono cambiare anche dinamicamente
- si rappresenta solo ciò che è rilevante dal punto di vista dell'applicazione (dell'utente)
- i dati sono portabili più facilmente da un sistema ad un'altro
- terminologia
- relazione = tabella
- tupla = riga del record
- cardinalità = numero di righe
- attributo = colonna o campo
- grado = numero di colonne
- chiave primaria = identificatore
- dominio = insieme dei valori legali
- NULL (valore nullo)
- denota l'assenza di un valore del dominio (e non è un valore del dominio)
- vengono utilizzati in caso di informazione incompleta
- i dati disponibili possono non corrispondere esattamente al formato previsto dal modello relazionale
- può indicare (senza distinzione da parte dei DBMS):
- valore sconosciuto
- esiste un valore del dominio ma non è noto
- valore inesistente
- non esiste un valore del dominio
- valore senza informazione
- non è noto se esista o meno un valore del dominio
- valore sconosciuto
- è fortemente sconsigliabile usare valori ordinari del dominio per indicare una delle situazioni precedenti
- vincoli di integrità
- esistono istanze di basi di dati che, pur sintatticamente corrette, non rappresentano informazioni possibili per l'applicazione di interesse
- si dividono in
- vincoli intrarelazionali
- sono espressi all'interno di una relazione
- vincoli sui valori (o di dominio)
- vincoli di tupla
- esprimono condizioni sui valori di ciascuna tupla, indipendentemente dalle altre tuple
- esempio
- in Esami(Studente, Voto, Corso) un possibile vincolo può essere (Voto >= 18) AND (Voto <= 30)
- vincoli di chiave
- chiave
- insieme di attributi che identificano univocamente le tuple di una relazione
- un insieme K è chiave per una relazione r se è una superchiave minimale (cioè non contiene un'altra superchiave) per r
- superchiave
- un insieme K di attributi è superchiave per una relazione r se r non contiene due tuple distinte t1 e t2 con t1[K]=t2[K]
- esiste sempre almeno una chiave
- ogni relazione ha come superchiave l'insieme degli attributi su cui è definita
- vincolo di integrità di entità
- la presenza di valori nulli nelle chiavi deve essere limitata
- soluzione
- per ogni relazione si sceglie una chiave primaria su cui non sono ammessi valori nulli
- chiave
- sono espressi all'interno di una relazione
- vincoli interrelazionali (vincoli di integrità referenziale)
- coinvolgono due o più relazioni
- informazioni in relazioni diverse sono correlate attraverso valori comuni (in particolare i valori delle chiavi)
- un vincolo di integrità referenziale (FK - Foreign Key) fra gli attributi di X di una relazione R1 e un'altra relazione R2, impone ai valori su X in R1 di comparire come valori della chiave primaria di R2
- se la relazione R2 ha un'insieme di attributi FK che fa riferimento alla chiave primaria PK di una relazione R1, deve esistere in R1 una tupla con valore PK uguale a FK (FK è una chiave esterna di R2)
- vincoli intrarelazionali
- algebra relazionale
- linguaggio formale di interrogazione associato al modello relazionale
- insieme di operatori su relazioni che possono essere composti per formulare interrogazioni complesse sulla base di dati
- ogni interrogazione relazionale descrive una procedura passo-passo per calcolare la risposta desiderata, basandosi sull'ordine in cui gli operatori sono in essa applicati
- proprietà di chiusura
- il risultato di qualunque operazione algebrica sulle relazioni è una relazione
- un linguaggio è detto relazionalmente completo se ha almeno lo stesso potere espressivo dell'algebra relazionale
- l'algebra relazionale sta alla relazione matematica come l'interrogazione SQL sta allo schema di relazione
- operatori
- base
- unari (monadici)
- ridenominazione [ρ]
- utilizzato per rinominare gli attributi
- modifica lo schema mantenendo inalterata l'istanza dell'operando
- esempio
- partendo dalla relazione: Paternità(Padre, Figlio)
- applichiamo la ridenominazione: ρGenitore ← Padre(Paternità)
- otteniamo la relazione: Paternità(Genitore, Figlio)
- selezione [σ]
- σpredicato(Operando)
- Operando = relazione r(X)
- operatore ortogonale alla proiezione
- decomposizione orizzontale: estrae righe dalla relazione
- produce una relazione che ha lo stesso schema di r(X) e che contiene un sottoinsieme delle ennuple di r(X)
- agisce sulla base di un predicato o di un'espressione booleana (cioè una espressione che usa i connettivi logici ∧ (AND) ∨ (OR)
- σpredicato(Operando)
- proiezione [π]
- πlista attributi(Operando)
- Operando = relazione r(X)
- operatore ortogonale alla selezione
- decomposizione verticale: estrae colonne dalla relazione
- il risultato contiene al più lo stesso numero di ennuple
dell'operando
- vengono eliminate le ennuple duplicate causate dall'eliminazione degli attributi non selezionati
- se K è una superchiave di R, allora πK(R) contiene esattamente tante ennuple quante R
- πlista attributi(Operando)
- ridenominazione [ρ]
- binari
- unione [∪] (*)
- restituisce un'istanza di relazione contenente tutte le tuple di entrambe le relazioni di partenza
- le tuple duplicate derivate dall'accodamento verticale vengono eliminate dall'unione
- è commutativa ed associativa
- differenza [-] (*)
- restituisce un'istanza di relazione contenente tutte le tuple presenti nella prima relazione che non compaiono nella seconda
- non è ne commutativa ne associativa
- prodotto cartesiano [x]
- restituisce un'istanza di relazione il cui schema contiene tutti i campi della prima relazione (nello stesso ordine originale) seguiti da tutti i campi della seconda relazione (nel loro ordine originale)
- congiunge in orizzontale relazioni senza attributi in comune
- contiene sempre un numero di ennuple pari al prodotto delle cardinalità degli operandi (le ennuple sono tutte combinabili)
- unione [∪] (*)
- unari (monadici)
- derivati
- intersezione [∩] (*)
- restituisce un'istanza di relazione contenente tutte le tuple presenti in entrambe le relazioni di partenza (le tuple identiche in entrambe le relazioni)
- è commutativa ed associativa
- join [><]
- join condizionale (theta-join)
- R1><c R2=
σc(R1 x R2)
- c è la condizione booleana
- R1><c R2=
σc(R1 x R2)
- equi-join
- caso particolare in cui la condizione di join consiste solo in uguaglianze (R1.nome1 = R2.nome2) che possono essere connesse con l'uso del simbolo ∧
- le colonne comuni (quelle indicate nella condizione) compaiono una sola volta con il nome che hanno nella prima relazione
- join naturale
- non specifica alcuna condizione
- è un equi-join su tutti gli attributi aventi lo stesso nome
- se non ci sono attributi comuni genera il prodotto cartesiano
- join esterno
- estende con valori nulli (NULL) le ennuple che verrebbero tagliate fuori da un join (interno)
- ennuple dangling
- nei join "non completi" alcune ennuple degli operandi non contribuiscono al risultato (vengono tagliate fuori)
- ne esistono tre versioni:
- sinistro (left)
- mantiene tutte le ennuple del primo operando estendendole con valori nulli se necessario
- destro (right)
- mantiene tutte le ennuple del secondo operando estendendole con valori nulli se necessario
- completo (full)
- mantiene tutte le ennuple di entrambe gli operandi estendendole con valori nulli se necessario
- sinistro (left)
- join condizionale (theta-join)
- divisione [/]
- operatore poco utilizzato
- non ha una traduzione diretta in un operatore SQL
- date le relazioni R1(a, b) e R2(b), R1/R2 fornisce l'insieme dei valori a di R1 i cui corrispondenti b compaiono in R2
- intersezione [∩] (*)
- (*) operatori insiemistici
- le relazioni sono insiemi
- i risultati devono essere relazioni
- è possibile applicare Unione, Differenza e Intersezione solo a relazioni definite sugli stessi attributi (stesso numero di campi, con lo stesso dominio e nello stesso ordine)
- base
- operatori di confronto
- <, <=, =, ≠, >=, >
- selezione con valori nulli
- le condizioni specificate negli operatori sono valide solo per valori non nulli
- per riferirsi ai valori nulli esistono forme apposite di
condizioni:
- IS NULL
- IS NOT NULL