Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parSuzanne Lefèvre Modifié depuis plus de 9 années
1
Analyse et Conception de Systèmes Informatiques (ACSI)
2
2 Rappel Nom IdentifiantChamp_1Champ_2Champ_N id_val_ach_1_ach_2_ach_N_a id_val_bch_1_bch_2_bch_N_b id_val_cch_1_cch_2_cch_N_c id_val_dch_1_dch_2_dch_N_d id_val_ech_1_ech_2_ech_N_e Entité IdentifiantChamps Occurences
3
3 L'association un à un Est caractérisée par des cardinalités maximales à 1. Ces associations sont à proscrire dans un modèle E-A car les 2 entités peuvent être fusionnées. Entite_2Entite_1 Lie Attributs ProfessionPersonne Exerce date_origine Min,1 0,1 Présentation Exemple
4
4 L'association un à plusieurs Est caractérisée par une cardinalité maximale à 1 et une cardinalité maximale à n. Ici, une personne exerce au plus 1 profession et une profession peut être exercée par aucune ou plusieurs personnes. Entite_2Entite_1 Lie Attributs ProfessionPersonne Exerce date_origine Min,nMin,1 0,10,n Présentation Exemple
5
5 L'association plusieurs à plusieurs Est caractérisée par des cardinalités maximales à n. Ici, une personne exerce aucune ou plusieurs professions et une profession peut être exercée par aucune ou plusieurs personnes. Entite_2Entite_1 Lie Attributs ProfessionPersonne Exerce date_origine Min,n 0,n Présentation Exemple
6
6 L'association plurielle Deux entités peuvent être liées plusieurs fois, c'est l'association plurielle. Présentation Exemple Entite_2Entite_1 Lie ProfessionPersonne Exerce Lie Enseigne
7
7 L'association n-aire Il est possible d'associer autant d'entités que nécessaire. Il est toutefois rare de voir des associations à des degrés supérieurs des ternaires. Entite_2Entite_1 Lie Attributs MatierePersonne Enseigne Jour Heure Min,Max 0,n Présentation Exemple Entite_2 Min,Max Universite 0,n
8
8 L'association réflexive L'association réflexive permet d'associer une entité à elle-même. Dans cet exemple, une personne est parent d'une autre personne. Présentation Exemple Entite_1 Lie Attributs Personne est_parent
9
9 Cours 1 : Présentation L'algèbre relationnelle Le modèle entité-relation (E-A) Cours 2 : Du modèle E-A au MPD Le langage SQL Cours 3 : SQL avancé Cours 4 : Méthodes de modélisation Cours 5 : Administration et sécurité
10
10 Du modèle E-A au MPD Présentation MPD Tables Les types de données usuels Méthodes de transition
11
11 Présentation Le Modèle Physique de Données est la représentation exacte de la base de données. Le MPD est liée au système utilisé. Un MPD peut être obtenu automatiquement par des outils mais il correspond rarement au besoin. Le MPD peut permettre de créer automatiquement la base de données par des outils en générant le code SQL correspondant.
12
12 Les tables Les tables sont les éléments du MPD. Une table contient des attributs typés. Une table doit contenir une clé primaire permettant d'identifier de façon unique l'occurrence de la table. Une table peut contenir une ou des clé étrangère permettant de la lier à une autre table. Les types de données peuvent varier selon les système de base de données.
13
13 Les types de données usuels Les champs Numériques (1/2) TypeVal minVal max BIT01 TINYINT-128127 BOOLTRUEFALSE SMALLINT-3276832767 MEDIUMINT-83886088388607 INT-21474836482147483647 BIGINT-9,22337E+189,22337E+18 SERIALBIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
14
14 Les types de données usuels Les champs Numériques (2/2) TypeVal minVal max FLOAT-3.402823466E+38-1.175494351E-38 00 1.175494351E-383.402823466E+38 DOUBLE-1.7976931348623157E+308-2.2250738585072014E-308 00 2.2250738585072014E-3081.7976931348623157E+308 DECIMAL(S,D)S<=65 (précision)D<=30 (décimale) FIXEDsynonyme DECIMAL NUMERICsynonyme DECIMAL DECsynonyme DECIMAL
15
15 Les types de données usuels Les champs alpha-numériques et binaires TypeLongueur max CHAR(S)255 (selon version) VARCHAR(S)255 (selon version) BINARY(S)255 (selon version) VARBINARY(S)255 (selon version) TypeLongueur max TINYBLOB256 BLOB65 536 (64 Ko) MEDIUMBLOB16 777 216 (16 Mo) LONGBLOB4 294 967 296 (4 Go) TINYTEXT256 TEXT65 536 (64 Ko) MEDIUMTEXT16 777 216 (16 Mo) LONGTEXT4 294 967 296 (4 Go)
16
16 Les types de données usuels Les champs date et heure TypeVal minVal max DATETIME'1000-01-01 00:00:00''9999-12-31 23:59:59' DATE'1000-01-01''9999-12-31' TIMESTAMP'1970-01-01 00:00:01''2038-01-19 03:14:07' TIME'-838:59:59''838:59:59' YEAR19012155
17
17 Les clés On appelle clé primaire le ou les champs permettant d'identifier de façon unique une occurrence d'une table. On appelle clé étrangère le ou les champs permettant de lier une table à une autre. La clé étrangère est liée à la clé primaire de l'autre table.
18
18 Méthodes de transition L'entité devient une table. L'identifiant devient la clé primaire. Une relation 1 à 1 ou 1 à plusieurs se traduit par une clé étrangère dans la table ayant la cardinalité maximale à 1. Une relation plusieurs à plusieurs devient une table dont la clé primaire peut être l'association des clés primaires des tables liées.
19
19 Méthodes de transition Contrairement à la règle dans un modèle E-A, un même champs peut exister dans plusieurs tables. Ceci est nécessaire pour les clés étrangères permettant de lier les tables entre elles. Cela peut également être utilisé pour des raisons d'optimisation ou pour séparer des données pour lesquelles il est plus logique d'avoir des tables distinctes d'un point de vue fonctionnel.
20
20 Adresse ID Voie CP Ville 0,10,N ID Nom Prenom Personne Adresse IDint Voievarchar(200) CPint Villevarchar(50) IDint Nomvarchar(30) Prenomvarchar(30) Adress#int Le modèle E-A suivant : Pourra s'interpréter : Exemple (1/3) Reside Personne
21
21 Exemple (2/3) Adresse ID Voie CP Ville Réside Date_emmen 0,N ID Nom Prenom Personne Le modèle E-A suivant : Pourra s'interpréter : Adresse IDint Voievarchar(200) CPint Villevarchar(50) IDint Nomvarchar(30) Prenomvarchar(30) Personne ID_personne#int ID_adresse#int date_emmendate Reside
22
22 Exemple (3/3) Adresse ID Voie CP Ville Réside date_debut date_fin 0,N ID Nom Prenom Personne Le modèle E-A suivant : Pourra s'interpréter : Adresse IDint Voievarchar(200) CPint Villevarchar(50) IDint Nomvarchar(30) Prenomvarchar(30) Personne IDint ID_personne#int ID_adresse#int date_debutdate date_findate Reside
23
23 Le langage SQL Présentation Le LDD Création de bases et de tables Suppression et modification de tables Les vues, les triggers et les indexes Le LMD Le Select L'Update, le Delete Les fonctions
24
24 Présentation Le Structured Query Language est un langage standardisé qui permet d'effectuer des opérations sur des bases de données. Il se compose du langage de définition de données permettant de gérer les structures de la base et du langage de manipulation de données pour interagir avec les données. Attention, certaines syntaxes ou fonctions sont propres au système de base de données utilisé.
25
25 Le langage de définition de données Les commandes principales sont : - Pour les bases : create, alter, drop - Pour les tables : create, alter, rename, drop - Pour les indexes : create, drop - La gestion des vues, des triggers, des events Ces fonctions sont assez peu utilisées car des outils tels que phpMyAdmin permettent d'effectuer directement ces opérations.
26
26 Pour les bases (1/3) Il est possible de créer autant de bases de données que nécessaires. Généralement, une base regroupe toutes les données nécessaires pour un besoin fonctionnel précis. En clair, on peut résumer : une application, une base de données. L'interaction entre les bases de données est possible mais alourdit la syntaxe SQL.
27
27 Pour les bases (2/3) Création d'une base de données : CREATE DATABASE [IF NOT EXISTS] db_name [create_specification] Les spécifications permettent notamment de définir le char-set de la base.
28
28 Pour les bases (3/3) Suppression d'une base de données : DROP DATABASE [IF EXISTS] db_name Modification d'une base de données : ALTER DATABASE db_name alter_specification [, alter_specification]...
29
29 Pour les tables Création d'une table : CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] create_definition représente la liste des champs avec leur type et leurs éventuelles options. table_option permet de préciser notamment le char-set ainsi que le moteur de la table (ENGINE).
30
30 Pour les tables (create) La liste des champs doit être précisée : col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [[PRIMARY] KEY] [reference_definition] Seuls le nom est le type sont obligatoires. Par défaut un champ est défini en NULL. Les champs sont séparés par des virgules.
31
31 Pour les tables (create) L'option AUTO_INCREMENT permet de confier la gestion du champ par le moteur de base de données. A chaque insertion dans la table, la valeur du champ sera automatiquement incrémentée. Cette option n'est possible que sur des champs de type entier. Le type SERIAL est un raccourci pour définir un champs UNSIGNED BIGINT AUTO_INCREMENT UNIQUE.
32
32 Pour les tables (create) Les options facultatives de la tables permettent de préciser (en outre) : Le moteur de la table : - MyIsam (par défaut) - InnoDb (gère les transactions) - Memory (chargée en mémoire) Le char-set utilisé pour le stockage et l'ensemble de règles permettant la comparaisons de caractères dans un jeu (collation), par défaut latin1_swedish_ci correspondant à ISO-8859.
33
33 Exemple create table create table IF NOT EXISTS personne( id int not null primary key auto_increment, nom varchar(100) not null, prenom varchar(100), annee_naiss year default "1950") engine=InnoDB
34
34 Exemple create table create table IF NOT EXISTS personne( nom varchar(100) not null, prenom varchar(100), annee_naiss year default "1950", primary key (nom, prenom), index personne_anne (annee_naiss) ) engine=InnoDB
35
35 Pour les tables Modification d'une table : ALTER TABLE tbl_name ADD [COLUMN] column_definition [FIRST | AFTER col_name ] | ADD INDEX [index_name] [index_type] (index_col_name,...) | ADD PRIMARY KEY [index_type] (index_col_name,...) | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
36
36 Pour les tables Modification d'une table (suite) : ALTER TABLE tbl_name ADD FOREIGN KEY [index_name] (index_col_name,...) CHANGE [COLUMN] old_col_name column_definition DROP [COLUMN] col_name DROP PRIMARY KEY DROP INDEX index_name DROP FOREIGN KEY fk_symbol
37
37 Pour les tables Renommage d'une table : RENAME TABLE nom_de_table TO nouveau_nom_de_table Suppression d'une table : DROP TABLE tbl_name Attention, cette action est irréversible, toutes les données contenues dans la table sont évidemment supprimées.
38
38 Pour les indexes Un indexe permet au moteur d'accéder rapidement à la donnée recherchée. Si vous recherche un champs ayant une valeur donnée et qu'il n'y a pas d'indexe sur ce champ, le moteur devra parcourir toute la table. Les indexes doivent toutefois être utilisés avec parcimonie car ils pénalisent les temps d'insertion et de suppression des données dans la table. Une clé primaire est par définition un indexe unique sur un champ non null. Un indexe unique a ceci de différent qu'il peut éventuellement être null.
39
39 Pour les indexes Création d'un indexe : CREATE [UNIQUE] INDEX index_name ON tbl_name (col_name [(length)] [ASC | DESC],...) La taille peut être précisée pour des champs varchar par exemple. Elle doit obligatoirement pour les types blob. Suppression d'un indexe : DROP INDEX index_name ON tbl_name
40
40 Pour les triggers Les triggers sont du code SQL appelé avant une action sur les données de la tables. Cela permet de mettre en place des contrôles sur les données manipulées avant de modifier celles de la table. Par exemple, on peut vérifier que les données que l'on désire insérer répondent à des contrôles d'intégrité (par exemple on désire pouvoir stocker uniquement des dates du 20ème siècle). Les triggers sont à utiliser avec parcimonie car ils ralentissent les actions sur les tables. Ils peuvent également gérer des situations de blocage.
41
41 Pour les vues Une vue permet de simuler une table par le biais d'une requête de manipulation de données (SELECT). Cela peut s'avérer utile si des données auxquelles ont accède régulièrement se trouve dans plusieurs tables. Le résultat de la requête donne la structure de la vue comme s'il s'agissait d'une table, mais il s'agit en fait de références vers les données. En cas de suppression de données dans la vue, les données physiques dans les tables concernées sont supprimées.
42
42 Pour les events Il est possible de déclencher une opération SQL à un instant donné. Par exemple, on peut mettre en place l'insertion d'une occurrence dans une table tous les jours à midi.
43
43 Le langage de manipulation de données Les commandes principales sont : - Insert pour ajouter les données - Update pour modifier les données - Delete pour supprimer les données - Select pour consulter les données
44
44 La commande INSERT Cette commande permet d'insérer des données dans une table. INSERT [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...) Le nombre de col_name doit correspondre au nombre d'expressions. Le fait de préciser les champs est optionnel mais impose en cas de non indication de donner les expressions de chaque colonne dans l'ordre.
45
45 La commande INSERT (2/2) Pour champs ayant l'option AUTO_INCREMENT, il est possible soit de ne pas préciser le champ dans la liste, soit de passer la valeur NULL. C'est le système qui se chargera d'attribuer automatiquement une valeur.
46
46 La commande UPDATE (1/2) Cette commande permet de modifier des données dans une table. UPDATE tbl_name SET col_name1=expr1 [,col_name2=expr2...] [WHERE where_definition] [LIMIT row_count] Le SET permet d'attribuer une nouvelle valeur au champ. Il est possible de mettre à jour plusieurs champs en même temps.
47
47 La commande UPDATE (2/2) Le WHERE permet de préciser quelles données on désire mettre à jour. Son fonctionnement sera détaillé avec la commande SELECT. Sans clause WHERE, toutes les données de la table sont mises à jour. La LIMIT permet de limiter le nombre de lignes à modifier.
48
48 La commande DELETE Cette commande permet de supprimer des données dans une table. DELETE FROM table_name [WHERE where_definition] [LIMIT row_count] Le WHERE permet de préciser quelles données on désire supprimer. Sans clause WHERE, toutes les données de la table sont supprimées. On préfère alors utiliser la commande spéciale TRUNCATE TABLE.
49
49 La commande SELECT (1/8) Cette commande permet de lire des données dans une table ou plusieurs tables. SELECT [DISTINCT] select_expression,... [FROM table_references [WHERE where_definition] [ORDER BY {unsigned_integer | nom_de_colonne} [ASC | DESC],...] [LIMIT [offset,] lignes]
50
50 La commande SELECT (2/8) select_expression Indique la colonne à lire, une constante, ou une valeur calculée. Le DISTINCT permet de ne lire que des valeurs distinctes. Le FROM permet de lister les tables à utiliser dans la recherche des données. Le ORDER BY permet de trier le résultat de la requête (ASC : croissant, DESC décroissant).
51
51 La commande SELECT (3/8) IDint Nomvarchar(30) Prenomvarchar(30) Adress#int Exemple : On désire lire les noms rangés par ordre alphabétique de toutes les personnes qui se prénomme Lisa. SELECT Nom FROM Personne WHERE Prenom = 'Lisa' ODER BY 1 Personne
52
52 La commande SELECT (4/8) IDint Nomvarchar(30) Prenomvarchar(30) Adress#int Exemple : On désire lire tous les noms et prénoms associés dans un champs séparés par un espace. SELECT concat(Nom, ' ', Prenom) as Gens FROM Personne ODER BY 1 Personne
53
53 La commande SELECT (5/8) IDint Nomvarchar(30) Prenomvarchar(30) Adress#int Exemple : On désire lire les ID de toutes les personnes ayant une adresse renseignée. SELECT ID FROM Personne WHERE Adresse# IS NOT NULL Personne
54
54 La commande SELECT (6/8) Le WHERE permet de préciser les critères de recherche et d'associer les tables entre elles. Tous les opérateurs =,,,!=, >=,, BETWEEN, IN, NOT IN, IS NULL, IS NOT NULL,... sont supportés. Si l'on désire recherches des données contenues dans une table ainsi que dans une autre table liée par le biais d'une clé étrangère, il est indispensable de préciser l'égalité entre les 2 champs.
55
55 La commande SELECT (7/8) Attention, si toutes les tables listées dans la clause FROM ne sont pas associées dans la clause WHERE, le moteur effectuera un produit cartésien des tables non liées. Ainsi si 3 tables de 500, 1000, et 2500 lignes sont appelées dans le FROM sans association dans la clause WHERE, le résultat sera de : 500 * 1000 * 2500 = 1 250 000 000 lignes.
56
56 La commande SELECT (8/8) Adresse IDint Voievarchar(200) CPint Villevarchar(50) IDint Nomvarchar(30) Prenomvarchar(30) Adress#int Exemple : SELECT Personne.Nom, Adresse.Voie FROM Personne, Adresse WHERE Personne.Adress# = Adresse.ID AND Personne.nom like 'Simps%' Personne
57
57 La commande INSERT Il est possible d'insérer dans une table des données issues d'une autre requête. INSERT [INTO] tbl_name [(col_name,...)] SELECT...
58
58 La commande UPDATE Il est possible de mettre à jour des données en fonction de données d'autres tables : UPDATE tbl_name [, tbl_name...] SET col_name1=expr1 [,col_name2=expr2...] [WHERE where_definition] C'est toujours la table dont le nom est accolé au mot UPDATE qui est mise à jour.
59
59 La commande DELETE DELETE table_name [, table_name...] FROM table-references [WHERE where_definition] Grâce à cette syntaxe, il est possible de supprimer les données des table_name répondant aux critères données par les clauses WHERE sur les tables données par FROM.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.