156
Chapitre 6 • SQL avancé
6.10 SQL ET L’INFORMATION INCOMPLÈTE
6.10.1 Introduction
La question de l’information incomplète ou manquante est l’une des plus complexes
du domaine des bases de données. Elle couvre plusieurs situations distinctes telles
que les suivantes, qu’on peut illustrer sur la table CLIENT, qui contient des informations sur un client qui n’a pas de valeur de CAT :
• information pertinente mais absente : le client pourrait avoir une catégorie,
mais on ne lui en a pas encore attribué;
• information non pertinente : de par son statut le client n’a pas de catégorie,
• information inconnue : le client a une catégorie, mais celle-ci n’est pas connue.
6.10.2 La valeur null de SQL
Malheureusement, SQL ne propose qu’un seul mécanisme pour représenter ces
différents cas de figure, la valeur null. Dans la plupart des cas, cette valeur représente le fait que l’information n’est pas connue. En théorie, null n’est pas une
valeur, mais un marqueur indiquant que la case est vide. Nous verrons cependant
qu’à l’occasion, SQL la considère comme une valeur réelle.
6.10.3 La logique ternaire de SQL
L’information incomplète présente aussi un autre visage sous la forme de la valeur
logique inconnu, qui se note unknown en SQL. En effet, l’évaluation d’un prédicat ,
dans une clause where par exemple, sur une ligne particulière peut renvoyer la
valeur vrai, la valeur faux, mais aussi la valeur inconnu, signifiant par là qu’il est
impossible de décider si la valeur est vrai ou faux. L’un des problèmes est que
dans certaines circonstances, inconnu signifie soit vrai soit faux, alors qu’à
d’autres moments, il signifie ni vrai ni faux.
Techniquement, le comportement de la valeur inconnu est défini par les tables
de vérité des opérateurs ¬ (not), ∧ (and), ∨ (or), ⊕, ⇒, et ⇔ dont le contenu est
donné ci-dessous 19 , inc étant mis pour inconnu :
19. On notera que ¬ inconnu = inconnu, ce qui est logique mais pas intuitif.
P
Q
¬ P
P ∧ Q P ∨ Q P ⊕ Q P ⇒ Q P ⇔ Q
vrai vrai
faux
vrai
vrai
faux
vrai
vrai
vrai faux
faux
faux
vrai
vrai
faux
faux
vrai
inc
faux
inc
vrai
inc
inc
inc
faux vrai
vrai
faux
vrai
vrai
vrai
faux
faux faux
vrai
faux
faux
faux
vrai
vrai
Précédent

- 156/436

Suivant