Créée le, 19/06/2015

 Mise à jour le, 19/05/2019

Visiteurs N°  




Accueil
Nouveau Blog Nouveautés Moteur de Recherche Votre Caddie Pour Vos Achats Votre Espace Membre Vos Signets et Vos Jeux Préférés Page de Bienvenue Statique Site en Français Site en Anglais
Sommaires
Électronique Fondamentale Technologie Fondamentale Testez vos Connaissances Électronique Théorique Digitale Électronique Pratique Digitale Lexique Électronique Numérique Data book TTL Data book CMOS Dépannage TVC Mathématique
Micro-ordinateurs
Théorique des Micro-ordinateurs Testez vos Connaissances Pratique des Micro-ordinateurs Glossaires sur les Ordinateurs
Physique
La lumière Champ d'action Rayonnement Électromagnétique
Technologies
Classification des Résistances Identification des Résistances Classification des Condensateurs Identification des Condensateurs
Formulaires Mathématiques
Géométrie Physique 1. - Électronique 1. 2. - Électronique 1. 3. - Électrotechnique 1. 4. - Électromagnétisme
Accès à tous nos Produits
E. T. F. - Tome I - 257 Pages E. T. F. - Tome II - 451 Pages E. T. F. - Tome III - 611 Pages E. T. D. - Tome I - 610 Pages N. B. M. - Tome I - 201 Pages E. T. M. - Tome I - 554 Pages Business à Domicile Ouvrages 34 pages gratuits Nos E-books Logiciel Géométrie Logiciel Composants Électroniques
Aperçu de tous nos Produits
E. T. F. - Tome I - 257 Pages E. T. F. - Tome II - 451 Pages E. T. F. - Tome III - 611 Pages E. T. D. - Tome I - 610 Pages E. T. M. - Tome I - 554 Pages Logiciel Géométrie Logiciel Composants Électroniques
Nos Leçons aux Formats PDF
Électronique Fondamentale Technologie Fondamentale Électronique Théorique Digitale Électronique Pratique Digitale Théorique des Micro-ordinateurs Mathématiques
Informatique
Dépannage Win98 et WinXP et autres Dépannage PC Glossaire HTML et Programmes PHP et Programmes JavaScript (en cours de travaux) Création de plusieurs Sites
Forums
Forum Électronique et Infos Forum Électronique et Poésie
Divers et autres
Formulaire des pages perso News XML Statistiques CountUs Éditeur JavaScript Nos Partenaires et nos Liens Utiles Gestionnaire de Partenariat Nos Partenaires MyCircle Sondages 1er Livre d'Or 2ème livre d'Or

Signets :
  Leçons suivantes        Leçons précédentes     Bas de page
  Cliquez ici pour la leçon suivante ou dans le sommaire prévu à cet effet


Conception de votre base de données Web (3ème partie) :



Configurer un utilisateur pour le Web :


Vous devez configurer un utilisateur pour que vos scripts PHP puissent se connecter à MySQL. Une fois encore, nous pouvons appliquer le principe de privilèges minimaux pour déterminer ce que les scripts doivent pouvoir faire.

Dans la plupart des cas, il leur suffit de sélectionner, d'insérer, de supprimer et de mettre à jour des lignes dans des tableaux, grâce à SELECT, INSERT, DELETE et UPDATE. Vous pouvez choisir cette configuration grâce à la commande suivante :

    GRANT SELECT, INSERT, DELETE, UPDATE

    ON books . *

    TO jean_pierre identified by 'books123' ;

De toute évidence, et pour des raisons de sécurité, il faut choisir un mot de passe plus élaboré que celui-ci.

