• Aucun résultat trouvé

Le cours pour les 1er année SeRéCom (.pdf)

N/A
N/A
Protected

Academic year: 2022

Partager "Le cours pour les 1er année SeRéCom (.pdf)"

Copied!
9
0
0

Texte intégral

(1)

Introduction

Les bases de données sont une notion très vaste et surtout très importante pour tout développeur. L'utilisation d'une base de donnée augmente considérablement les possibilités d'un programme. Il est donc très intéressant de mélanger la base de données et la programmation.

Chapitre 1 - Bases

1.1. Qu'es qu'une base de données ? 1.2. Comment ça marche ?

1.3. Les bases relationnelles

Chapitre 2 - Bases du Modèle MERISE 2.1. Présentation

2.2. Le Dictionnaire de données

2.3. Le Modèle Conceptuel de Données (MCD) Chapitre 3 - Le langage SQL

3.1. Présentation

3.2. Langage de Manipulation de Données (LMD) 3.3. Langage de Définition de Données (LDD) Chapitre 4 - Le langage PL/SQL

4.1. Présentation 4.2. Les Curseurs

4.3. Les procédures stockées 4.4. Les Triggers

Chapitre 5 - Les différents SGBD(R) 5.1. Microsoft Access

5.2. Microsoft SQL Server 5.3. MySQL

5.4. Oracle

5.5. Autres SGBD Chapitre 1 - Bases

1.1. Qu'est qu'une base de données ?

Une base de données est un ensemble de données structurées sous forme d'entités composées de propriétés. Elle permet de classifier les volumes de données de façon à pouvoir les exploiter.

1.2 Comment ça marche ?

Les structures de données sont stockées dans un fichier qu'on appelle la base de donnée. Ce fichier est ensuite accessible soit à travers l'interface d'un système de gestion de bases de données (SGBD), soit à partir d'un programme spécifique qui peut être développé par n'importe qui.

Pour consulter la base, on extrait des données grâce à des requêtes la plupart de temps formulées en langage SQL (Structured Query Language).

1.3. Les bases relationnelles

Une base de données relationnelle est une base dans laquelle on gère les liaisons logiques entre plusieurs structures de données. Cela permet de simplifier le développement et

(2)

supprimer les informations redondantes du système d'informations notamment pour que ce dernier soit facilement mis à jour.

Dans ce cours de bases de données, nous allons justement utiliser une base de données relationnelle. Il s'agit d'un magasin de vente de matériel informatique pour lequel nous allons gérer les produits, les clients ainsi que les fournisseurs.

Dans cet exemple on peut déjà constater que dans les informations d'un produit, on doit indiquer de quel fournisseur provient ce dernier, nous allons donc établir une relation entre les produits et les fournisseurs, d'où le concept de la base relationnelle.

Chapitre 2 - Le modèle MERISE partie 1

2.1. Présentation

Pour concevoir et représenter une base de données, on utilise MERISE qui est une méthodologie utilisée dans beaucoup d'outils de développement informatique. MERISE permet de concevoir un système d'informations d'une façon standardisée et méthodique.

La meilleure façon de comprendre le fonctionnement d'un système d'information utilisant MERISE est de s'aider de cet exemple :

Un directeur d'une entreprise de vente de matériel informatique voudrait gérer ses clients, ses fournisseurs et les produits qu'il vend grâce à une base de données simple.

Dans ce cas pratique :

- l'entreprise de vente de matériel informatique est appelée le domaine

- les clients, les fournisseurs et les produits sont des entités de la base de données

- les informations sur les clients (nom, prénom...), les fournisseurs (raison sociale...), les produits (référence, libellé du produit, prix) sont les propriétés de ces tables.

2.2. Le dictionnaire de données

Pour concevoir sa base de données, il faut d'abord définir les données que l'on veut stocker dans cette dernière.

Dans notre cas pratique nous utiliserons ces données qui sont représentées ci-dessous dans ce qu'on appelle un dictionnaire de données :

