II. Création de la base de données de test▲
Avant toute chose, créons la base de données qui servira dans le cadre de ce tutoriel.
J'ai pris le parti d'utiliser l'interface de gestion phpMyAdmin, qui permet de visualiser très facilement le résultat des actions que nous entreprendrons. Pour vous simplifier les choses, vous pouvez coller directement les commandes SQL dans l'onglet SQL de phpMyAdmin ; ce n'est toutefois pas une obligation et vous pouvez aussi exécuter à la main les différentes actions par le biais de l'interface.
II-A. Création de la base▲
Commençons donc par créer notre base de données. Dans l'onglet SQL, recopiez ou collez la commande suivante :
CREATE DATABASE location CHARACTER SET 'utf8';Cliquez sur Exécuter et vérifiez que la nouvelle base de données est bien créée :
Le message de réussite sur fond vert et l'ajout de l'entrée location dans la colonne de gauche attestent la réussite de l'opération.
II-B. Création d'un utilisateur▲
Il n'est jamais conseillé de travailler, dans quel système que ce soit, sauf lorsque c'est indispensable, avec des privilèges d'administrateur. C'est le cas avec MySQL et la première chose que nous allons faire est de créer un utilisateur qui aura spécifiquement accès à notre base de données, et à aucune autre.
Collez la commande suivante :
CREATE USER 'mysqldvp'@'%' IDENTIFIED BY 'passmysqldvp';GRANT ALL PRIVILEGES ON location.* TO 'mysqldvp'@'%' IDENTIFIED BY 'passmysqldvp' REQUIRE NONE WITH GRANT OPTION;Par cette commande, l'utilisateur mysqldvp a été créé et il a accès à la base de données location et à ses tables moyennant le mot de passe passmysqldvp. Vous pouvez bien sûr définir un autre nom d'utilisateur et un autre mot de passe.
Si votre serveur MySQL tourne sur votre machine, vous pouvez remplacer 'mysqldvp'@'%' par 'mysqldvp'@'localhost'.
II-C. Création des tables▲
Dans la liste des bases de données, à gauche, cliquez sur location ou collez la commande suivante dans l'onglet SQL :
USE location;Dans l'onglet SQL de location, nous allons créer des tables dans la base de données.
Nous avons besoin de trois tables :
- la liste des voitures ;
- le répertoire des clients ;
- la liste des locations.
La liste des voitures contiendra les colonnes suivantes :
|
Nom de colonne |
Type |
Commentaires |
|
Plaque |
VARCHAR(12) |
Plaque d'immatriculation |
|
Marque |
VARCHAR(20) |
Marque du véhicule |
|
Modele |
VARCHAR(20) |
Modèle |
|
Cylindree |
SMALLINT |
La cylindrée en cm3 |
|
Transmission |
CHAR(1) |
M pour boîte manuelle, A pour automatique |
|
Prix |
FLOAT |
Coût d'une journée de location |
Le répertoire client contiendra les colonnes suivantes :
|
Nom de colonne |
Type |
Commentaires |
|
IdClient |
SMALLINT |
Numéro client unique |
|
Nom |
VARCHAR(40) |
Le nom du client |
|
Prenom |
VARCHAR(40) |
Son prénom |
|
CodePostal |
VARCHAR(10) |
Code postal |
|
Localite |
VARCHAR(50) |
Localité de résidence |
|
Rue |
VARCHAR(80) |
Adresse |
|
Numero |
VARCHAR(10) |
Numéro de maison |
|
Telephone |
VARCHAR(40) |
Numéro de téléphone |
|
|
VARCHAR(50) |
Adresse mail |
Et voici les colonnes de la liste des locations :
|
Nom de colonne |
Type |
Commentaires |
|
IdLocation |
SMALLINT |
Numéro d'ordre unique |
|
IdClient |
SMALLINT |
Numéro du client |
|
Plaque |
VARCHAR(12) |
Plaque de la voiture louée |
|
DateDebut |
DATETIME |
Date et heure de début |
|
DateFin |
DATETIME |
Date et heure de fin prévue |
|
DateRentree |
DATETIME |
Date de rentrée effective du véhicule (pour surtaxe) |
|
Assurance |
BOOL |
Indique si une assurance complémentaire a été prise |
La plaque d'immatriculation et le numéro client étant uniques, ils sont désignés comme clés primaires dans leurs tables respectives et sont utilisés comme clés étrangères dans la table Locations.
Collez la commande suivante pour créer la table Voitures :
CREATE TABLE Voitures (
Plaque VARCHAR(12) NOT NULL,
Marque VARCHAR(20) NOT NULL,
Modele VARCHAR(20) NOT NULL,
Cylindree SMALLINT NOT NULL,
Transmission CHAR(1) NOT NULL,
Prix FLOAT NOT NULL,
PRIMARY KEY (Plaque)
);Puis celle-ci pour créer le répertoire des clients (table Clients) :
CREATE TABLE Clients (
IdClient SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
Nom VARCHAR(40) NOT NULL,
Prenom VARCHAR(40) NOT NULL,
CodePostal VARCHAR(10),
Localite VARCHAR(50),
Rue VARCHAR(80),
Numero VARCHAR(10),
Telephone VARCHAR(40) NOT NULL,
Email VARCHAR(50),
PRIMARY KEY (IdClient)
);Et enfin pour la table Locations :
CREATE TABLE Locations (
IdLocation SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
IdClient SMALLINT UNSIGNED NOT NULL,
Plaque VARCHAR(12) NOT NULL,
DateDebut DATETIME NOT NULL,
DateFin DATETIME NOT NULL,
DateRentree DATETIME,
Assurance BOOL NOT NULL,
PRIMARY KEY (IdLocation)
);Établissons une relation entre la table Locations et les deux autres tables, par le biais des clés étrangères IdClient (table Clients) et Plaque (table Voitures) :
ALTER TABLE Locations ADD (
CONSTRAINT FK_Locations_Voitures
FOREIGN KEY (Plaque)
REFERENCES Voitures(Plaque));
ALTER TABLE Locations ADD (
CONSTRAINT FK_Locations_Clients
FOREIGN KEY (IdClient)
REFERENCES Clients(IdClient));Dans phpMyAdmin, allez dans le sous-menu Concepteur du menu Plus de notre base de données location, pour vérifier que les relations sont correctes entre les trois tables :
II-D. Création des données▲
Notre base de données est prête à être alimentée. Pour gagner du temps, nous allons y créer par script quelques voitures et quelques clients.
D'abord une dizaine de voitures :
INSERT INTO Voitures VALUES ('AB-612-BV', 'BMW', '135i Coupé', 3000, 'A', '30.00');
INSERT INTO Voitures VALUES ('AC-811-CK', 'Citroën', 'C3', 1600, 'M', '20.00');
INSERT INTO Voitures VALUES ('BN-101-AR', 'Citroën', 'C3', 1600, 'M', '20.00');
INSERT INTO Voitures VALUES ('AB-555-RB', 'Citroën', 'C3', 1600, 'M', '20.00');
INSERT INTO Voitures VALUES ('BU-425-GH', 'Citroën', 'C4 Coupe 2.0VTS', 2000, 'A', '27.50');
INSERT INTO Voitures VALUES ('AM-398-ER', 'Daihatsu', 'Sirion', 1300, 'M', '17.25');
INSERT INTO Voitures VALUES ('CB-135-RK', 'Fiat', '500 1.2 8V Lounge SS', 1200, 'M', '17.00');
INSERT INTO Voitures VALUES ('AM-400-SU', 'Ford', 'Focus ST', 2000, 'M', '23.00');
INSERT INTO Voitures VALUES ('AM-436-FD', 'Ford', 'Taurus SHO', 3500, 'A', '36.25');
INSERT INTO Voitures VALUES ('CU-004-MP', 'Volkswagen', 'New Beetle', 2000, 'M', '27.50');Puis quelques clients :
INSERT INTO Clients VALUES (1, 'Van Steenbrugge', 'Stefaan', 'B2020', 'Antwerpen (Belgique)', 'De Bosschaertstraat', '30', '3222012345', '');
INSERT INTO Clients VALUES (2, 'Leclercq', 'Jean-Jacques', '68200', 'Mulhouse', 'Avenue Aristide Briand', '37', '33389337878', 'jj.leclercq@monfai.fr');
INSERT INTO Clients VALUES (3, 'Lamoureux', 'Gabriel', '69008', 'Lyon', 'Rue Professeur Beauvisage', '163', '33472985404', 'gaby.lamoureux@monfai.fr');
INSERT INTO Clients VALUES (4, 'Loumrhari', 'Mohamed', '55270', 'Varennes-en-Argonne', 'Rue Louis XVI', '12', '33329807101', '');
INSERT INTO Clients VALUES (5, 'Mispelter', 'Yves', 'CH1002', 'Lausanne (Suisse)', 'Place de la Palud', '2', '41213152555', 'yves.mispelter@myprovider.ch');
INSERT INTO Clients VALUES (6, 'Zidane', 'Yasmina', '13014', 'Marseille', 'Rue Paul Coxe', '72', '33491095656', 'yasmina.z@monfai.fr');
INSERT INTO Clients VALUES (7, 'Patulacci', 'Stéphane', '20304', 'Ajaccio', 'Avenue Antoine Serafini', '', '33495515253', '');
INSERT INTO Clients VALUES (8, 'Matombo Nguza Aniomba', 'Honorine', '13008', 'Marseille', 'Rue du Commandant Rolland', '125', '33491553778', '');
INSERT INTO Clients VALUES (9, 'Filucco', 'Martial', '59000', 'Lille', '', '', '33320495000', '');Nous avons enfin un peu de matière pour commencer notre tutoriel.





