1. Trang chủ
  2. » Công Nghệ Thông Tin

Pratique de MySQL et PHP- P46 potx

5 231 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 151,68 KB

Nội dung

4.3 Création de la base Films avec MySQL 203 mot_de_passe VARCHAR (32) NOT NULL, annee_naissance INTEGER, PRIMARY KEY ( e ma il ) ) ; CREATE TABLE Pays (code VARCHAR(4) NOT NULL, nom VARCHAR ( 30 ) DEFAULT ’ Inc onnu ’ NOT NULL, l a n g u e VARCHAR ( 3 0 ) NOT NULL , PRIMARY KEY (code)) ; CREATE TABLE Artiste (id INTEGER NOT NULL, nom VARCHAR ( 3 0 ) NOT NULL , prenom VARCHAR (30) NOT NULL, annee_naissance INTEGER, PRIMARY KEY ( i d ) , UNIQUE ( nom , prenom ) ) ; CREATE TABLE F i lm ( i d INTEGER NOT NULL, titre VARCHAR (50) NOT NULL, annee INTEGER NOT NULL, id_realisateur INTEGER, genre VARCHAR(30) NOT NULL, resume TEXT, /∗ LONG p o u r ORACLE ∗ / code_pays VARCHAR (4) , PRIMARY KEY ( i d ) , FOREIGN KEY (id_realisateur) REFERENCES Artiste , FOREIGN KEY ( co d e_ pays ) REFERENCES Pays ) ; CREATE TABLE Notation (id_film INTEGER NOT NULL, e m a i l VARCHAR ( 4 0 ) NOT NULL , n o t e IN TEG ER NOT NULL , PRIMARY KEY (id_film , email) , FOREIGN KEY (id_film) REFERENCES Film , FOREIGN KEY ( em ai l ) REFERENCES I n t e r n a ut e ) ; CREATE TABLE Role (id_film INTEGER NOT NULL, id_acteur INTEGER NOT NULL, n o m _ r o l e VARCHAR( 6 0 ) , PRIMARY KEY (id_film , id_acteur) , FOREIGN KEY (id_film) REFERENCES Film , FOREIGN KEY (id_acteur) REFERENCES Artiste) ; Ces tables sont créées, à l’aide du client mysql,aveclacommande: % mysql < Films.sql en supposant, comme nous l’avons fait précédemment, que la base a été créée au préalable avec la commande CREATE DATABASE Films, et que l’utilisateur a son compte d’accès défini dans un fichier de configuration .my.cnf . On peut alors rappeler les options de création avec la commande DESCRIBE. 204 Chapitre 4. Création d’une base MySQL mysql> DESC Artiste; + + + + + + + | Field | Type | Null | Key | Default | Extra | + + + + + + + | id | int(11) | | PRI | 0 | | | nom | varchar(30) | | MUL | | | | prenom | varchar(30) | | | | | | annee_naissance | int(11) | YES | | NULL | | + + + + + + + 4.3.3 Modification du schéma La création d’un schéma n’est qu’une première étape dans la vie d’une base de données. On est toujours amené par la suite à créer de nouvelles tables, à ajouter des attributs ou à en modifier la définition. La forme générale de la commande permettant de modifier une table est : ALTER TABLE nomTable ACTION description où ACTION peut être principalement ADD, MODIFY, DROP ou RENAME,etdescrip- tion est la commande de modification associée à ACTION. La modification d’une table peut poser des problèmes si elle est incompatible avec le contenu existant. Par exemple, passer un attribut à NOT NULL implique que cet attribut a déjà des valeurs pour toutes les lignes de la table. La commande DROP TABLE nomTable supprime une table. Elle est évidemment très dangereuse une fois la base créée, avec des données. Il n’est plus possible de récupérer une table détruite avec DROP TABLE. Modification des attributs Voici quelques exemples d’ajout et de modification d’attributs. La syntaxe complète de la commande ALTER TABLE est donnée dans l’annexe B. On peut ajouter un attribut region àlatableInternaute avec la commande : ALTER TABLE Internaute ADD region VARCHAR(10) ; S’il existe déjà des données dans la table, la valeur sera à NULL ou à la valeur par défaut. La taille de region étant certainement insuffisante, on peut l’agrandir avec MODIFY, et la déclarer NOT NULL par la même occasion : ALTER TABLE Internaute MODIFY region VARCHAR (30) NOT NULL ; Il est également possible de diminuer la taille d’une colonne, avec le risque d’une perte d’information pour les données existantes. On peut même changer son type, pour passer par exemple de VARCHAR à INTEGER, avec un résultat non défini. L’option ALTER TABLE permet d’ajouter une valeur par défaut. ALTER TABLE Internaute ALTER region SET DEFAULT ’PACA’ ; Enfin on peut détruire un attribut avec DROP. ALTER TABLE Internaute DROP region ; 4.3 Création de la base Films avec MySQL 205 Voici une session de l’utilitaire mysql illustrant les commandes de mise à jour du schéma. phpMyAdmin propose de son côté des formulaires HTML très pratiques pour effectuer les mêmes modifications. mysql> ALTER TABLE Internaute ADD region VARCHAR(10); Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC Internaute; + + + + + + + | Field | Type | Null | Key | Default | Extra | + + + + + + + | email | varchar(40) | | PRI | | | | nom | varchar(30) | | | | | | prenom | varchar(30) | | | | | | mot_de_passe | varchar(32) | | | | | | annee_naissance | int(11) | YES | | NULL | | | region | varchar(10) | YES | | NULL | | + + + + + + + mysql> ALTER TABLE Internaute MODIFY region VARCHAR(30) NOT NULL; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC Internaute; + + + + + + + | Field | Type | Null | Key | Default | Extra | + + + + + + + | email | varchar(40) | | PRI | | | | nom | varchar(30) | | | | | | prenom | varchar(30) | | | | | | mot_de_passe | varchar(32) | | | | | | annee_naissance | int(11) | YES | | NULL | | | region | varchar(30) | YES | | NULL | | + + + + + + + mysql> ALTER TABLE Internaute ALTER region SET DEFAULT ’PACA’; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC Internaute; + + + + + + + | Field | Type | Null | Key | Default | Extra | + + + + + + + | email | varchar(40) | | PRI | | | | nom | varchar(30) | | | | | | prenom | varchar(30) | | | | | | mot_de_passe | varchar(32) | | | | | | annee_naissance | int(11) | YES | | NULL | | | region | varchar(30) | YES | | PACA | | + + + + + + + 206 Chapitre 4. Création d’une base MySQL mysql> ALTER TABLE Internaute DROP region; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 Création d’index Pour compléter le schéma d’une table, on peut définir des index. Un index offre un chemin d’accès aux lignes d’une table considérablement plus rapide que le balayage de cette table – du moins quand le nombre de lignes est très élevé. MySQL crée systématiquement un index sur la clé primaire de chaque table. Il y a deux raisons à cela ; 1. l’index permet de vérifier rapidement, au moment d’une insertion, que la clé n’existe pas déjà ; 2. beaucoup de requêtes SQL, notamment celles qui impliquent plusieurs tables (jointures), se basent sur les clés des tables pour reconstruire les liens. L’index peut alors être utilisé pour améliorer les temps de réponse. Un index est également créé automatiquement pour chaque clause UNIQUE uti- lisée dans la création de la table. On peut de plus créer d’autres index, sur un ou plusieurs attributs, si l’application utilise des critères de recherche autres que les clés primaire ou secondaires. La commande MySQL pour créer un index est la suivante : CREATE [UNIQUE] INDEX nomIndex ON nomTable (attribut1 [, ]) La clause UNIQUE indique qu’on ne peut pas trouver deux fois la même clé. La commande ci-dessous crée un index de nom idxNom sur les attributs nom et prenom de la table Artiste. Cet index a donc une fonction équivalente à la clause UNIQUE déjà utilisée dans la création de la table. CREATE UNIQUE INDEX idxNom ON Artiste (nom, prenom); On peut créer un index, cette fois non unique, sur l’attribut genre de la table Film. CREATE INDEX idxGenre ON Film (genre); Cet index permettra d’exécuter très rapidement des requêtes SQL ayant comme critère de recherche le genre d’un film. SELECT * FROM Film WHERE genre = ’Western’ Cela dit il ne faut pas créer des index à tort et à travers, car ils ont un impact négatif sur les commandes d’insertion et de destruction. À chaque fois, il faut en effet mettre à jour tous les index portant sur la table, ce qui représente un coût certain. Organisation du développement 5 Ce chapitre est une introduction aux choix techniques à effectuer au moment de la mise en développement d’un site basé sur PHP et MySQL. Avant de s’embarquer tête baissée dans la réalisation de scripts PHP, il est en effet important de se poser un certain nombre de questions sur la pertinence des décisions (ou des absences de décision ) prises à ce stade initial de développement, et sur leurs conséquences à court, moyen et long terme. Il s’agit véritablement d’envisager un changement d’échelle pour passer de la production de quelques scripts de petite taille comme ceux étudiés dans les chapitres précédents, à un code constitué de milliers de lignes utilisé quotidiennement par de nombreuses personnes et soumis à des évolutions produites par une équipe de développeurs. Voici un échantillon de ces questions : 1. comment organiser le code pour suivre une démarche logique de développe- ment et de maintenance, et déterminer sans ambiguïté à quel endroit on doit placer tel ou tel fragment de l’application ; 2. quels outils utiliser pour tout ce qui relève du « génie logiciel » : édition des fichiers, sauvegardes, versions, livraisons, tests, etc. 3. comment assurer la portabilité à long terme et le respect des normes ? 4. quels sont les impératifs de sécurité, quel est le degré de robustesse et de confidentialité attendu ? L’importance de ces questions est à relativiser en fonction du développement visé. Si vous êtes seul à produire et maintenir un site web dynamique basé sur quelques tables, quelques formulaires et un nombre limité de pages, le respect de quelques règles générales et l’utilisation d’outils légers suffira. Pour des applications professionnelles impliquant des équipes de développeurs pour plusieurs centaines de jours-homme planifiés, le recours à une méthodologie extrêmement rigoureuse s’impose. Dans ce dernier cas, il est d”ailleurs indispensable de s’appuyer sur un . index, cette fois non unique, sur l’attribut genre de la table Film. CREATE INDEX idxGenre ON Film (genre); Cet index permettra d’exécuter très rapidement des requêtes SQL ayant comme critère de. faut pas créer des index à tort et à travers, car ils ont un impact négatif sur les commandes d’insertion et de destruction. À chaque fois, il faut en effet mettre à jour tous les index portant. Création de la base Films avec MySQL 205 Voici une session de l’utilitaire mysql illustrant les commandes de mise à jour du schéma. phpMyAdmin propose de son côté des formulaires HTML très pratiques pour

Ngày đăng: 06/07/2014, 00:20