• Aucun résultat trouvé

On se place dans la situation d’un informaticien connecté à une machine sur laquelle tourne un SGBD gérant une base de données.

Le principal élément d’un tel environnement est le schéma consistant principalement en un ensemble de tables relatives à une même application. Il peut y avoir plusieurs schémas dans une même base : par exemple on peut très bien faire coexister le schéma « Officiel des spectacles » et le schéma « Agence de voyages ». Il faut donc distinguer l’instance de schéma de la base de données qui est un sur-ensemble. Outre les tables, un schéma peut comprendre des vues, des contraintes de différents types, des triggers (« Réflexes ») qui sont des procédures déclenchées par certains événements, enfin des spécifications de stockage et/ou d’organisation physique (comme les index) qui ne sont pas traitées dans ce chapitre.

4.4.1 Création de schémas

Un schéma est l’ensemble des déclarations décrivant une base de données au niveau logique : tables, vues, domaines, etc. On crée un schéma en lui donnant un nom, puis en donnant les listes des commandes (de type CREATE en général) créant les éléments du schéma. Voici par exemple le squelette de la commande de création du schéma « Agence de voyages ».

CREATE SCHEMA agence_de_voyage CREATE TABLE Station (... CREATE TABLE Client (... ... CREATE VIEW ... ... CREATE ASSERTION ... ... CREATE TRIGGER ... ...

Deux schémas différents sont indépendants : on peut créer deux tables ayant le même nom. Bien entendu, on peut modifier un schéma en ajoutant ou en supprimant des éléments. La modification a lieu dans le schéma courant, que l’on peut modifier avec la commande SET SCHEMA. Par exemple, avant de modifier la table FILM, on exécute :

SET SCHEMA officiel_desspectacles

Quand on souhaite accéder à une table qui n’est pas dans le schéma courant (par exemple dans un ordre SQL), il faut préfixer le nom de la table par le nom du schéma.

SELECT * FROM officiel_des_spectacles.film

La commande CREATE TABLE est utilisée pour définir une nouvelle relation en lui donnant un nom et en spécifiant ses attributs et ses contraintes. Les attributs sont spécifiés en premier, et on leurs donne un nom, un type de données pour spécifier leur domaine et toutes contraintes attachées (par exemple NOT NULL). Les clés, contraintes d’entité et contraintes d’intégrité référentielle peuvent être spécifiées - dans la commande CREATE TABLE - après la déclaration des attributs, ou bien elles peuvent être ajoutées plus tard en utilisant des commandes ALTER TABLE.

Exemple 48

CREATE TABLE EMPLOYEE (FNAME VARCHAR(15) NOT NULL MINIT CHAR,

LNAME VARCHAR(15) NOT NULL, SSN CHAR(9) NOT NULL, BDATE DATE,

ADDRESS VARCHAR(30), SEX CHAR,

SALARY DECIMAL(10,2) SUPERSSN CHAR(9), DNO INT NOT NULL, PRIMARY KEY (SSN)

FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE(SSN) FOREIGN KEY (DNO) REFERENCES DEPARTMENT(DNUMBER)

Identificateurs. Ils doivent être de longueur maximale de 30 caractères (Oracle).

Types de données et domaines en SQL. Les types de données disponibles incluent les nombres, les chaînes de caractères, les chaînes de bits, la date et le temps.

Les types de nombres.

Ils incluent les entiers de différentes tailles (INTEGER ou INT, et SMALLINT), et les réels de précisions va- riables (FLOAT, REAL, DOUBLE PRECISION). Les nombres formatés peuvent être déclarés par DECIMAL(i, j)

ou DEC(i, j) ou NUMERIC(i, j) où i, la précision, est le nombre total de chiffres et j, l’échelle, est le nombre de chiffres après la virgule.

Les types chaînes de caractères.

Ils sont soit de longueur fixe - CHAR(n) ou CHARACTER(n)-, où n est le nombre de caractères, soit de longueur variable - VARCHAR(n) ou CHAR VARYING(n) ou CHARACTER VARYING(n) -, où n est le nombre maximal de caractères.

Les types chaînes de bits.

Ils sont soit de longueur fixe - BIT(n) -, où n est le nombre de bits, soit de longueur variable - BIT VARYING(n) -, où n est le nombre maximal de bits. La valeur par défaut pour n est de 1.

Les BLOBs (Binary Long Object).

Avec le développement du multimédia, la plupart des SGBD propose un type de données qui permet de stocker des objets binaires de grande taille (documents, image, son, vidéo, ...). Actuellement deux stratégies s’opposent :

1. On stocke dans la BD la référence du fichier qui contient le BLOB. 2. On stocke l’objet directement dans une colonne de la BD.

La solution 1 fournit en principe un temps d’accès plus rapide au BLOB.

La solution 2 a l’avantage de la portabilité en cas de déplacement des fichiers et/ou de changement de plateforme.

Les types de données binaires (image, son) sont :

• RAW (jusqu’à 2000 bytes),

• LONG RAW (jusqu’à 2 giga bytes)

Le type date.

Oracle alloue 7 caractères pour un attribut de type DATE. Oracle utilise ce type pour stocker la date et l’heure. Le format par défaut est : jj-mmm-aa (exemple : ’01-JAN-94’)

4.4.2 Contraintes et assertions XXX A FAIRE 4.4.3 Vues XXX A FAIRE 4.4.4 Triggers XXX A FAIRE

4.4.5 Les droits d’accès aux données

L’accès à une base de données est restreint, pour des raisons de sécurité, à des utilisateurs connus du SGBD et identifiés par un nom et un mot de passe. Chaque utilisateur se voit attribuer certains droits sur les schémas et les tables de chaque schéma.

La connexion se fait soit dans le cadre d’un programme, soit interactivement par une commande du type : CONNECT utilisateur

Suivies de l’entrée du mot de passe demandé par le système. Une session est alors ouverte pour laquelle le SGBD connaît l’ID de l’utilisateur courant. Les droits de cet utilisateur sont alors les suivants :

1. Tous les droits sur les éléments du schéma comme les tables ou les vues des chémas que l’utilisateur a lui-même créé. Ces droits concernent aussi bien la manipulation des données que la modification ou la destruction des éléments du schéma.

2. Les droits sur les éléments d’un schéma dont on n’est pas propriétaire sont accordés par le proprié- taire du schéma. Par défaut, on n’a aucun droit.

En tant que propriétaire d’un schéma, on peut donc accorder des droits à d’autres utilisateurs sur ce schéma ou sur des éléments de ce schéma. SQL2 définit 6 types de droits. Les quatre premiers portent sur le contenu d’une table, et se comprennent aisément.

1. Insertion ((INSERT). 2. Modification (UPDATE). 3. Recherche (SELECT). 4. Destruction (DELETE).

Il existe deux autres droits :

1. REFERENCES donne le droit à un utilisateur non propriétaire du schéma de faire référence à une table dans une contrainte d’intégrité.

2. USAGE permet à un utilisateur non propriétaire du schéma d’utiliser une définition (autre qu’une table ou une assertion) du schéma.

Les droits sont accordés par la commande GRANT dont la syntaxe est : GRANT <privilege>

ON <element du schéma> TO utilisateur>

[WITH GRANT OPTION] ;

Bien entendu, pour accorder un privilège, il faut en avoir le droit, soit parce que l’on est propriétaire de l’élément du schéma, soit parce que le droit a été accordé par la commande WITH GRANT OPTION.

Exemple 49

Par exemple, pour permettre à Marc de consulter les films : GRANT SELECT ON Film TO Marc ;

On peut désigner tous les utilisateurs avec le mot-clé PUBLIC, et tous les privilèges avec l’expression ALL PRIVILEGES.

Exemple 50

GRANT ALL PRIVILEGES ON Film TO Marc ;

On supprime un droit avec la commande REVOKE dont la syntaxe est semblable à celle de GRANT.

Exemple 51

Chapitre

4

Pratique des SGBD

Sommaire

1 Exemples de SGBD . . . 54 1.1 Perspectives historiques . . . 54 1.2 ORACLE . . . 54 1.3 Microsoft Access . . . 54 2 Techniques d’optimisation . . . 54

3 Techniques d’accès partagés : le contrôle de concurrence . . . 54

Documents relatifs