1/27
Flashcards couvrant les notions clés du chapitre SQL avancé: contrôle d'accès, vues SQL, extensions SFW, requêtes récursives, extensions objet SQL3, prédicats (CHECK), procédures et déclencheurs, et aspects pratiques (utilisation des vues, opérateurs de jointure, portées des déclencheurs).
Name | Mastery | Learn | Test | Matching | Spaced |
|---|
No study sessions yet.
Dans le contrôle d'accès SQL, qu'est-ce qu'un privilège et que précise-t-il ?
C’est une autorisation qui précise un objet et les opérations qu'il est possible d'exécuter sur cet objet.
Que signifie l'option WITH GRANT OPTION ?
Elle permet à l’user à qui l'on a accordé un privilège de le transmettre à d'autres users.
Comment les rôles facilitent-ils la gestion des privilèges ?
On crée un rôle, on lui accorde des privilèges, puis on attribue le rôle à des users, simplifiant la gestion des droits.
Qu'est-ce qu'une vue SQL ?
C’est une présentation particulière des données, une table virtuelle sans données stockées; seule la définition est stockée sur disque.
Comment une vue est-elle utilisée et quelles restrictions pour une vue modifiable ?
Elle se manipule comme une table pour la consultation; les vues modifiables sont soumises à des contraintes (pas de DISTINCT, pas de GROUP BY, pas de UNION/EXCEPT/INTERSECT, pas de fonctions agrégées, pas de sous-requêtes citant la vue; la vue doit inclure la clé primaire et ne pas contenir de jointure; si elle est basée sur une autre vue, celle-ci doit être modifiable).
Donnez un ex. de type de données complexe ROW utilisé dans une colonne ADRESSE.
ADRESSE ROW(RUE CHAR(30), LOCALITE CHAR(60)).
Qu'est-ce qu'un prédicat (CHECK) en SQL ?
C’est une contrainte CHECK associée à un schéma, une table ou une colonne; elle est une condition logique qui doit être satisfaite en tout temps.
Donnez un exemple de contrainte CHECK sur la colonne CAT.
CHECK (CAT IS NULL OR CAT IN ('B1','B2','C1','C2')).
Qu'est-ce qu'un déclencheur (trigger) et quel modèle décrit-il ?
C’est un composant qui réagit à des événements tels que INSERT, UPDATE ou DELETE sur une table ou vue, selon BEFORE/AFTER et FOR EACH ROW ou FOR EACH STATEMENT.
Quelle est la différence entre FOR EACH ROW et FOR EACH STATEMENT ?
FOR EACH ROW déclenche le trigger pour chaque ligne affectée; FOR EACH STATEMENT déclenche le trigger une fois par requête provoquant l’événement.
Question : Donnez un exemple de déclencheur illustrant une modification sur COMPTE et des conditions associées.
Exemple: un déclencheur MAJ_CLI BEFORE UPDATE OF COMPTE ON CLIENT FOR EACH ROW WHEN (NEW.COMPTE < -10000) BEGIN … END; il peut modifier d'autres colonnes selon des conditions.
Qu'est-ce que DROP VIEW et à quoi sert-il ?
DROP VIEW COM_COMPLETE supprime une vue existante.
Quel est l’intérêt des vues en tant qu'interface et mécanisme de sécurité ?
Elles servent d'interface adaptée à des besoins spécifiques, de mécanisme de contrôle d'accès et d’évolution de la base, et permettent des requêtes complexes sans exposer les tables sous-jacentes.
Qu'est-ce que WITH CHECK OPTION sur une vue et quel effet a-t-il ?
Il assure que les modifs via la vue respectent les règles de la vue; elle peut rendre des insertions/updates visibles/inutilisables selon le cas.
Qu'est-ce que les extensions SFW (SQL/From/Where) permettent selon SQL3 ?
Elles permettent d'utiliser toute expression retournant une valeur dans les SELECT et d'utiliser toute expression retournant une table dans FROM, ce qui rend les requêtes plus expressives et régulières.
Quelle est la forme générale d'une requête récursive introduite par SQL3 ?
WITH T AS (E0 UNION ALL Ei) R; forme qui permet d'obtenir des résultats récursifs semblables à une vue.
Qu'est-ce qu'un type Chaine et un type Contact dans les extensions objet ?
Type Chaine as VARCHAR(60) et Type Contact as (RUE Chaine, LOCALITE Chaine).
Qu'est-ce qu'une table typée et comment est-elle créée ?
C’est une table basée sur un type; elle peut être créée via CREATE TABLE NOM OF TTYPE UNDER PARENT ou CREATE TABLE NOM OF TTYPE under PARENT; elle coexiste avec les tables relationnelles.
Comment une référence d'objet est-elle écrite dans une requête SQL3 ?
Utilisation de l'opérateur de référence, par exemple REFCLI->NCLI pour accéder à des attributs via un Id d’objet.
Donnez un ex. de création et d'utilisation d'un type défini par l'utilisateur (TDU).
CREATE TYPE Chaine AS VARCHAR(60); CREATE TYPE Contact AS (RUE Chaine, LOCALITE Chaine); puis utilisation dans une table avec ADRESSE Contact.
Qu'est-ce qu'une requête SFW étendue avec des opérateurs de jointure et des sous-requêtes ?
SQL3 étend la structure des requêtes SFW pour permettre, entre autres, des sous-requêtes dans le SELECT et dans le FROM, et des jointures plus flexibles.
Qu'est-ce qu'une requête récursive et pourquoi SQL2 ne le permet pas ?
Elle est possible avec WITH RECURSIVE (ou WITH … AS, selon la syntaxe); SQL2 ne permet pas les requêtes récursives alors que SQL3 les introduit.
Quelle est la différence entre une vue et une table stockée ?
Une vue est une présentation virtuelle des données sans stockage des données; seule la définition est stockée, pas les résultats; les données réelles restent dans les tables de base.
Qu'est-ce qu'un domaine et donnez un exemple ?
C’est un type de données avec des contraintes; par ex : CREATE DOMAIN MONTANT AS INTEGER CHECK (VALUE >= 0);
Qu'est-ce qu'une contrainte nommée et comment est-elle utilisée ?
Une contrainte nommée est une contrainte CHECK ou autre qui est assignée à une colonne, une table, ou un domaine en utilisant un nom (par ex., CONSTRAINT CHK_CAT CHECK (…)).
Qu'est-ce qu'un Trigger et pourquoi est-il utile dans une base de données ?
C’est un mécanisme pour automater des actions en réponse à des modifs des données et/ou des conditions; il peut encapsuler des règles d'intégrité, propager des mises à jour et gérer des comportements spécifiques.
Donnez un ex. de déclencheur qui limite une modification et transforme une valeur.
un déclencheur qui met à jour CAT lorsque COMPTE change et dépasse certaines limites; exemples donnés incluent MAJCLI et VERIFPRIX.
Quelles sont les différentes portées et moments d’activation d’un déclencheur ?
Portées: FOR EACH ROW ou FOR EACH STATEMENT; moments: BEFORE ou AFTER (et parfois INSTEAD OF pour les vues).