Conception de bases de données relationnelles Langage SQL Marie Szafranski 2016-2017 ensiie 1 2016-2017 ensiie 1 Création et modification de tables (attributs, types, etc.) Définition des contraintes d intégrité (clés primaires, candidates, etc.) Définition des contraintes référentielles (clés étrangères) Création de vues Suppression d objets (tables, vues, attributs, domaines, etc.) 2016-2017 ensiie 2 2016-2017 ensiie 2
Types de données Types de données Types numériques INTEGER, TINYINT, SMALLINT, LONGINT DECIMAL[(s, t)], NUMERIC FLOAT[(s, t)] Types chaînes de caractères CHAR(l), VARCHAR(l) TEXT Types date (la taille du numérique compte) (la longueur de la chaîne compte) DATE ( AAA-MM-JJ ), DATETIME( AAAA-MM-JJ HH:MM:SS ) YEAR, MONTH, TIME... (le format de la date compte) Autres types RTFM! Monétaires (MONEY) (money money), énumérés (ENUM), séquences (SEQUENCE/SERIAL) Valeur NULL 0, L fait partie du domaine 2016-2017 ensiie 3 2016-2017 ensiie 3 Création de tables Création de tables Définition d un schéma de relation en intension Spécification des attributs et des domaines CREATE TABLE <nom de table>( <nom attribut 1> <type attribut 1> [NOT NULL],. <nom attribut n> <type attribut n> [NOT NULL]); CREATE TABLE Super heros( nom super VARCHAR(20), nom civil VARCHAR(20), prenom VARCHAR(20), age INTEGER(3)); 2016-2017 ensiie 4 2016-2017 ensiie 4
Définition et contrôle de la cohérence d une (ensemble de) donnée(s) création des tables Contrainte sur un attribut Clé primaire Unicité Intégrité référentielle Validité (restriction de domaine) Contrainte sur une table (Après la définition d un attribut) PRIMARY KEY UNIQUE REFERENCES <table> (<attribut(s)>) CHECK (<condition>) (Après la définition de tous les attributs) Clé primaire Unicité Intégrité référentielle PRIMARY KEY (<liste d attributs>) UNIQUE (liste d attributs) FOREIGN KEY (<liste d attributs>) REFERENCES <table> (<liste d attributs>) Validité (restriction de domaine) CHECK (<condition>) 2016-2017 ensiie 5 2016-2017 ensiie 5 (Super exemple) (Super exemple) Contrainte sur un attribut CREATE TABLE Super heros( nom super VARCHAR(20) PRIMARY KEY, nom civil VARCHAR(20), prenom VARCHAR(20), age INTEGER(2) (CHECK age BETWEEN 1 AND 65)); -- UNIQUE NOT NULL Contrainte sur une table CREATE TABLE Super heros pouvoirs( super VARCHAR(20), pouvoir VARCHAR(20), CONSTRAINT pk SHP PRIMARY KEY (super, pouvoir), FOREIGN KEY (super) REFERENCES Super heros (super), FOREIGN KEY (pouvoir) REFERENCES Super pouvoirs (nom pouvoir)); 2016-2017 ensiie 6 2016-2017 ensiie 6
(Autre exemple) (Autre exemple) CREATE TABLE Personne( n ss CHAR(13) PRIMARY KEY, nom VARCHAR(25) NOT NULL, prenom VARCHAR(25) NOT NULL, age INTEGER(3) CHECK (age BETWEEN 18 AND 65), mariage CHAR(13) REFERENCES Personne(n ss), code postal INTEGER(5), pays VARCHAR(50), CONSTRAINT ck Personne UNIQUE (nom, prenom), CONSTRAINT fk Personne Pays FOREIGN KEY (code postal, pays) REFERENCES Adresse (c p, pays)); CREATE TABLE Adresse( c p INTEGER(5) NOT NULL, pays VARCHAR(50) NOT NULL, initiale CHAR(1) CHECK (initiale = LEFT(pays, 1)), PRIMARY KEY (c p, pays)); 2016-2017 ensiie 7 2016-2017 ensiie 7 référentielles (Portée) référentielles (Portée) Suppression ou mises à jour sur les clés étrangères ON DELETE/UPDATE CASCADE ON DELETE/UPDATE RESTRICT 2016-2017 ensiie 8 2016-2017 ensiie 8
Modification d attributs ou de contraintes préalablement définie ALTER TABLE <table> ADD COLUMN (<définition de l attribut>); ALTER TABLE <table> DROP COLUMN (<nom de l attribut>); -- Ajout d un attribut -- Suppression d un attribut -- Modification d un attribut ALTER TABLE <table> ALTER COLUMN (<redéfinition de l attribut>); -- Ajout d une contrainte ALTER TABLE <table> ADD CONSTRAINT (<définition de la contrainte>);... 2016-2017 ensiie 9 2016-2017 ensiie 9 (Super exemple) Super exemple Modification d attributs ou de contraintes préalablement définies CREATE TABLE Super heros( nom super VARCHAR(20) PRIMARY KEY, nom civil VARCHAR(20), prenom VARCHAR(20), age INTEGER(3)); -- table initiale -- modifications ALTER TABLE Super heros ALTER COLUMN nom super TYPE VARCHAR(50); ALTER TABLE Super heros ADD CONSTRAINT u n UNIQUE (nom civil, prenom); ALTER TABLE Super heros DROP COLUMN age; CREATE TABLE Super heros( nom super VARCHAR(50) PRIMARY KEY, nom civil VARCHAR(50), prenom VARCHAR(20), CONSTRAINT u n UNIQUE (nom civil, prenom); -- table modifiée 2016-2017 ensiie 10 2016-2017 ensiie 10
(Remarques) Remarques Modification d attributs ou de contraintes préalablement définies Modification d une table vide sans ALTER Suppression de la table (DROP) et création avec les modifications Plus compliqué si la table est référencée Modification d une table non vide sans ALTER Copie des données dans une table temporaire de même schéma Suppression et création d une table modifiée avec le nouveau schéma Copie des données depuis la table temporaire vers la table modifiée 2016-2017 ensiie 11 2016-2017 ensiie 11 Création de vues Création de vues Définition logique d une relation sans stockage de données Requête stockée (définition) ouvrant une fenêtre dynamique sur les données (résultat) Implantation du concept de schéma externe d un MCD CREATE VIEW <nom de vue> <liste d attributs> AS <spécification de question>; -- nombre et types identiques que dessus CREATE VIEW Super age (super, age) AS SELECT (nom super, age) FROM Super heros; Remarques Lecture d une vue Source d une vue Restitution de l héritage pour tous (modulo les droits accordés) une relation, une autre vue 2016-2017 ensiie 12 2016-2017 ensiie 12
Suppression d objets Suppression d objets Suppression d une relation ou d une vue DROP TABLE <table>; DROP VIEW <table>; DROP TABLE Parvenus; DROP VIEW Parvenus; --! tables référencées 2016-2017 ensiie 13 2016-2017 ensiie 13 Création d utilisateurs Définition de leurs droits SGBD, BD, relations ou attributs Remarque Gestion de la création d utilisateur (CREATE USER) par le SGBD en général 2016-2017 ensiie 14 2016-2017 ensiie 14
Attribution des droits Attribution de droits GRANT <liste de droits> ON <table> TO <utilisateur> [WITH GRANT OPTION]; -- transfert de droits GRANT SELECT, UPDATE ON Super heros TO Edna Mode; GRANT ALL PRIVILEGES ON Super heros TO Government; Liste des droits SELECT INSERT DELETE UPDATE ALTER ALL PRIVILEGES 2016-2017 ensiie 15 2016-2017 ensiie 15 Attribution des droits (Remarques) Attribution de droits (Remarques) Droits sur un SGBD Certains SGBD (MySQL) Droits CREATE et DROP généralement ajoutés (création et suppression de BD et des tables) Droits sur une BD Certains SGBD (MySQL) Droits CREATE et DROP généralement ajoutés (création et suppression de tables) Droits sur une vue Syntaxe quasi-identique (VIEW à la place de TABLE) 2016-2017 ensiie 16 2016-2017 ensiie 16
Révocation de droits Révocation de droits REVOKE [GRANT OPTION FOR] <liste de droits> ON <object> TO <utilisateur> REVOKE UPDATE ON Super heros TO Edna Mode; REVOKE ALL PRIVILEGES ON Super heros TO PUBLIC; Droit supprimé pour un utilisateur U droit supprimé en cascade pour les utilisateurs ayant obtenu le droit par U 2016-2017 ensiie 17 2016-2017 ensiie 17