1 Présentation projet Base de Données & Langage SQL Bakary DIABY, Insa Rouen Promo. MS-ESD 16/17
2 Plan du projet : 1. Thème du projet 2. Présentation du projet 3. Description du modèle Entité/Association 4. Description de quelques associations : cardinalités 5. Modèle relationnelle : Description des tables 6. Les requêtes et résultats
3 1. Thème du projet Conception d’une base de données pour une entreprise fabriquant des produits pour les infrastructures télécom L’entreprise est une PME de 60 salariés, comptant plusieurs Services : RH, Achat, Logistique, Commercial, Production, R&D, SAV, Maintenance L’entreprise doit importer des matières premières à partir de plusieurs fournisseurs présentant les meilleurs avantages (budget, localisation, fidélisation…etc.), définir les meilleurs méthodes de montage des produits finis puis contacter les clients potentiels pour la vente et la facturation.
4 2. Présentation du projet les tâches inhérentes et fonctionnelles du projet. Le recrutement des salariés, géré par le service RH, Le contact, la négociation et l’achat de produits et matériels à des fournisseurs. Cette tâche est gérée par le service achat, Le montage et l’assemblage des composants par les unités de production,
5 Le prospect et la fidélisation des clients, et la commercialisation des produits qui est pris en charge par le service commercial, La livraison des produits dans le respect des délais par le service logistique, L’accompagnement des clients dans la maintenance de leurs matériels par le SAV, La recherche et le développement de nouveaux produits par la R&D.
6 3. Description du modèle Entité/Association
7 Nous avons un schéma composé de six relations binaires et de quatre relations ternaires. La présence des relations ternaires s’explique comme suit : - Association ternaire Fabrique : un même produit, peut être fabriqué plusieurs fois par le même service, à différentes dates. D’où la relation ternaire, Fabrique, entre les relations Services-Produit- DateFabrication. - Association ternaire Vend : un même produit, peut être vendu plusieurs fois par le même service, à différentes dates. D’où la relation ternaire, Vend, entre les relations Services-Produit-DateVente. 3. Description du modèle Entité/Association
- Association ternaire Achat : un même produit, peut être acheté plusieurs fois par le même service, à différentes dates. D’où la relation ternaire, Achete, entre les relations Services-Produit- DateAchat. - Association ternaire facture : une même facture, peut être adressée plusieurs fois au même client, à différentes dates. D’où la relation ternaire, Facture, entre les relations Services-Produit- DateVente Description du modèle Entité/Association
9 4. Description de quelques associations : cardinalités Un salarié appartient au plus à un seul service, et un service peut avoir un ou plusieurs salariés. Seul le service Achat peut établir des contacts avec les fournisseurs, plusieurs fournisseurs peuvent être contactés par l’entreprise. Un client peut commander au moins un ou plusieurs produits, et un produit peut ne pas encore avoir été commandé, comme il peut l'avoir été plusieurs fois. Employé(1,1) appartient (1,n) Service Service (0,n) contactS_F (0,n) Fournisseur Produit (1,n) Facture (1,n) Client
10 5. Modele relationnelle : Description des tables Nous avons 17 tables au total: –Tables simples : ne contenant pas d’informations provenant d’autres tables : Service, Fournisseur, Produit, Client, Date_Achat, Date_Fabrique, Date_Vente, Date_Facture; –Tables binaires : Employe, Contact_serviceETfournisseur, Contact_serviceETclient, Livraison_serviceETclient, Livraison_fournisseurETproduit; –Les relations ternaires avec (clés étrangères + dénormalisation): Achete, fabrique, Vend, facture.
11 6. Les requêtes Requetes simples sur la tables Service select * from Service where id=1 select nom, adresse from Service where id=1; 2) Produit carthésien entre les tables Service et Employe select * from Service, Employe; 3) Union et Intersection select * from Employe where (salaire > 3000 and age > 40 ) or id_service=3;
12 6. Résultats des requêtes
13 4) Creation d’une nouvelle colonne contenant le salaire par heure de chaque salarié select nom, prenom, 100 as 'Euros/heures' from Employe 5) Calcul du salaire annuelle de chaque employé dans une nouvelle colonne de la table Employe select id, nom, prenom, salaire, (salaire * 12) as salaire_annuelle from Employe; 6) Utilisation de CASE et THEN select id, nom, prenom, age, salaire case when age < 50 then 'junior' end as categorie from Employe; 7) Les produits, uniquement les produits de catégorie : matieres premières select * from Produit where categorie in ('matiere premiere ') 8) Utilisation du mot clé like select * from Employe where prenom like '%d' ; 6. Les requêtes
14 6. Résultats des requêtes
15 6. Les requêtes 9) Utilisatio de order by pour le tri select * from Facture order by quantite; 10) information sur omar dia (Employe Service) select s.id, s.nom, id_service, e.id, e.nom, prenom, age from Service as s, Employe as e where s.id = e.id_service and e.nom = 'dia'; 11) les noms des employes et les noms des mêmes services dans lesquels ils travaillent, sachant qu’ils percoivent le même salaire. select E1.id,E1.id_service, E1.nom, E1.prenom, E1.sexe, E1.age, E1.salaire,E2.id, E2.nom, E2.prenom, E2.sexe, E2.age, E2.salaire from Employe as E1, Employe as E2 where E1.id!=E2.id and E1.salaire = E2.salaire and E1.id_service=E2.id_service; 12) quelles sont les employés qui percoivent un salaire de plus de 2500 euros, et dans quels Services ils travaillent ? select Service.nom, prenom, Employe.nom, age, salaire from Employe, Service where id_service = Service.id and salaire > 2500;
16 6. Résultats des requêtes
17 6. Les requêtes 13) Les services qui contactent les fournisseurs se trouvant dans la ville de Rouen select S.nom, C_SF.date_contact, F.nom, F.ville from Service as S, Contact_serviceETfournisseur as C_SF, Fournisseur as F where S.id = C_SF.id_service and F.id = C_SF.id_fournisseur and F.ville = 'Rouen'; 14) Les services qui contactent les fournisseurs se trouvant dans la ville de Rouen select S.nom, C_SC.date_contact, C.nom, C.ville from Service as S, Contact_serviceETclient as C_SC, Client as C where S.id = C_SC.id_service and C.id = C_SC.id_client and C.ville = 'Rouen'; REQUETES IMBRIQUEES : mot-clé in 15) Information sur les services ou travaillent dia ou Moore select * from Service where id in (select id_service from Employe where nom='dia' or nom='Moore'); REQUETES CORRELEES : mot-clé exists 16) select * from Service where exists (select * from Employe where nom='dia' or nom='Moore' and Employe.id_service=Service.id)
18 6. Résultats des requêtes
19 6. Les requêtes Requêtes avec négation 17) select * from Service where id not in (select id_service from Employe) LES AGRÉGATS 18) select sum(quantite) from Facture group by id_client; 19) select id_produit, sum(prix) as 'vente' from Fabrique group by id_produit;
20 6. Résultats des requêtes