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

Pratique de MySQL et PHP- P46 potx

5 233 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

La forme générale de la commande permettant de modifier une table est : ALTER TABLE nomTable ACTION description ó ACTION peut être principalement ADD, MODIFY, DROP ou RENAME, et descrip-

Trang 1

m o t _ d e _ p a s s e VARCHAR ( 3 2 ) NOT NULL,

a n n e e _ n a i s s a n c e INTEGER , PRIMARY KEY ( e m a i l ) ) ; CREATE TABLE P a y s ( c o d e VARCHAR( 4 ) NOT NULL,

nom VARCHAR ( 3 0 ) DEFAULT ’ I n co n n u ’ NOT NULL,

l a n g u e VARCHAR ( 3 0 ) NOT NULL, PRIMARY KEY ( c o d e ) ) ;

CREATE TABLE A r t i s t e ( i d INTEGER NOT NULL,

nom VARCHAR ( 3 0 ) NOT NULL, prenom VARCHAR ( 3 0 ) NOT NULL,

a n n e e _ n a i s s a n c e INTEGER , PRIMARY KEY ( i d ) ,

UNIQUE ( nom , prenom ) ) ; CREATE TABLE F i l m ( i d INTEGER NOT NULL,

t i t r e VARCHAR ( 5 0 ) NOT NULL, annee INTEGER NOT NULL,

i d _ r e a l i s a t e u r INTEGER ,

g e n r e VARCHAR( 3 0 ) NOT NULL,

r e s u m e TEXT , / ∗ LONG p o u r ORACLE ∗ /

c o d e _ p a y s VARCHAR ( 4 ) , PRIMARY KEY ( i d ) ,

FOREIGN KEY ( i d _ r e a l i s a t e u r ) REFERENCES A r t i s t e , FOREIGN KEY ( c o d e _ p a y s ) REFERENCES P a y s ) ;

CREATE TABLE N o t a t i o n ( i d _ f i l m INTEGER NOT NULL,

e m a i l VARCHAR ( 4 0 ) NOT NULL,

n o t e INTEGER NOT NULL, PRIMARY KEY ( i d _ f i l m , e m a i l ) , FOREIGN KEY ( i d _ f i l m ) REFERENCES Film , FOREIGN KEY ( e m a i l ) REFERENCES I n t e r n a u t e ) ; CREATE TABLE R o l e ( i d _ f i l m INTEGER NOT NULL,

i d _ a c t e u r INTEGER NOT NULL,

n o m _ r o l e VARCHAR( 6 0 ) , PRIMARY KEY ( i d _ f i l m , i d _ a c t e u r ) , FOREIGN KEY ( i d _ f i l m ) REFERENCES Film , FOREIGN KEY ( i d _ a c t e u r ) REFERENCES A r t i s t e ) ;

Ces tables sont créées, à l’aide du client mysql, avec la commande :

% 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

Trang 2

204 Chapitre 4 Création d’une base MySQL

mysql> DESC Artiste;

+ -+ -+ -+ -+ -+ -+

| Field | Type | Null | Key | Default | Extra |

+ -+ -+ -+ -+ -+ -+

| 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

ó ACTION peut être principalement ADD, MODIFY, DROP ou RENAME, et descrip-tion est la commande de modificadescrip-tion associée à ACTION La modificadescrip-tion 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 à la table Internaute avec la commande :

ALTER TABLE I n t e r n a u t e ADD r e g i o n VARCHAR( 1 0 ) ;

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 I n t e r n a u t e MODIFY r e g i o n VARCHAR( 3 0 ) 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 I n t e r n a u t e ALTER r e g i o n SET DEFAULT ’PACA ’ ;

Enfin on peut détruire un attribut avec DROP

ALTER TABLE I n t e r n a u t e DROP r e g i o n ;

Trang 3

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 |

+ -+ -+ -+ -+ -+ -+

| 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 |

+ -+ -+ -+ -+ -+ -+

| 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 |

+ -+ -+ -+ -+ -+ -+

| annee_naissance | int(11) | YES | | NULL | |

| region | varchar(30) | YES | | PACA | |

+ -+ -+ -+ -+ -+ -+

Trang 4

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 cỏt certain

Trang 5

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

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