Nom de la propriété Type de donnée Longueur de donnée N° client

nom client prenom client adresse client code postal client ville client téléphone client N° fournisseur raison sociale adresse fournisseur code postal fournisseur ville fournisseur téléphone fournisseur Référence produit libellé produit prix produit

N AN AN AN N AN AN N AN AN N AN

N N AN

N

4 32 32 50 8 32 10 4 32 50 8 32 10 4 50

5

N = Numérique AN = Alpha-Numérique

(3)

Le dictionnaire de données est une liste complète des propriétés utilisées dans une base de données. Chaque propriété représente une information qu'on souhaite stocker et comporte un type. Mais une propriété n'est pas l'information elle-même, c'est comme une case dans laquelle on mettra toujours la même information mais pour plusieurs enregistrements, appelés aussi occurrences.

2.3. Le Modèle Conceptuel de Données (MCD)

Le MCD est la base de MERISE. Il représente les données d'un système d'informations de façon claire et précise les dépendances fonctionnelles des informations.

Pour cela, plusieurs éléments sont utiles :

- l'entité : objets physiques ou abstraits ayant des caractéristiques similaires - la relations : association liant plusieurs entités entre elles

- la propriété : chaque entité est composée de propriétés et chaque propriété est caractérisée par un type de données, le dictionnaire de données (vu en 2.2) est composée de l'ensemble des propriétés de toutes les entités d'une base de données.

- l’identifiant : l'identifiant ou clef unique (toujours souligné dans les représentations schématiques) est une propriété d'une entité permettant de distinguer les différentes données.

- la cardinalité minimum : nombre minimum de fois qu'une entité est concernée par une association.

- la cardinalité maximum : nombre maximum de fois qu'une entité est concernée par une association.

Reprenons notre exemple :

Pour notre entreprise de vente de matériel informatique, nous allons utiliser les entités suivantes :

CLIENT, FOURNISSEUR, PRODUIT

Ces entités sont composées des propriétés citées dans le dictionnaire de données et se représentent de la manière suivante :

(4)

2.4. Le Modèle Logique de Données (MLD)

Le MLD permet de voir de façon claire l'organisation des données, cette façon de représenter la base de donnée est assez pratique pour les développeurs. Le MLD est obtenu à partir d'une conversion du MCD selon les trois règles relationnelles suivantes :

- type d'entité (=relation) : un schéma de relation contenant les attributs du type de l'entité et qui a comme clef celle du type de l'entité.

- types d'associations liées à un type d'entité avec une cardinalité 1,1 : représentés dans le même schéma de relation correspondant à l'entité qui participe avec la cardinalité 1,1 par ajout de la clef de l'entité intervenant dans l'association ainsi que les attributs éventuels de l'association.

- type d'association : un schéma de relation qui a pour attributs ceux de l'association (si elle en a) et pour clef les clefs des entités participantes.

Voici la conversion du MCD (présenté en 2.3) en MLD :

CLIENT(num_clt, nom_clt, prenom_clt, adresse_clt, cp_clt, ville_clt, tel_clt) PRODUIT(ref_pdt, lib_pdt, prix_pdt, #num_fourn)

FOURNISSEUR(num_fourn, rs_fourn, adresse_fourn, ville_fourn, tel_fourn) Acheter(num_clt, ref_pdt)

Pour plus d'information sur la méthodologie MERISE, je vous conseille ce site personnel de Mathieu Vidal que j'ai trouvé par hasard et qui me parait assez complet:

Chapitre 3 - Le langage SQL

3.1. Présentation

SQL (Stuctured Query Language) est un langage permettant d'interroger une base de données pour extraire une partie de ses données. Il permet ainsi d'exploiter ces données de façon intelligente. Imaginez que vous cherchez une information dans une base de donnée avec de millions d'enregistrements rangés dans des centaines de tables (entités). Si vous tentez de trouver cette information en consultant le contenu de chaque table, vous passerez des mois et des mois à trouver ce que vous cherchez. Grâce à SQL, vous pouvez afficher seulement les informations qui vous intéressent en envoyant une requête SQL comportant les critères que vous voulez.

Si on prend l'exemple des chapitres précédents (l'entreprise de vente de matériel informatique) et on cherche un client dont on ne se rappelle plus le nom mais dont on connaît la ville d'habitation qui est Paris, il sera certainement plus facile de le retrouver en envoyant sur notre système de gestion de bases de données la requête suivante :

