Gestion d'une base de données MySQL

Avec les composants natifs de Lazarus


précédentsommairesuivant

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 :

 
Sélectionnez
CREATE DATABASE location CHARACTER SET 'utf8';
Image non disponible

Cliquez sur Exécuter et vérifiez que la nouvelle base de données est bien créée :

Image non disponible

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 :

 
Sélectionnez
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 :

 
Sélectionnez
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

Email

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 :

 
Sélectionnez
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) :

 
Sélectionnez
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 :

 
Sélectionnez
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) :

 
Sélectionnez
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 :

Image non disponible

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 :

 
Sélectionnez
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 :

 
Sélectionnez
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.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Alcatîz. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.