Si vous passez par un service d'hébergement Web, vous avez en général accès aux autres privilèges réservés aux utilisateurs classiques pour les bases de données que ce service crée à votre place. Les services d'hébergement Web fournissent souvent le même user_name (nom d'utilisateur) et password (mot de passe) pour l'accès à la ligne de commande (la définition des tableaux, etc.) et pour les connexions de scripts Web (c'est-à-dire, les interrogations de la base de données). Cette approche est incroyablement peu sécurisée. Vous pouvez configurer un utilisateur avec ce niveau de privilèges de la manière suivante :

    GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP

    ON books . *

    TO jean_pierre identified by 'books_123456' ;

Nous vous invitons à créer ce second utilisateur à savoir, jean_pierre, comme vous pourrez le voir sur l'arperçu de la capture ci-après, puisque le site s'intitule jean_pierre en respectant la casse :


Privileges_de_Books.png

Pour utiliser la bonne base de données :

Si vous n'avez eu aucun problème particulier, vous devriez être loggé sous un compte d'utilisateur de MySQL pour tester les exemples de code, soit parce que, vous venez de configurer cet utilisateur, soit parce que, votre administrateur de serveur Web l'a créé à votre place.

La première chose à faire après avoir ouvert une session, consiste à spécifier la base de données avec laquelle vous souhaitez travailler. Pour cela, saisissez la commande suivante :

    use dbname ;

dbname correspond au nom de votre base de données que vous avez créé à la leçon précédente. (Voir Création de la base de données)

Dans cet exemple, nous utiliserons la base de données books.

    use books ;

Lorsque vous saisissez cette commande, MySQL devrait vous renvoyer une réponse comme celle-ci et selon votre base de données :

    Database changed : (Base de données modifiée)

Si vous ne sélectionnez aucune base de données avant de commencer votre travail, MySQL affiche un message d'erreur, comme ci-après :

    ERROR 1049 ou 1046 : No database Selected (Aucune base de données sélectionnée).

Création des tableaux de la base de données :

L'étape suivante concernant la configuration de la base de données consiste à créer les tableaux. Pour cela, vous pouvez vous servir de la commande SQL CREATE TABLE. Voici le format général de l'instruction CREATE TABLE :

    CREATE TABLE table_name(columns)

Il faut remplacer le mot clé table_name par le nom du tableau que vous souhaitez créer, et le mot clé columns par la liste des colonnes de votre tableau, séparées par des virgules.

Chaque colonne possède un nom, suivi d'un type de données.

Voici le schéma de chez Jean-Pierre que nous avions déjà évoqué dans le chapitre précédent :

les_clients(client_ID, nom, adresse, ville)

les_commandes(commande_ID, client_ID, montant, date)

les_livres(ISBN, auteur, titre, prix)

les_articles_commandes(commande_ID, ISBN, quantitee)

les_commentaires_livres(ISBN, commentaires)

Le Listing 1 vous présente le code SQL permettant de créer ces tableaux, en supposant que vous avez déjà créé la base de données books. Vous trouverez le programme SQL dans le TEXTAREA ci-après, afin d'en faciliter vos travaux (copier/coller), et le fichier s'intitule jean_pierre.sql.

Listing 1. : jean_pierre.sql - Le programme permettant de créer les tableaux de chez Jean-Pierre.

Vous pouvez exécuter un fichier SQL existant grâce à MySQL, et en cliquant sur le bouton "choisissez un fichier" puis exécuter comme indiquée sur la capture :

Toutefois, nous mettons le fichier intitulé jean_pierre.sql, en cliquant ici.


Chargement_Fichier_Jean_Pierre_SQL.png

La redirection est très utile, puisqu'elle permet de modifier votre programme SQL dans l'éditeur de texte de votre choix, avant de l'exécuter.

Chaque tableau est créé par une instruction CREATE TABLE particulière. Vous remarquerez que nous avons créé chaque tableau de ce schéma avec les colonnes que nous avons mises en place dans le chapitre précédent. Le type de données de chaque colonne est spécifié directement après son nom. De plus, certaines colonnes possèdent d'autres particularités.

Signification des autres mots clés :

NOT NULL signifie que toutes les lignes du tableau doivent posséder une valeur associée à cet attribut. S'il n'est pas spécifié, le champ peut être vide (NULL).

AUTO_INCREMENT est une caractéristique particulière de MySQL que vous pouvez utiliser sur des colonnes contenant des nombres entiers. Ce mot clé signifie que si nous laissons ce champ vide lorsque nous insérons de nouvelles lignes dans le tableau, MySQL génère automatiquement une valeur d'identification unique. Cette valeur correspond à la valeur maximale existant dans la colonne, incrémentée de 1. Cette caractéristique ne peut être utilisée qu'une fois dans chaque tableau. Les colonnes qui spécifient AUTO_INCREMENT doivent être indées.

Le mot clé PRIMARY KEY, lorsqu'il est spécifié après un nom de colonne, indique que cette colonne est la clé primaire du tableau. Les entrées de cette colonne doivent être unique. MySQL indexe automatiquement cette colonne. Vous remarquerez que lorsque nous nous en sommes servi avec client_id dans le tableau les_clients, nous l'avons utilisé avec AUTO_INCREMENT. L'indexage automatique des clés primaires s'occupe des index nécessaires pour AUTO_INCREMENT.

PRIMARY KEY ne peut être spécifié après un nom de colonne que pour les colonnes uniques contenant des clés primaires. La clause PRIMARY KEY à la fin de l'instruction les_articles_commandes en est une autre forme. Nous avons utilisé cette structure puisque la clé primaire de ce tableau est composée d'une colonne.

UNSIGNED après un type entier signifie qu'il ne peut pas prendre une valeur négative.

Analyse des types de colonnes :

Prenons comme exemple le premier tableau :

    create table les_clients

    ( client_id int unsigned not null auto_increment primary key,

      nom char(30) not null,

      adresse char(40) not null,

      ville char(20) not null

    );

Lorsqu'un tableau est créé, il faut choisir le type de chaque colonne.

Pour le tableau les_clients, nous avons bien quatre colonnes, comme l'indiquait notre schéma. La première colonne, client_id, correspond à la clé primaire, que nous avons spécifiée directement. Nous avons choisi qu'elle contiendrait des nombres entiers (c'est-à-dire des données de type INT), et que ces identificateurs devront également être de type UNSIGNED. Nous nous sommes aussi servi de AUTO_INCREMENT, pour que MySQL puisse gérer ces informations à notre place : cela fait toujours une chose de moins à gérer.

Toutes les autres colonnes contiennent des chaînes de caractères, c'est pourquoi nous avons choisi le type CHAR. Ce type spécifie des champs de largeur fixe. Cette taille est spécifiée entre parenthèses, donc, par exemple, NOM peut contenir jusqu'à trente caractères.

Ce type de données alloue trente caractères pour chaque entrée, même si tous les caractères ne sont pas utilisés. MySQL complète les données avec des espaces pour les justifier sur trente caractères. Nous aurions pu choisir le type VARCHAR, qui permet d'allouer uniquement la mémoire nécessaire pour chaque champ (plus un octet). Une fois encore, il s'agit d'un petit compromis : VARCHAR utilise moins de place, mais CHAR est plus rapide.

Pour de vrais clients, possédant de vrais noms et de vraies adresses, ces colonnes sont beaucoup trop petites.

Vous remarquerez que toutes les colonnes sont déclarées comme étant NOT NULL. Il s'agit d'une petite optimisation qu'il ne faut pas hésiter à faire, lorsque c'est possible, puisqu'elle permet d'accélérer le traitement.

Nous reviendrons sur les questions d'optimisation dans les prochaines leçons.

La syntaxe de certaines instructions CREATE TABLE est légèrement différente. Examinons maintenant le tableau les_commandes :

     create table les_commandes

    ( commande_id int unsigned not null auto_increment primary key,

      client_id int unsigned not null,

      montant float(6,2),

      date date not null

    );

La colonne montant est spécifiée comme un nombre à virgule flottante de type FLOAT. Avec la plupart des types de données flottantes, il est possible de spécifier la largeur de l'affichage et le nombre de chiffres après la virgule. Dans ce cas, le montant des commandes sera en francs dans cet exemple, c'est pourquoi nous avons choisi une largeur assez importante (6), et deux chiffres décimaux, pour les centimes.

La colonne date possède le type de données DATE.

Dans ce tableau particulier, toutes les colonnes (sauf montant) sont marquées avec NOT NULL. En effet, lorsqu'une commande est entrée dans la base de données, nous devons l'ajouter dans le tableau des commandes, puis ajouter les éléments correspondant dans les_articles_commandés, avant de traiter la commande. Il est donc tout à fait possible que nous ne connaissions pas le montant de la commande lorsque celle-ci est effectuée, c'est pourquoi nous l'autorisons à être NULL.

Le tableau les_livres possède des caractéristiques similaires :

     create table les_livres

    ( isbn char(13) not null primary key,

      auteur char(30),

      titre char(60),

      prix float(4,2)

    );

Dans ce cas, nous avons quand même généré une clé primaire même si les numéros ISBN sont générés à un autre endroit. Les autres champs peuvent être NULL, puisqu'une librairie peut ne pas connaître le code ISBN d'un livre avant de connaître ses autres caractéristiques (titre, auteur ou prix. Le tableau les_articles_commandés montre comment créer une clé primaire, comme nous l'avons déjà évoqué.

     create table les_articles_commandes

    ( commande_id int unsigned not null primary key,

      isbn char(13) not null,

      quantitee tinyint unsigned

    );

Nous avons spécifié les quantités de livres avec TINYINT UNSIGNED, qui peut contenir des nombres entiers positifs compris entre 0 et 255.

Nous précisons que les clés primaires réparties sur plusieurs colonnes n'est pas recommandées.

Et enfin, pour terminer, voici le tableau les_commentaires_livres :

     create table les_commentaires_livres

    (

      isbn char(13) not null primary key,

      commentaires text

    );

Ce tableau utilise un nouveau type de données, TEXT, que nous n'avons pas encore mentionné. Il est intéressant pour les chaînes de caractères plus longues, comme un résumé ou un article. Il existe plusieurs variantes de ce type de données, que nous examinerons un peu plus loin dans cette leçon.

Pour comprendre plus finement la création des tableaux, intéressons-nous aux noms des colonnes et aux identificateurs en général, et aux types de données que nous pouvons choisir pour les colonnes. Tout d'abord, examinons la base de données que nous avons créée.

Examiner la base de données avec SHOW et DESCRIBE :

Tout d'abord, loggez-vous sous le moniteur SQL et sélectionnez la base de données books. Vous pouvez afficher les tableaux de cette base de données, en saisissant la commande suivante :

    show tables ;

MySQL affiche alors la liste de tous les tableaux de cette base de données comme ci-après :


Requete_SQL_des_Tableaux_avec_SHOW_TABLES.png

Vous pouvez également vous servir de SHOW DATABASES pour afficher une liste de la base de données, par exemple avec la commande suivante :

    show databases ;


Requete_SQL_Listes_Completes_des_Tables_avec_SHOW_DATABASES.png

Pour afficher plus d'informations sur un tableau particulier, par exemple le tableau books, servez-vous de la commande DESCRIBE :

    describe books ;

MySQL affiche alors les informations que vous avez fournies lors de la création de la base de données suivante :


DESCRIBE_Books_Affichent_les_Informations_sur_les_Tables.png

Ces commandes sont très utiles pour vous rappeler le type de données d'une colonne, ou pour parcourir une base de données que vous n'avez pas créée vous-même.

Nous terminons ainsi ce troisième chapitre (3ème partie de cette leçon) et nous verrons dans le prochain, l'usage des Identificateurs MySQL, les Types de Données des Colonnes ainsi que les Types Numériques



  Cliquez ici pour la leçon suivante ou dans le sommaire prévu à cet effet.   Haut de page
  Page précédente   Page suivante







Nombre de pages vues, à partir de cette date : le 23 MAI 2019

compteur de visite

    




Envoyez un courrier électronique à Administrateur Web Société pour toute question ou remarque concernant ce site Web. 

Version du site : 10. 5. 14 - Site optimisation 1280 x 1024 pixels - Faculté de Nanterre - Dernière modification : 19 MAI 2019.   

Ce site Web a été Créé le, 14 Mars 1999 et ayant Rénové, en MAI 2019.