Anteprima
Vedrai una selezione di 1 pagina su 4
Il modello relazionale - Basi di Dati Pag. 1
1 su 4
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

VINCOLI DI INTEGRITÀ

Definizione: I vincoli di integrità riflettono i vincoli esistenti nella realtà che si vuole rappresentare, devono essere rispettati da tutte le istanze inserite nella base di dati. Un DBMS deve prevenire l'immissione di informazioni non corrette. Ad uno schema di base di dati si può associare un insieme di vincoli di integrità. Un'istanza della base di dati che soddisfa tutti i vincoli di integrità specificati nello schema di dice legale.

Tipi vincoli vengono fatti in fase di progetto:

  • Tipi di vincoli intrarelazionali: Vincoli di tupla, vincoli di chiave. Si trovano all'interno di una stessa relazione. Il loro soddisfacimento è definito rispetto a singole relazioni di una base di dati.
  • Tipi di vincoli interrelazionali: Vincoli di integrità referenziale (foreign key). Vincoli che coinvolgono più relazioni della Base di Dati.

Vincoli di Tupla: Esprimono condizioni sui valori di ciascuna tupla, indipendentemente.

Dalle altre tuple. Un vincolo di tupla si definisce vincolo di dominio se coinvolge un solo attributo. Una possibile sintassi per esprimere vincoli è quella che permette di definire espressioni booleane (cioè con connettivi AND, OR, NOT) confrontando valori di attributo o espressioni aritmetiche su valori di attributo. Esempio: Voto>=18 AND Voto <=30(NOT (LODE='SI')) OR (VOTO=30)

NB: nei linguaggi di BDd non esiste if, o while

Vincoli di Chiave

La chiave è un vincolo sulla relazione!! (sulla singola BD)

Ci sono delle colonne speciali che servono per individuare ogni singola tupla.

Nb: in questo modo:

  • Evito che il DBMS debba confrontare tutte le righe delle tabelle per verificare che le tuple differiscano per almeno un elemento!
  • Se costruisco una tabella più piccola solo con le chiavi, ottimizzo il tempo necessario per spostare i dati da memoria secondaria a memoria centrale (problema di base nell'ottimizzazione dei tempi e dei costi nei
  1. DBMS) una chiave è un insieme di attributi utilizzato per identificare univocamente le tuple di una relazione (es. Numero di matricola in una tabella relazionale universitaria)
  2. Una superchiave è un insieme di campi che contiene una chiave. Un insieme k di attributi è superchiave per un'istanza di relazione r se r non contiene due tuple distinte t1 e t2 tali che t1[K]=t2[K]. K è una chiave per r se è una superchiave minimale (cioè non contiene un'altra superchiave) per r. Ad esempio, matricola-studente è una superchiave, matricola è la chiave.
  3. Il massimo numero di chiavi possibili è limitato dal numero di attributi e dalle combinazioni con cui sto definendo le chiavi.
  4. Formalmente, un vincolo di chiave è un'asserzione che specifica che un insieme di attributi formano una chiave per una relazione. In altre parole, se una relazione R(A,B,C,D) dichiaro vincolo di chiave su (A,B) sto asserendo che in tutte le istanze della relazione, ogni coppia di tuple avrà valori diversi per gli attributi A e B.

BD non esistono due tuple dellarelazione R che coincidono negli attributi A e B e sto anche asserendo che nessun sottoinsieme proprio di (A, B) è una chiave.

Poiché le relazioni sono insiemi, una relazione non può contenere tuple uguali fra loro: ne segue che ogni relazione ha come superchiave l'insieme degli attributi su cui è definita. Ogni schema di relazione ha (almeno) una chiave!

Nb:- I valori delle chiavi permettono di identificare univocamente le tuple delle relazioni e di stabilire riferimenti fra tuple di relazioni diverse. I valori null rendono difficile tale identificazione: è necessario un meccanismo che ne limiti la presenza in almeno una chiave della relazione quindi su una delle chiavi "candidate" si vieta la presenza di valori NULL; tale chiave viene chiamata chiave primaria (graficamente, gli attributi facenti parte della chiave primaria sono sottolineati)

Chiave primaria

Un vincolo di chiave primaria è

primaria esterna), specifica che i valori di un attributo in una relazione devono corrispondere ai valori di un attributo in un'altra relazione. Per implementare un vincolo di integrità referenziale, è necessario utilizzare il tag <foreign key> all'interno del tag <table> della relazione che contiene l'attributo che fa riferimento alla chiave primaria di un'altra relazione. Ad esempio, se abbiamo due relazioni "Studenti" e "Corsi" e vogliamo collegarle attraverso l'attributo "matricola" nella relazione "Studenti" e l'attributo "matricola_studente" nella relazione "Corsi", possiamo utilizzare il seguente codice HTML: <table name="Studenti"> <tr> <th>matricola</th> <th>nome</th> <th>cognome</th> </tr> <tr> <td>12345</td> <td>Mario</td> <td>Rossi</td> </tr> <tr> <td>67890</td> <td>Luca</td> <td>Bianchi</td> </tr> </table> <table name="Corsi"> <tr> <th>codice_corso</th> <th>nome_corso</th> <th>matricola_studente</th> </tr> <tr> <td>C001</td> <td>Matematica</td> <td>12345</td> </tr> <tr> <td>C002</td> <td>Informatica</td> <td>67890</td> </tr> </table> esterna) fra un insieme di attributi X (valori del campo paziente di ricoveri) di una relazione R1 (ricoveri) e un'altra relazione R2 (pazienti) impone ai valori su X di ciascuna tupla dell'istanza di R1 di comparire come valori della chiave primaria dell'istanza di R2. ESEMPIO 1) Spiegazione:
Dettagli
Publisher
A.A. 2020-2021
4 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher geggi99 di informazioni apprese con la frequenza delle lezioni di Basi di dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Roma La Sapienza o del prof Catarci Tiziana.