SELECT nom client FROM CLIENT

WHERE ville client='Paris';

Cette requête retournera les champs "nom client" de tous les enregistrements de la table CLIENT dont la propriété "ville client" a pour valeur "Paris".

Le langage SQL est décomposé en trois différents types d'instructions :

(5)

- Langage de Manipulation de Données (LMD) : permet d'extraire des données d'une base de données

- Langage de Définition de Données (LDD) : permet de créer la base de données sur le SGBD à partir du MCD ou MLD

- Langage de Contrôle des Données (LCD) : permet de gérer les droits et les utilisateurs des données dans un SGBD serveur.

3.2. Langage de Manipulation de Données (LMD)

Ce tableau présente la syntaxe LMD de base avec des commentaires et exemples :

Instruction Commentaire Exemple

SELECT <champ1, champ2...>

FROM <Table>

Permet de visualiser les contenus d’une ou plusieurs tables. On peut utiliser le caractère * à la place des champs pour sélectionner tous les champs.

Affiche le nom et le prénom de tous les clients:

SELECT nom client, prenom client FROM CLIENT;

WHERE Condition dans une

sélection.

Affiche le nom et le prénom des clients habitant à Paris:

SELECT nom client, prenom client FROM CLIENT

WHERE ville client='Paris';

AND, OR

Condition dans une selection. On utilise WHERE pour la première condition et AND ou OR à partir de la deuxième.

Affiche le nom et le prénom des clients habitant à Paris ou à Strasbourg:

SELECT nom client, prenom client FROM CLIENT

WHERE ville client='Paris' OR ville client='Strasbourg';

NOT

IS NOT NULL IS NULL

Opérateurs de condition.

NOT pour différent, IS NOT NULL pour non nul et IS NULL pour nul.

Affiche le nom et le prénom des clients n'habitant pas à Paris:

SELECT nom client, prenom client FROM CLIENT

WHERE ville client NOT 'Paris';

Affiche la référence des produits dont le prix n'est pas spécifié : SELECT Référence produit FROM PRODUIT

WHERE prix IS NULL;

(6)

JOINCTURE:

Table1.champ=Table2.champ

Permet de mettre en relation deux tables en montrant qu'un champ de la première équivaut à un champ de la seconde.

Affiche la raison sociale du fournisseur qui fournit le produit

"iMac":

SELECT raison sociale FROM FOURNISSEUR, PRODUIT WHERE FOURNISSEUR.n°

fournisseur=PRODUIT.n°

fournisseur

AND libellé produit='iMac';

GROUP BY <champ1, champ2...> Groupe selon les champs indiqués.

Affiche le nom et le prénom de tous les clients groupé par ville:

SELECT nom client, prenom client FROM CLIENT

GROUP BY ville client;

ORDER BY <champ1, champ2...>

{DESC}

Tri selon les champs spécifiés par ordre croissant ou par ordre décroissant en ajoutant l'option DESC.

Affiche le nom et le prénom de tous les clients triés par nom de A à Z:

SELECT nom client, prenom client FROM CLIENT

ORDER BY nom client;

INSERT INTO champ1,champ2

VALUES ("donnée

caractère",donnée numérique, {NULL})

Permet d'insérer des valeurs dans une Table.

Insère la ligne 8,"iMac",1299 dans la Table PRODUITS:

INSERT INTO PRODUITS num_pdt,lib_pdt,prix_pdt

VALUES(8,'iMac',1299);

UPDATE <table>

SET <champ1>='<valeur>',

<champ2>...;

Permet de mettre à jour une table.

Modifie le prix de

l'enregistrement n°8 de la table PRODUITS à 1399:

UPDATE PRODUITS SET prix=1399;

3.3. Langage de Définition de Données (LDD)

Ce tableau présente la syntaxe LDD de base avec des commentaires et exemples :

Instruction Commentaire Exemple

CREATE TABLE <table>

(

champ1 type1 {PRIMARY KEY}, champ2 type2

);

Permet de créer une table en spécifiant les champs et les types.

Crée la table PRODUIT sans les contraintes d'intégrité:

CREATE Table PRODUIT (Ref_pdt varchar(5) PRIMARY KEY,

lib_pdt varchar(30), prix number(6) );

(7)

CREATE TABLE <table>

(

champ1 type1 {PRIMARY KEY}, champ2 type2,

{champ clef etrangère type}...

{Constraint...}

);

Permet de créer une table en spécifiant les champs, les types et les contraintes.

Crée la table PRODUIT:

CREATE Table PRODUIT (Ref_pdt varchar(5) PRIMARY KEY,lib_pdt varchar(30),

prix number(6) num_fourn number(5) Constraint FK_ForeignKey );

ALTER TABLE <Table>

ADD/ALTER/DROP

<nomchamp> {<typechamp>}

Permet de modifier la structure d'une table.

Ajoute le champ « Quantité » de type number dans la table PRODUITS:

ALTER TABLE PRODUIT ADD qte_pdt number(5);

DROP Table <Table>

Permet de supprimer une table, ATTENTION, toutes les données contenues seront aussi supprimées!

DROP Table PRODUIT;

Leçon Bases de données: Chapitre 4

4.1. Présentation

Il arrive parfois qu'on ait à effectuer des traitements de données dans certaines occurrences ou selon certains évènements qui surviennent dans une base. Il est préférable d'automatiser ces traitements au niveau de la base de donnée au lieu de le faire au niveau du logiciel. Le langage PL/SQL permet d'effectuer des traitements dans certaines occurrences du résultat d'une requête en utilisant un curseur ou d'effectuer ces traitements au déclenchement d'un évènement en utilisant les triggers et les procédures stockées.

4.2. Les Curseurs

Voiçi la syntaxe PL/SQL pour les curseurs:

- Définition d'un curseur :

DECLARE

nom_curseur CURSOR IS SELECT <requête> ; <variables pour utiliser le curseur> LIGNE nom_curs% ROWTYPE ;

- Utilisation d'un curseur:

OPEN nom_curs ; FETCH nom_curs INTO ligne ;

4.3. Les procédures stoquées - Syntax d'une procédure stoquée:

CREATE PROC{EDURE} nom_procédure{;nobre} {{@parametre type_donnée} {VARYING}

{=valeur_défaut}{OUTPUT} }{,..n} {WITH

(8)

{RECOMPILE/ENCRYPTION/RECOMPILE,ENCRYPTION}} {FOR REPLICATION} AS >instructions SQL> GO

4.4. Les Triggers - Syntaxe d'un trigger:

CREATE {OR REPLACE} TRIGGER propriétaire.nom_déclencheur AFTER/BEFORE {INSERT{OR DELETE{OR UPDATE OF nom_colonne1,nom_colonne2...}}}} ON propriétaire.nom_table FOR EACH ROW nom_procédure (argument1,argument2...);

Bon j'avoue c'est pas très clair, mais je fais ce que je peux ;), il faut savoir que c'est un langage difficile qui ne s'apprends pas à la lecture de quelques pages web. Pour approfondir vos connaissances en PL/SQL, je vous conseille ce site proposant des documentations plus complêtes que celle-ci au format PDF, ISGinfo ou encore le site L'altruiste qui explique bien l'utilisation des triggers.

Chapitre 4 - Les différents SGBD(R)

5.1. Microsoft Access

Microsoft Access est un système de gestion de bases de données relationnel (SGBDR) destiné au grand public et aux PME. Il est donc simple d'utilisation est dispose d'une interface graphique conviviale permettant notamment de générer des requêtes d'extraction de données grâce a des assistant ou a une technologie propriétaire appelée QBE. Access est cependant peu performant pour les bases très volumineuses car non adapté à ces dernières et ne permet pas de créer des applications multi-plateformes car il n'et compatible qu'avec les systèmes d'exploitation Microsoft. En contre partie on peut noter le budget beaucoup plus faible que les autres SGBDR puisqu’Access est livré avec Microsoft Office pour Windows en standard.

5.2. Microsoft SQL Server

Microsoft SQL Server est une solution SGBDR beaucoup plus professionnelle qu'Access, elle est donc destinée à des applications beaucoup plus volumineuses et complexes. SQL Server possède donc comme son nom l'indique des fonctions client/serveur évoluées lui permettant ainsi d'être utilisé dans de grosses infrastructures informatiques. De plus, tout comme Access SQL Server peut facilement est interfacé avec les principaux langages de programmation comme le C++, l'ASP notament grâce à la suite Visual Studio destinée aux développeurs. Il va de soit que cette solution est beaucoup plus onéreuse que son homologue grand public/PME (Access).

5.3. MySQL

MySQL est une base de données Open Source, c'est à dire qu'elle est totalement gratuite et qu'elle donne la possibilité aux développeurs expérimentés de la modifier à volonté pour étendre ses capacités. Ce SGBDR est donc destiné à tout public, sauf pour les grosses infrastructures à cause de son manque de maturité. MySQL est très simple d'utilisation et s'interface parfaitement avec les langages orientés web et particulièrement le PHP.

5.4. Oracle

Oracle est le maître des bases de données, il est le SGBDR le plus aboutit et le plus utilisé dans les grosses entreprises notamment grâce à sa fiabilité sur des bases très volumineuses.

Par exemple une banque choisira ce SGBDR sans la moindre hésitation. Mais qui dit fiabilité,

(9)

maturité, notoriété, dit gros budget. Les PME et particuliers s'en passeront pour des alternatives moins onéreuses.

5.5. Autres SGBD

Il existe bien sûr d'autres SGBD qui malgré leur manque de notoriété peuvent devenir la solution qui correspondra le plus à vos besoins. On peut citer FileMaker Pro d'Apple qui est très simple d'utilisation mais ne manque pas de fonctions avancées. Il possède aussi l'avantage d'être multi-plateforme (Mac/PC). PostgreSQL est aussi une base assez fiable souvent utilisée dans le monde UNIX et gratuite. On peut enfin noter quelques antiques comme dBase qui est l'un des précurseurs des SGBD encore utilisé dans certaines entreprises à cause du fait que la migration des grandes bases de données est une tâche hardis.

Références

Documents relatifs

Exercice 1 : Dans cet exercice, les probabilités seront arrondies au centième. Un grossiste achète des boites de thé vert chez deux fournisseurs. 10 % des boites

Cette phrase montre que Solvay prend appui sur son référentiel de compétences dans son nouvel accord de GPEC pour saisir les différentes sources de compétences : lors de la

On tire maintenant une infinité de fois une boule avec remise et on note Z la variable aléatoire représentant le numéro du tirage où pour la première fois on obtient une

En supposant que le câble fait un angle de 30 degré avec le plan de la route et que la tension est de 1600 N, quel est le travail effectué par la dépaneuse sur la voiture si ele

Projeté orthogonal d'un vecteur sur un axe Propriété : Soit le repère normé d'un axe.. Le projeté orthogonal d'un vecteur sur cet axe est

Cas de deux

Elle aurait dû administrer le vaccin et enregistrer la dose en tant que VVR1 dans la colonne de la feuille de pointage pour les enfants de « 12 mois ou plus » ou « 12–23 mois »

Cependant nous avons obtenu l’équation d’état des gaz parfaits par des considérations, des expériences effectuées à l’échelle macroscopique. En thermodynamique coexistent