6.11 Exercices
165
© Dunod – La photocopie non autorisée est un délit.
Dans l’exemple de la table ACTIVITE, on rendra obligatoires les colonnes des
heures, et on conviendra d’utiliser la valeur 0 pour indiquer l’absence d’une partie
d’une activité.
Ces techniques compliquent la tâche des utilisateurs, mais peuvent rendre la base
de données plus déterministe et donc son usage plus fiable. Ajoutons encore qu’en
présence de valeurs null, il est prudent de distinguer dans les requêtes SQL les cas
sans et avec valeurs null. Même si la norme définit l’interprétation d’une requête,
il n’est pas certain que le SGBD l’adoptera dans tous les cas limites.
Notons enfin qu’éviter les colonnes facultatives n’empêchent malheureusement
l’apparition de valeurs null dans le résultat de certaines requêtes, ni celle de la
valeur de vérité unknown dans les conditions. Nous en avons rencontré plusieurs
exemples.
Face à ces critiques, les auteurs du langage SQL avancent des arguments de bon
sens qu’on retrouvera par exemple dans [Chamberlin, 1996].
6.11 EXERCICES
6.11.1 Contrôle d’accès
6.1 Développer, à l’aide des concepts étudiés dans cet ouvrage, un mécanisme
qui permet de limiter l’accès à une table par un utilisateur déterminé à des
moments bien déterminés, par exemple du lundi au vendredi, de 9h à 17h.
6.11.2 Le catalogue
6.2 Ecrire une requête qui donne, pour chaque table, le nombre de colonnes et la
longueur maximum des lignes.
6.3 Le catalogue que nous avons décrit (figures 6.1 et 6.2) diffère quelque peu
des catalogues proposés par les SGBD. En particulier, les catalogues réels
ont souvent une structure complexe destinée à améliorer les performances.
Ecrire les requêtes qui garnissent les tables de la figure 6.2 à partir du contenu
des tables du catalogue de votre SGBD. Pour fixer les idées, on pourra
s’exercer sur la structure ci-dessous, limitée à la représentation des clés
(identifiants et clés étrangères) :
Une ligne de cette table représente un composant d’une clé. Elle indique
successivement le nom de la table de la clé, le type de la clé (Primary,
Foreign), son identifiant interne et le nom de la colonne; s’il s’agit d’une clé
étrangère, elle indique en outre le nom de la table et de la colonne cibles.
Précédent

- 165/436

Suivant