HTML/Contact.htm 100744 163 56704 3275 7171351265 12715 0 ustar martin storm
Les SGBD doivent gérer des volumes de données parfois considérables (plusieurs gigas-octets qui sont accédés de façon concurrente par plusieurs utilisateurs simultanément). Ceci impose des contraintes de gestion efficace des données avec un contrôle fin au niveau de lutilisation afin dassurer une certaine sécurité et un confort dutilisation maximum. Le niveau physique dun SGBD adresse cette problématique. La figure 1 montre les différents composants qui assurent la gestion physique de la base de données.
Lobjectif est donc de stocker les données afin dassurer les performances maximales au niveau des requêtes dinterrogation, dinsertion, de suppression et de mise à jour.
 
Afin dassurer la pérennité de linformation, les données de la base de données sont stockées sur un support de mémoire secondaire. Il existe différents types de mémoire :
les mémoires accessibles directement par la CPU (MC, mémoires caches) - mémoires volatiles -.
les mémoires secondaires (disques, BM, ...) plus lentes d'accès mais en général avec une capacité plus grande. Non directement accessibles, - mémoires non volatiles -.
Les données d'une base de données sont en général trop volumineuses pour tenir entièrement en mémoire centrale (RAM). Les données sont stockées sous la forme de fichiers d'enregistrements. Les échanges entre la mémoire secondaire et la mémoire centrale se font par transfert de page.
Définition
Une page est une granule d'allocation d'espace mémoire secondaire (unité de lecture/écriture sur le support).
Chacune des pistes comporte la même quantité d'information. Un bloc (une page) représente l'unité de transfert entre disque et zone tampon (buffer) qui est une zone réservée en mémoire centrale. Il est possible de transférer plusieurs blocs à la fois (cluster). Le temps d'accès au premier bloc se situe entre 15 et 60 ms; il est de l'ordre de 1 à 2 ms pour le bloc suivant.
Lutilisation de plusieurs buffers permet daméliorer les performances en réduisant considérablement les temps d'accès. Ceci est possible dans le cas d'une machine multi-processeurs ou d'un processeur d'E/S dédié.
Le Système de Gestion de Fichiers (SGF) gère les différentes méthodes d'accès. Il alloue de lespace pour les fichiers. Un fichier peut être considéré comme un ensemble de pages sur le disque. Cette vision facilite la gestion en faisant correspondre des adresses relatives et des adresses physiques.
@relative (npage, déplacement) ® @absolue (ncylindre, npiste, nsecteur)
Le gestionnaire d'entrées/sorties gère les différentes structures pour chaîner les différentes pages affectées à un fichier d'enregistrements. Un enregistrement n'est pas nécessairement de taille fixe (champ de taille variable ou champs optionnels). On utilise donc des séparateurs de champs et d'enregistrements pour faciliter le parcours de linformation. Un fichier peut contenir des enregistrements de différents types (cluster). On utilise des indicateurs de type d'enregistrements. Un bloc peut contenir plusieurs enregistrements (facteur de blocage).
Le nombre d'enregistrements/bloc est soit fixe, soit variable (chaînage).
Les blocs sont soit consécutifs, soit chaînés.
Le but est de minimiser le nombre d'accès pour retrouver un bloc particulier. Un descripteur de fichier donne le nom du fichier, le nom du propriétaire, la liste des droits associés, la date de création, la taille, l'organisation, le nombre de champs...
Un chemin d'accès spécifie la structure de données accélérant la recherche d'enregistrements (un fichier, plusieurs chemins d'accès). Une méthode d'accès est un ensemble des fonctions assurant l'exploitation d'un chemin d'accès. Lorganisation de fichiers concerne le mode de stockage des enregistrements (1 fichier, 1 organisation).
Lorganisation la plus triviale est lorganisation séquentielle non triée.
Lalgorithme dinsertion est très simple et consiste à transférer le dernier bloc dans le buffer. Lajout de l'enregistrement, ré-écriture du bloc). En revanche les recherches sont coûteuses. La suppression nécessite des indicateurs de suppression et provoque des trous ce qui engendre des réorganisations.
Lorganisation séquentielle triée
Elle repose sur une notion de champ clé. Elle permet daccélérer les recherches.
Linsertion est très coûteuse : on peut laisser de la place libre dans chaque bloc ou réserver une zone non triée pour les insertions.
Lorganisation relative stockage séquentiel,
enregistrements de taille fixe.
Lorganisation hachée
Un fichier est découpé en paquets de faible taille qui peuvent être composés d'une ou plusieurs pages. Les enregistrements sont répartis dans ces paquets en utilisant une fonction de hachage : Fonction H : Clé ----> Paquet.
Lindexation a pour but daccélérer les traitements en ajoutant des structures de servitude. Il existe différentes techniques (indexation, hachage) selon le contexte. Lévaluation d'une technique se fait selon des critères de temps d'accès, délai d'insertion, délai d'effacement, occupation mémoire.
Pour une même relation, il est possible d'avoir plusieurs index :
Un Index primaire (plaçant) qui fait lordonnancement des clés dans l'index correspond à l'ordonnancement des enregistrements dans le fichiers.
Lindex secondaire (non plaçant) qui fait lordonnancement des clés dans l'index correspond à un ré-ordonnancement logique des enregistrements dans le fichier.
Un fichier séquentiel indexé est un fichier à accès séquentiel où lensemble des enregistrements sont ordonnés selon une clé de tri. Cette définition est une vision logique dun fichier denregistrement car physiquement il est possible que lordre de stockage ne corresponde pas à lordre logique.
Un exemple nous est donné par le fichier DISQUE où lon suppose avoir un index sur le titre.
Fichier DISQUE
| Titre | Auteur | Année |
| T1 | A1 | 1998 |
| T2 | A2 | 1999 |
| T3 | A3 | 1997 |
Cette organisation pose un problème de maintien de l'ordre. Lors de la suppression dun enregistrement on voit apparaître des trous dans le fichiers. Une insertion peut nécessité la gestion dune zone de débordement. Elle nécessite également la gestion dun fichier dindex dont on mesure la densité.
Définition
La densité est le quotient du nombre de valeurs de clé de tri dans l'index sur le nombre d'enregistrements dans le fichier.
On distingue les index denses et les index non denses (creux ?).
Définition
Dans un index dense on trouve un enregistrement d'index pour chaque valeur de la clé de tri du fichier.
Définition
Dans un index non dense on trouve un enregistrement pour certains enregistrements du fichier.
En général, on spécifie un index non dense pointant sur chaque page disque. Il faut néanmoins essayer de respecter la contrainte de taille car il est préférable que lindex tienne en mémoire centrale. Un index non dense requiert moins de mises à jour lors des opérations dinsertion et de suppression. Il faut établir un compromis entre temps d'accès / espace mémoire. Par exemple si lon a 100 000 enregistrements , 10 enregistrements / page. Si lindex contient 1 enregistrement / page il faudra 10 000 enregistrements d'index.. Soit 100 enregistrements d'index/ page et donc un index sur 100 pages. En cas de recherche dichotomique (b pages d'index) il faudra transférer .1 + log2(b) pages. Soit ici 8 pages !
Il est possible de spécifier un index secondaire, en général sur des attributs non-clés. Ce type dindex est utilisé si la le fichier n'est pas trié sur la clé d'index. Il nécessite une indirection pour regrouper les pointeurs. Ceci implique une optimisation.
Les fichiers séquentiels indexés perdent leurs performances quand leur taille grandit. On propose donc des organisations différentes tels que les fichiers indexés par arbre B+ (B Balanced, équilibré) , qui sont très utilisés si lon a des modifications fréquentes. Ils sont efficaces, quelque soit les opérations d'insertion ou d'effacement de données. Servitude lors des opérations d'insertion ou de suppression. Un arbre B+ est sous la forme d'un arbre équilibré.
Tous les chemins qui mènent de la racine à une feuille ont la même longueur. Chaque noeud de l'arbre possède de n/2 à n enfants. La valeur n est fixée pour chaque arbre.
Un pointeur Pi pointe soit sur le premier enregistrement de clé Ki, soit sur un paquet de pointeurs qui pointent sur Ki.
Un noeud terminal comprend n - 1 valeurs de clés de tri K1, K2, , Kn-1et n pointeurs P1, Pn. Pour les valeurs i telles que 1 <= i <= n , Pi pointe vers un groupe de pointeurs qui pointent vers les enregistrements de clé Ki. Les valeurs de clés de tri, ordonnées : si i < j alors Ki < Kj.
Pour un noeud terminal d'une arborescence B+, Pn utilisé pour chaîner les noeuds terminaux, chaque noeud peut être caractérisé par n - 1 valeurs ( 5(n-1)/2 au minimum). La structure d'un noeud non-terminal correspond à un index multi-niveaux. La structure est identique à celle des noeuds terminaux. Les pointeurs renvoient vers des noeuds de l'arbre. Chaque noeud peut être caractérisé par n - 1 valeurs ( (n-1)/2 au minimum). La racine échappe à cette règle. Si m valeurs, Pi pointe vers le sous-arbre contenant les valeurs de clé de tri inférieures à Ki et supérieures à Ki-1. Pm pointe sur la partie du sous-arbre contenant les valeurs de clé de tri inférieures à Km-1. P1 pointe sur la partie du sous-arbre contenant les valeurs de clé de tri à K1.
Les fichiers indexés par arbre B ont le même aspect que les arbres B+ mais les redondances des clés de tri sont éliminés.
Néanmoins la structure des noeuds non terminaux est différente. Il y a moins de noeuds que les arbre B+. Dans le cas d'une recherche, on est pas on est pas obligé d'aller au bout d'un chemin. En revanche, cette représentation possède quelques inconvénients : Inconvénients : les noeuds terminaux et non terminaux n'ont pas la même dimension. L'effacement est très complexe. Aussi pour les index de grande dimension on choisira les arbres B+.
Le hachage a pour but déviter de parcourir un index pour accéder à une donnée. Etant donnée une valeur clé d'un enregistrement, l'application d'une fonction de hachage doit permettre de trouver la position de cet enregistrement dans la structure contenant tous les enregistrements (tableau, fichier). Lors d'une insertion, l'application de la fonction de hachage permet de déterminer la place ou l'enregistrement doit être inséré. Il peut se poser des problèmes de collision (différentes techniques sont alors utilisées (place libre suivante, chaînage, seconde fonction de hachage). Au dessus d'un taux de remplissage de 70%, les techniques de hachage s'avèrent inefficaces.
Fonctions de hachage externe.
Hachage statique.
Sur disque, un bloc contient plusieurs enregistrements. La fonction de hachage à laquelle on passe en paramètre la valeur de clé de tri retourne l'adresse d'un bloc (paquet) contenant les données de clé de tri considérée. En général, il existe une table d'indirection qui donne pour un n de paquet, l'adresse du bloc correspondant.
Il faut trouver une fonction assurant une répartition homogène entre les paquets. Plus mauvaise fonction : toutes les clés de tri dans le même paquet. Meilleure fonction : une clé de tri/ paquet. Exemple : on crée 26 paquets et une fonction de hachage qui assure une répartition par ordre alphabétique. Pb pas de distribution uniforme (Q, Z)
En général, calcul sur la représentation binaire des caractères représentatifs de la clé de tri : Exemple :
Somme des représentations binaires des caractères de la clé modulo le nombre de paquets.
Problèmes du hachage statique. Un paquet peut contenir des clés de tri différentes.==> h(Ki) fait pointer sur un paquet, puis il faut ensuite examiner la valeur de clé de chaque enregistrement pour vérifier que l'on a atteint l'enregistrement cherché. La technique de hachage n'est pas très efficace si l'on fait un parcours dans l'ordre de la clé de tri. Problème : Si n clés de tri possibles (K1, Kn) il faut n/b paquets (avec n = nombre de valeurs possibles pour les clés de tri et b facteur de blocage) => Trop de place réservée a priori.
Hachage Dynamique.
But : Allouer dynamiquement les paquets nécessaires.
Principe : Passer par une table d'indirection. Le résultat de l'application d'une fonction de hachage peut être considéré comme une chaîne de bits. Au départ 1 paquet dans lequel on insère tant qu'il reste de la place disponible. Ensuite, on divise le paquet en 2. Dans le premier paquet on garde les enregistrements dont la valeur de hachage est 0 et réciproquement pour l'autre paquet. => structure d'arbre
Hachage extensible.
L'arbre est remplacé par une table de pointeurs : + rapide et + compact.
Pas une technique meilleure que l'autre dans l'absolu. Doit-on utiliser l'une ou l'autre des techniques? Le coût des réorganisations périodiques dues à l'indexation ou au hachage est-il acceptable? Quelles sont les fréquences comparées des insertions et des suppressions? Est-il souhaitable d'optimiser le temps d'accès moyen et d'avoir des cas critiques? Quelles requêtes sont le plus fréquemment faites sur la BD?
select A1, A2, ..., An
from R
where Ai = C
Hachage
select A1, A2, ,An
from R
where Ai <= C2 and Aj > C1
Indexation à cause de l'ordre des paquets
|
|---|
Le langage SQL (Structured Query Language) peut être considéré comme le langage daccès normalisé aux bases de données. Il est aujourdhui supporté par la plupart des produits commerciaux que ce soit par les systèmes de gestion de bases de données micro tel que Access ou par les produits plus professionnels tels que Oracle ou Sybase. Il a fait lobjet de plusieurs normes ANSI/ISO dont la plus répandue aujourdhui est la norme SQL2 qui a été définie en 1992. Nous décrivons ici les principaux aspects de cette norme.
Le succès du langage SQL est du essentiellement à sa simplicité et au fait quil sappuie sur le schéma conceptuel pour énoncer des requêtes en laissant le SGBD responsable de la stratégie dexécution. Le langage SQL propose un langage de requêtes ensembliste et assertionnel. Néanmoins, le langage SQL ne possède pas la puissance dun langage de programmation : entrées/sorties, instructions conditionnelles, boucles et affectations. Pour certains traitements il est donc nécessaire de coupler le langage SQL avec un langage de programmation complet au sens Turing du terme.
Le langage SQL comporte :
une partie sur la définition des données :
le langage de définition des données (LDD) qui permet de définir des relations, des vues externes et des contraintes dintégrité;
une partie sur les requêtes :
le langage de manipulation des données (LMD) qui permet dinterroger une base de données sous forme déclarative sans se préoccuper de lorganisation physique des données;
une partie sur le contrôle des données :
le langage de contrôle des données (LCD) qui permet de contrôler la sécurité et les accès aux données.
Nous présentons ici les principaux aspects du langage en utilisant une méthode par lexemple.
Le langage de définition des données permet de définir et de manipuler les concepts du modèle relationnel liés au schéma : relation, attribut, clé, contraintes dintégrité, vues ainsi que certains éléments liés à ladministration de la base de données : index, droits des utilisateurs.
Les types de données disponibles dépendent du SGBD mais on retrouve généralement les types entier, réel, chaînes de caractères et date. Les principaux types de données disponibles en SQL sont : SMALLINT, INTEGER, DECIMAL, FLOAT, DOUBLE, DATE, TIME, TIMESTAMP, CHAR et VARCHAR.
| Relations | ||||
| Nom | Commentaires | Exemple | ||
| ALTER TABLE | | | ||
| CREATE TABLE | |
| ||
| DROP TABLE | | | ||
| Clause | ||||
| CASCADE CONSTRAINS | | | ||
La création dun index permet de réduire les temps de recherche.
La création dindex ne fait pas partie de la norme ANSI SQL. Néanmoins, tous les produits sérieux SQL supportent la création dindex. Leffet de cette commande est la création dun index en général de type B-arbre sur les attributs spécifiés avec les clés triées soit par ordre ascendant (ASC) ou descendant (DESC). Si le mot clé UNIQUE est utilisé, le SGBD interdit les doublons.
| Index | ||||
| Nom | Commentaires | Exemple | ||
| CREATE INDEX | | | ||
| DROP INDEX | |
| ||
| Vues | ||||
| Nom | Commentaires | Exemple | ||
| CREATE VIEW | | | ||
| DROP VIEW | | | ||
| Instructions de mises à jour | ||||
| Nom | Commentaires | Exemple | ||
| INSERT | |
| ||
| DELETE | |
| ||
| UPDATE | | | ||
Pour dterminer le comportement à adopter en fonction des contraintes d'intégrité, il est possible d'ajouter une clause lors de la définition de la contrainte.
| Contraintes d'intégrités | ||||
| Nom | Fonction | Exemple | ||
| RESTRICT | Interdit la suppression. | | ||
| CASCADE | Permet de faire des suppressions éventuellement en cascade. | | ||
| SET NULL | Remet les références à nul. | |||
Une requête se présente généralement sous la forme " SELECT ... FROM ... WHERE " :
la clause SELECT exprime le résultat attendu sous la forme dune liste dattributs auxquels il est possible dappliquer différents opérateurs et fonctions.
la clause FROM liste les relations utilisées pour évaluer les requêtes;
la clause WHERE qui est facultative énonce une condition que doivent respecter les enregistrements sélectionnés.
SELECT [DISTINCT] { * | <nom_de_relation>,<nom_dattribut> [alias] | <nom_dattribut>[alias] [, ...]
FROM [<nom_dutilisateur>]<nom_de_relation> [alias] [, ...]
[WHERE <condition>]
[GROUP BY <nom_dattribut> [, ...] [HAVING <condition>] ]
[ {UNION | INTERSECT | MINUS [ALL]} <commande_SELECT>
[ ORDER BY {<nom_dattribut> | <numéro_de_colonne>} [{ASC | DESC}] [, ... ]
Avant dintroduire lutilité des différentes clauses facultatives ainsi que les différentes possibilités offertes par SQL, nous montrons le lien entre algèbre relationnel et SQL.
Soient les schémas relationnels R1, R2, R3 et R4 définis comme suit :
R1 (A :D1, B :D2)
R2 (C :D1, D :D2)
R3 (A :D1, E :D3)
R4 (B :D2)
| Opération | Expression algébrique | Expression SQL équivalente |
| Projection | P A ( R1 ) | SELECT A FROM R1 |
| Sélection | s < condition > ( R1 ) | SELECT * FROM R1 WHERE <condition > |
| Produit cartésien | R1 X R2 | SELECT * FROM R1, R2 |
| Jointure | R1 * R3 | SELECT * FROM R1, R3 WHERE R1.A = R3.A |
| Union | R1 U R2 | SELECT * FROM R1 UNION SELECT * FROM R2 |
| Intersection | R1 Ç R2 | SELECT * FROM R1, R2 WHERE R1.A = R2.C and R1.B = R2.D |
| Différence | R1 / R2 | SELECT * FROM R1 WHERE not exists (SELECT * FROM R2 WHERE R2.C = R1.A and R2.D = R1.B ) |
| Division | R1 : R2 | SELECT A FROM R1 GROUP BY A HAVING COUNT (distinct B ) = (SELECT count (distinct B ) FROM R4) |
| Requêtes imbriquées | ||||
| Nom | Commentaires | Exemple | ||
| IN | Permet de tester la présence d'une valeur particulière dans un ensemble. |
| ||
| NOT IN | Permet de tester l'absence d'une valeur particulière dans un ensemble. |
| ||
| ALL | Compare chacune des valeurs de l'ensemble à une valeur particulière et retourne "VRAI" si la comparaison est évaluée pour chacun des éléments. |
| ||
| ANY | Compare chacune des valeurs de l'ensemble à une valeur particulière et retourne "VRAI" si la comparaison est évaluée à "VRAI" pour au moins un des éléments. |
| ||
| EXISTS | Retourne "VRAI" si une requête imbriquée retourne au moins une ligne. |
| ||
| Prédicats | ||||
| Nom | Commentaires | Exemple | ||
| BETWEEN | Teste l'appartenance d'une valeur à un intervalle. |
| ||
| LIKE | Permet de faire une recherche approximative. |
| ||
| IS NULL | Permet de tester si un champ a été affecté. |
| ||
| Clauses | ||||
| Nom | Commentaires | Exemple | ||
| GROUP BY | Application de fonction agégats à des collections d'enregistrements reliées sémentiquement. |
| ||
| HAVING | Cette clause ne s'emploie qu'avec un "GROUP BY". |
| ||
| ORDER BY | Permet l'ordonnancement du résultat avant l'affichage. |
| ||
| DISTINCT | Elimine les doublons avant d'utiliser une fonction agrégat. |
| ||
Ces fonctions ne peuvent être utilisées que dans une clause SELECT ou dans une clause HAVING .
| Fonctions agrégats | ||||
| Nom | Commentaires | Exemple | ||
| COUNT | |
| ||
| SUM | |
| ||
| MIN | |
| ||
| MAX | |
| ||
| AVG | |
| ||
On peut préfixer expr par les mots clés [DISTINCT | ALL] .
Fonction
La commande INSERT permet dajouter des enregistrements à une relation dont le schéma a été préalablement définie soit un enregistrement à la fois soit en utilisant une expression de sélection. La syntaxe de cette commande est :
Syntaxe
INSERT INTO <nom_de_relation > [(<liste_dattributs>)] VALUES (<liste_de_valeurs >) ou
INSERT INTO <nom_de_relation> [(<liste_dattributs>)] <expression_de_sélection>
Il est évident que dans beaucoup dapplications, il est préférable dutiliser une interface graphique conviviale pour ajouter de nouvelles données à la base. Néanmoins, lutilisation de fichiers de commandes permet une certaine indépendance vis à vis du SGBD cible et peut aider à la migration dun système vers un autre. De plus, certaines interfaces graphiques génèrent automatiquement le code correspondant aux commandes.
Fonction
La commande DELETE permet de supprimer des enregistrements dune relation. Cette opération naffecte pas le schéma de la relation et ceci même dans le cas où la commande a pour effet de supprimer tous les enregistrements de la relation.
Syntaxe
DELETE FROM < nom_de_relation > [WHERE < expression_de_selection > ]
 
Problèmes
La suppression de certains enregistrements peut poser des problèmes de respect dintégrité référentielle. Par exemple, si lon souhaite supprimer un disque actuellement emprunté par un abonné, la contrainte " FOREIGN KEY NumDisque REFERENCES DISQUE " sera violée. Pour dicter au SGBD lattitude à avoir dans un tel cas, une clause " ON DELETE " peut être ajoutée en même temps que la définition de la contrainte dintégrité référentielle.
Quatre options sont disponibles :
ON DELETE RESTRICT
Permet dinterdire la suppression dun enregistrement référencé par un enregistrement dune autre relation. On trouve également lexpression NO ACTION à la place du mot clé RESTRICT dans certains SGBD.
ON DELETE SET NULL
Affecte la valeur NULL à la clé étrangère.
ON DELETE SET DEFAULT
Affecte la valeur par défaut (selon le type de données) à la clé étrangère.
ON DELETE CASCADE
Indique au SGBD quil est possible de détruire la clé étrangère en détruisant toutes les clés étrangères avec la même valeur.
R1 : Quel est le contenu de la relation LIVRE ?
Solution
R2 : Quels sont les titres des romans édités par Flammarion ?
Solution
Q5 : Liste des titres que lon retrouve à la fois comme titre de disque et titre de livre ?
Solution
Q7 : Quelle est lidentité des auteurs qui ont fait des disques et écrit des livres ?
Solution
R3 : Quels sont les différents styles de disques proposés ?
Solution
R7 : Quel est le salaire annuel des membres du personnel gagnant plus de 150 000 F en ordonnant le résultat par salaire descendant et nom croissant ?
Solution
R15 : Donnez le nombre de prêts en cours pour chaque famille en considérant quune famille regroupe des personnes de même nom et possédant le même numéro de téléphone ?
Solution
Q10 : Quel est le code du disque dont la médiathèque possède le plus grand nombre dexemplaires?
Solution
R4 : Quels sont les éditeurs pour lesquels lattribut Collection na pas été renseigné ?
Solution
R5 : Quels sont les abonnés dont le nom contient la chaîne " ALDO " et habitant en Isère ?
Solution
R8 : Quel est le nombre de prêts en cours ?
Solution
R9 : Quels sont les salaires minimum, maximum et moyen des employés exerçant une fonction de bibliothécaire ?
Solution
R10 : Quel est le nombre de genres de livres différents ?
Solution
Q9 : Quel est le nombre de disques achetés en 1998 ?
Solution
R6 : Quel est le salaire annuel des membres du personnel gagnant plus de 150 000 F ?
Solution
R11 : Quel est le nom , le prénom et ladresse des abonnés ayant emprunté un disque le 12-JAN-99 ?
Solution
R12 : Quels sont les titres des livres et des disques actuellement empruntés par Marlène Sirva ?
Solution
R13 : Quels sont les titres des ouvrages livres policiers ou disques de jazz empruntés par Olivier Lobry ?
Solution
R14 : Quelle est lidentité des auteurs qui nont écrit que des romans policiers (genre = policier) ?
Solution
Q8 : Quels sont les codes des ouvrages des livres pour lesquels il y a au moins un exemplaire emprunté et au moins un exemplaire disponible ?
Solution
Cette partie du langage SQL comporte deux commandes, la commande GRANT pour donner des droits à des utilisateurs et la commande REVOKE pour supprimer des droits préalablement accordés.
Fonction
La commande GRANT permet dattribuer des privilèges. Un privilège est une autorisation dexécuter un acte. Les privilèges les plus courants sont la permission dinsérer (INSERT) des enregistrements dans une relation donnée, la permission de supprimer (DELETE) des enregistrements dans une relation donnée et enfin la permission de sélectionner (SELECT) des enregistrements dans une relation donnée. Un utilisateur ne peut exécuter que les commandes SQL pour lesquelles les droits lui ont été explicitement attribués ou quil possède implicitement car lobjet accédé a été créé par lui-même.
Les privilèges sur un objet (TABLE, VIEW) sont distribués soit pour un utilisateur donné, soit pour tout le monde (PUBLIC).
Syntaxe
GRANT < privilège > [, ...] ON [TABLE] <nom_de_relation> TO {<nom_dutilisateur > [, ...] | PUBLIC}
Fonction
La commande REVOKE permet de supprimer des privilèges.
Syntaxe
REVOKE <privilège > [, ...] ON [TABLE] <nom_de_relation> FROM {<nom_dutilisateur> [, ...] | PUBLIC}
|
|
|---|
Gtjocvlxngldjglx ,kdlfxdnlnl: kjhkjggggggg ggggggggjh jjjjjjjjjjj jjjjj jjjjjjjjjjjjnnnnnn nnnnnnggggggggggggg ggggggggg gggggggggggg gggggggggggg gggggggggggggg gggg kkkkkkkkkkkkk jjjjjjjjjjjjjj hhhhhhhhhhhh yyyyyyyyyyyyy tttttttttttttttt er zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzz sssssssssssss ddddddddddd d ddddddddddddd ddddd gggggggg gggggggg gggggggg ggg ggg ggggggg