Premessa

Portale di appartenenza: Basi di dati.

Cosa troverai in questa nota:

Prerequisiti: per comprendere pienamente il contenuto di questa nota, oltre le conoscenze minime che do per scontato che tu sappia già, ti consiglio di aver letto in precedenza queste altre note:

Buona lettura! ☝️🤓


Riprendiamo l’esempio della base di dati ospedaliera. Per essa, si potrebbe chiedere, per esempio, di:

  1. Elencare i pazienti non residenti a Torino.
  2. Elencare i medici non primari.

I due esempi contengono rispettivamente una negazione non essenziale e una negazione essenziale.

1 - Interrogazioni con negazioni non essenziali

L’esempio “elencare i pazienti non residenti a Torino” rappresenta un’interrogazione con negazione non essenziale.

Definizione: negazione non essenziale

In un’interrogazione, una negazione non essenziale è un predicato che può essere riscritto usando solo gli operatori relazionali di selezione, proiezione, unione, prodotto cartesiano e operatori derivati solo da questi.

2 - Interrogazioni con negazioni essenziali

L’esempio “elencare i medici non primari rappresenta un’interrogazione con negazione essenziale.

Definizione: negazione essenziale

In un’interrogazione, una negazione essenziale è un predicato che non può essere riscritto usando solo gli operatori relazionali di selezione, proiezione, unione, prodotto cartesiano e operatori derivati solo da questi.

Per risolvere una negazione essenziale, si segue questo algoritmo.

Algoritmo di risoluzione delle interrogazioni con negazioni essenziali

  1. Definire l’universo del discorso .
  2. Rispondere alla domanda in forma positiva .
  3. La risposta che si vuole ottenere è data dalla differenza tra e .

Attenzione

Per poter adottare questo algoritmo, gli schemi dell’universo e della risposta in forma positiva devono essere uguali, per definizione dell’operatore relazionale della differenza.

Osservazione: l'algoritmo vale anche per le negazioni non essenziali

Si può osservare come l’algoritmo di risoluzione delle interrogazioni con negazioni essenziali si può usare per risolvere, in generale, qualsiasi tipo di negazione, anche quelle non essenziali. Riprendendo il primo esempio “elencare i pazienti non residenti a Torino”, si può usare l’algoritmo così: 4. Definire l’universo del discorso :

  1. Rispondere alla domanda in forma positiva (nel nostro caso: “elencare i pazienti residenti a Torino”):
  1. La risposta che si vuole ottenere è data dalla differenza tra e :

Risulta ovvio però che, in questo caso, è inutilmente dispendioso usare questo algoritmo al posto del metodo specifico delle negazioni non essenziali.

Attenzione: ambiguità nelle interrogazioni

Spesso, in un’interrogazione, ci può essere ambiguità riguardo il suo significato: per esempio, l’interrogazione “elencare i pazienti di Torino che non sono stati mai curati dal primario con codice può essere letta come “elencare i pazienti di Torino ricoverati ma mai presi in cura dal primario con codice .

Si può notare come, nel secondo caso, cambi l’universo del discorso:

3 - Interrogazioni con negazioni nascoste

Attenzione: interrogazioni con negazioni nascoste

Esistono interrogazioni che, all’apparenza, sembrano non contenere negazioni, ma che in realtà ce le hanno. Per esempio, l’interrogazione “elencare i pazienti con un solo ricovero” equivale a “elencare i pazienti ricoverati almeno una volta ma che non hanno subito due o più ricoveri”.


Approfondimento

Se vuoi saperne di più:

Fonti: