Fichier de rejeu Close

Indication Close

A propos de... Close

Commentaire Close

Systèmes d'Information

  • Notions mathématiques
  • Calcul relationnel
  • Algèbre relationnelle
  • Langage de requêtes
  • Arbre de requêtes
  • Exercices
  • Introduction
  • Commandes de bases
  • Langage de définition de données (LDD)
  • Langage de manipulation de données (LMD)
  • Types de données
  • Exercice
  • Présentation
  • Calcul relationnel
  • Algèbre relationnelle
  • Division relationnelle
  • Relation
  • Fonction
  • Application
  • Injection
  • Surjection
  • Bijection
  • Association
  • Exemples
    • Personnel de société
      • Cahier des charges
      • Modélisation des entités
      • Modélisation des associations
    • Gestion d’entreprise
      • Cahier des charges
      • Modélisation entité-association
      • Création de la base de données
      • Manipulation de la base de données
    • Exercices
  • Dépendances fonctionnelles
  • Décomposition de relations
  • Inférence logique
  • Normalisation
  • Aux pays des bières
  • Modélisation
  • Exercices
  • Liste des projets
  • Aux pays des bières
  • Au Tournoi des six nations
  • Salles de concerts
  • Généralités
  • Langage SQL
  • Modèle relationnel
  • Généralités
  • SQL
  • Algèbre relationnelle
  • Synthèse
Index

Archives

  • Site Web
  • Sources reStructuredText
  • EniBook 1.618033988
logo

Crédits

© Your Copyright

Aide

En-tête

MenuContenu
Sommaire,
Téléchargements
Aide sur les outils

Pied de page

ChevronAction
Aller en haut de la page courante
Aller en bas de la page courante
Passer à la page précédente
Passer à la page suivante

Exemples

Personnel de société

Cahier des charges

Une société décide d’informatiser la gestion de son personnel ou chaque personne exerce une fonction.

Pour chaque personne, on connait son nom, son prénom, son numéro de sécurité sociale (qu’on utilise pour l’identifier au sein de la société) et son adresse.

Une fonction associée à une personne posséde un label unique déterminant cette fonction et un numéro de bureau attaché à la fonction.

On doit également pouvoir connaître la date d’embauche et, éventuellement, la date de licenciement (ou de démission).

Modélisation des entités

« Une société décide d’informatiser la gestion de son personnel ou chaque personne exerce une fonction. »

  • Cette phrase (sujet-verbe-complément) nous permet d’identifier les entités (sujet,complément) et une association (verbe) entre ces deux entités.
modèle UML gestion personnel de société

« Pour chaque personne, on connait son nom, son prénom, son numéro de sécurité sociale … et son adresse. »

  • Cette phrase nous permet de connaître les informations (propriétés) importantes qui définissent une personne (entité).
modèle UML gestion personnel de société

« Une fonction associée à une personne posséde un label unique déterminant cette fonction et un numéro de bureau attaché à la fonction. »

  • Cette phrase nous permet de relever les informations (propriétés) qui caractérisent une fonction (entité) dans la société.
modèle UML gestion personnel de société

Modélisation des associations

Dans ce cahier des charges, rien n’est précisé sur la cardinalité de l’association entre une « Personne » et une « Fonction » identifiée par le verbe « exerce ».

Il faut expliciter cette cardinalité en se posant les questions qui permettront de lever cette ambiguïté :

  • Une personne peut-elle exercer plusieurs fonctions ? (\(1..1\) ou \(1..*\) sur l’entité « Fonction » ?)
  • Une fonction peut-elle être attribuée à plusieurs employés ? (\(1..1\) ou \(1..*\) sur l’entité « Personne » ?)

Autrement dit :

  • cardinalité (\(1..1\)) ou (\(1..*\)) d’un coté ou des deux côtés de l’association ?

Si une personne peut exercer une ou plusieurs fonctions dans la société et qu’une fonction peut être attribuée à une ou plusieurs personnes :

  • association plusieurs à plusieurs, cardinalité (\(1..*\)) des deux côtés de l’association, il faudra créer une table associative.
modèle UML gestion personnel de société

On doit également pouvoir connaître la date d’embauche et, éventuellement, la date de licenciement (ou de démission).

modèle UML gestion personnel de société

On aura donc un modèle de tables :

  • \(personnes(\underline{no\_ss},nom,prenom,adresse)\)
  • \(attribution(\underline{\#no\_ss,\#label},debut,fin)\)
  • \(fonctions(\underline{label},bureau)\)

Certaines contraintes n’apparaissent pas dans la modélisation précédente.

  • format réglementaire du numéro de sécurité sociale
  • on doit connaître l’adresse
  • la date de début doit être inférieure à la date de fin
  • …

Le standard SQL permettra d’implémenter dans une base de données relationnelles le modèle UML et les contraintes relevées à la lecture du cahier des charges.

Lors de la création des tables, le langage SQL permettra leur mise en oe uvre à l’aide de contraintes d’intégrité sur les tables ou de contraintes d’intégrité référentielle sur les associations.

Gestion d’entreprise

Cahier des charges

Une entreprise souhaite mettre en place un Système d’Information pour gérer ses employés dans des départements en respectant les contraintes suivantes :

  • l”entreprise a un nom, dispose d’un capital et est constituée de départements.
  • un département a un nom et est composé de plusieurs postes dont on connaît la fiche (le nom dans un premier temps)
  • l’entreprise dispose d”employés qui ont un salaire
  • un employé est une personne dont on connaît le nom et le prénom
  • on doit disposer de contacts (mail,téléphone …) pour chaque personne de l’entreprise
  • une personne peut avoir plusieurs contacts
  • un employé est affecté à un poste.
  • un employé peut diriger plusieurs autres employés
  • un employé peut être responsable d’un département

Modélisation entité-association

A partir de ce cahier des charges on peut identifier, dans un premier temps les entités et les association entre entités.

Le diagramme UML ci-dessous représente cette modélisation entité-association:

Entités et associations

modèle UML gestion d'entreprise

On peut par la suite identifier les informations « métier » que l’on peut regrouper dans les entités.

Le diagramme UML ci-dessous représente cette modélisation entité-attributs :

Entités et attributs

modèle UML gestion d'entreprise

Enfin on peut faire apparaître les informations qui représenteront les clés primaires et étrangères à mettre en place dans le cadre d’une structuration de la base de données.

Le diagramme UML ci-dessous représente cette modélisation en représentant sous forme d’attributs les identifiants de clés primaires et étrangères :

clés primaires et étrangères

modèle UML gestion d'entreprise

Création de la base de données

A partir de cette dernière modélisation on peut en déduire la structuration de la base de données en créant les tables SQL suivantes :

Création des tables.

CREATE TABLE entreprises (
                          id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
                          nom varchar(20),
                          capital float DEFAULT 0
                        );
CREATE TABLE departements (
                           id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
                           nom varchar(20),
                           entreprise_id INTEGER,
                           responsable_id INTEGER,
                           FOREIGN KEY (entreprise_id) REFERENCES entreprises
                           FOREIGN KEY (responsable_id) REFERENCES employes
                          );
CREATE TABLE personnes (
                        id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
                        nom varchar(20),
                        prenom varchar(20)
                       );
CREATE TABLE contacts (
                        id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
                        mail varchar(30),
                        personne_id INTEGER,
                        FOREIGN KEY (personne_id) REFERENCES personnes
                       );
CREATE TABLE employes (
                       id INTEGER NOT NULL PRIMARY KEY,
                       salaire SMALLINT,
                       entreprise_id INTEGER,
                       poste_id INTEGER,
                       chef_id  INTEGER,
                       FOREIGN KEY (id) REFERENCES personnes,
                       FOREIGN KEY (entreprise_id) REFERENCES entreprises,
                       FOREIGN KEY (poste_id) REFERENCES postes,
                       FOREIGN KEY (chef_id) REFERENCES personnes
                      );
CREATE TABLE postes (
                     id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
                     nom varchar(20),
                     departement_id  INTEGER,
                     FOREIGN KEY (departement_id) REFERENCES departements
                   );

A partir de ces tables on peut insérer les enregistrements ci-dessous :

Insertion de données.

INSERT INTO entreprises(nom) VALUES ('ENIB');

INSERT INTO departements(nom,entreprise_id,responsable_id)
VALUES ('Informatique',(SELECT id FROM entreprises WHERE nom='ENIB'),NULL);
INSERT INTO departements(nom,entreprise_id,responsable_id)
VALUES ('Electronique',(SELECT id FROM entreprises WHERE nom='ENIB'),NULL);

INSERT INTO personnes(nom,prenom) VALUES ('Dupont','Jean');
INSERT INTO personnes(nom,prenom) VALUES ('Durand','Albert');
INSERT INTO personnes(nom,prenom) VALUES ('Dupond','Alfred');

INSERT INTO contacts(mail,personne_id)
VALUES ('jean.dupont@enib.fr',(SELECT id FROM personnes WHERE nom='Dupont' AND prenom='Jean'));
INSERT INTO contacts(mail,personne_id)
VALUES ('jean.dupont@gmail.com',(SELECT id FROM personnes WHERE nom='Dupont' AND prenom='Jean'));
INSERT INTO contacts(mail,personne_id)
VALUES ('albert.durand@enib.fr',(SELECT id FROM personnes WHERE nom='Durand' AND prenom='Albert'));

INSERT INTO employes(id,salaire,entreprise_id,poste_id,chef_id)
VALUES (
        (SELECT id FROM personnes WHERE nom='Dupont' AND prenom='Jean'),
        30000,
        (SELECT id FROM entreprises WHERE nom='ENIB'),
        NULL,
        NULL
);
INSERT INTO employes(id,salaire,entreprise_id,poste_id,chef_id)
VALUES (
        (SELECT id FROM personnes WHERE nom='Durand' AND prenom='Albert'),
        60000,
        (SELECT id FROM entreprises WHERE nom='ENIB'),
        NULL,
        NULL
);

INSERT INTO postes(nom,departement_id) VALUES ('MdC',(SELECT id FROM departements WHERE nom='Informatique'));
UPDATE employes SET poste_id=(SELECT id FROM postes WHERE nom='MdC') WHERE  id=1;
INSERT INTO postes(nom,departement_id) VALUES ('PRAG',(SELECT id FROM departements WHERE nom='Electronique'));
INSERT INTO postes(nom,departement_id) VALUES ('PU',(SELECT id FROM departements WHERE nom='Electronique'));

Manipulation de la base de données

La base de données étant créé on peut la tester et mettre en place les requêtes correspondant aux cas d’usages

Requêtes SQL

A partir des données précédentes :

  • créer la base de données
  • insérer des enregistrements
  • formuler des requêtes

Répondre aux cas d’usages suivants :

  • nom de toutes les entreprises dont le capital est compris entre 0.00 € et 10000.00 €
  • nom de tous les départements de l” “ENIB”
  • les personnes qui ne sont pas des employés
  • les personnes qui sont employés à l” “ENIB”
  • la personne qui serait responsable de tous les départements (la créer si elle n’existe pas)
  • le salaire moyen des employes de l” “ENIB”
  • le nom des personnes qui ont le plus gros salaire à l”“ENIB”
  • le nombre de postes par département à l” “ENIB”“
  • le nombre d’employes par département à l” “ENIB”
  • le nombre d’employes par département à l” “ENIB” pour les départements dont le salaire minimum est inférieur au salaire moyen à l” “ENIB”

On pourra faire évoluer le modèle de données en :

  • faisant des mises à jour sur les informations existantes (UPDATE)
  • ajoutant des éléments dans les tables existantes (INSERT)
  • modifiant les tables pour renommer, ajouter de nouvelles colonnes (ALTER TABLE …)
  • définissant des contraintes sur les colonnes (UNIQUE, NOT NULL,CHECK, PRIMARY KEY,…)
  • créant de nouvelles entités (CREATE TABLE) et associations (FOREIGN KEY …)
  • …

Par exemple :

  • ajouter l’âge d’une personne
  • créer d’autre contacts pour une personne
  • connaître les dates d’arrivée d’un employé dans l’entreprise
  • définir des compétences requises pour un poste
  • créer des spécialisations d’employés sur des compétences
  • …
sql : essai.sql

    
>
Output

                

Interpréteur

MenuAction
Ré-initialiser les sorties
Faire apparaître le menu d'aide
Interpréter le programme

Editeur

MenuRaccouciAction
Ctrl+N Initialiser l'éditeur
Ctrl+O Charger le contenu d'un fichier dans l'éditeur
Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
Ctrl+P Imprimer le contenu de l'éditeur
Ctrl+Z Annuler la dernière modification
Maj+Ctrl+Z Rétablir la modification précedente
Ctrl+F Chercher une expression dans l'éditeur
Maj+Ctrl+F Chercher et remplacer une expression par une autre
F10 Ouvrir une documentation du langage

RaccourciAction
F1 Afficher cette aide
Tab Indenter la sélection
Maj+Tab Désindenter la sélection
Ctrl+A Sélectionner le contenu de l'éditeur
Ctrl+C Copier la sélection dans le presse-papier
Ctrl+V Remplacer la sélection par le contenu du presse-papier
Ctrl+X Supprimer la sélection et la copier dans le presse-papier
Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur

Exercices

Une compagnie de réservation de chambres d’hôtels veut mettre en place un Système d’Information sur les réservations de chambres par des clients.

Du client on connaît le nom, prénom, ville un le numéro de téléphone. Les informations dont on disposent sur les hôtels sont : le nom, le nombre de chambres, leur capacité d’accueil (nombre de personnes), la ville où ils se trouvent et leur url. Pour chaque chambre on connaît le nombre de lits, le prix, le confort (douche, salle de bains, mini-bar …), et l’équipement (TV, bureau etc …). Chaque réservation de chambre concernera un hôtel, un client et, bien sûr,une chambre.

A partir de ce cahier des charges proposer :

  1. une représentation des informations dans une table unique.
  2. une structuration de la base de données en s’appuyant sur le formalisme de modélisation UML.
  3. une décomposition de l’ensemble de départ (la table) en plusieurs tables

Après avoir créé une base de données basée sur cette décomposition, vérifiez la cohérence de la décomposition en faisant une jointure entre les différentes tables afin de reconstituer la table d’origine.

 
Systèmes d'Information : Exemples, 13 avr. 2023.