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.