Modèle entité-association 6pts



Documents pareils
INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

A QUOI SERVENT LES BASES DE DONNÉES?

1 Modélisation d une base de données pour une société de bourse

Bases de données relationnelles

Évaluation et optimisation de requêtes

TP Bases de données réparties

Les bases de données

Le langage SQL Rappels

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Bases de Données relationnelles et leurs systèmes de Gestion

16H Cours / 18H TD / 20H TP

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Langage SQL : créer et interroger une base

Le Langage De Description De Données(LDD)

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

A QUOI SERVENT LES BASES DE DONNÉES?

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

TP Contraintes - Triggers

1 Introduction et installation

Bases de données avancées Introduction

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

CREATION WEB DYNAMIQUE

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

SQL Historique

Systèmes de Gestion de Bases de Données (SGBD) relationnels Maude Manouvrier

TD n 10 : Ma première Base de Données

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Dossier I Découverte de Base d Open Office

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Cours Bases de données 2ème année IUT

INTRODUCTION AU DATA MINING

Cours Bases de données

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

BTS/CGO P10 SYSTEME INFORMATION Année

Introduction au Système de Gestion de Base de Données et aux Base de Données

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Vincent Augusto

Encryptions, compression et partitionnement des données

Administration de Bases de Données : Optimisation

COURS AUTOCAD. Création et utilisation des blocs. b leclerc. ERP Jean Moulin METZ

La présente publication est protégée par les droits d auteur. Tous droits réservés.

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Bases de données élémentaires Maude Manouvrier

1. Base de données SQLite

Systèmes d information et bases de données (niveau 1)

Groupe 11 TABLE DES MATIERES

Cours Base de données relationnelles. M. Boughanem, IUP STRI

I4 : Bases de Données

PROJET 1 : BASE DE DONNÉES REPARTIES

BD et XML : Exercices

Introduction aux Bases de Données

FileMaker 13. Guide de référence SQL

Modèle conceptuel : diagramme entité-association

PHP 5. La base de données MySql. A. Belaïd 1

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

Systèmes de Gestion de Bases de Données

Cegid Business Paie. Mise à jour plan de paie 01/01/2014. Service d'assistance Téléphonique

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Bases de Données. Plan

Présentation du module Base de données spatio-temporelles

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Guide d administration RÉGIME VOLONTAIRE D ÉPARGNE-RETRAITE (RVER) RÉGIME DE PENSION AGRÉÉ COLLECTIF (RPAC)

INTRODUCTION : Données structurées et accès simplifié

Gestion des utilisateurs et de leurs droits

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

II. Modèle conceptuel le modèle entité-association

Optimisations des SGBDR. Étude de cas : MySQL

Mysql avec EasyPhp. 1 er mars 2006

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Rappel sur les bases de données

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

INFO 364 : Bases de Données Projet Professeur : Esteban Zimányi Assistants : Pierre Stadnik et Mohammed Minout Année Académique :

Initiation à Excel. Frédéric Gava (MCF)

Objectifs du TP : Initiation à Access

Base de données relationnelle et requêtes SQL

Création et Gestion des tables

Cours de bases de données. Philippe Rigaux

Chap. 2: L approche base de données

Avertissement : ceci est un corrigé indicatif qui n engage que son auteur

Bases de Données Relationnelles. Le Modèle Relationnel

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

Exercices et solutions

Bases de données et sites WEB

ÉTUDE DE CAS. Durée : 5 heures Coefficient : 5 CAS FEFORT ÉLÉMENTS DE CORRECTION

Pôle de Dakar S IMUL ATIONS. 1 Utiliser un taux d accroissement pour une simulation

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Excel avancé. Frédéric Gava (MCF)

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

TD3 - Facturation avec archivage automatisé

KPI (Key Performance Indicator) dans MOSS

LE COMPTE EPARGNE TEMPS

TP 8: LES OPERATEURS ENSEMBLISTES

Transcription:

Examen NFP 107 17 juin 2009 Sujet 1 3H documents autorisés Enseignant : Christine Plumejeaud Modèle entité-association 6pts Le service de gestion du personnel d une entreprise désire s équiper d un outil lui permettant de gérer informatiquement ses employés, leurs salaires et leurs congés. Les spécifications suivantes ont pu être produites à partir d une analyse des besoins réalisée auprès des utilisateurs du service du personnel. Généralités : - Tout employé est identifié par un nom, un prénom et une date de naissance. - Tout employé remplit une fonction et appartient à un service - Pour chaque employé, on gère la date d embauche et la quotité (c est-à-dire le pourcentage de temps travaillé par rapport au temps plein, en cas de travail à temps partiel) Gestion des salaires : - Pour chaque employé, on gère l historique de ses salaires dans l entreprise, chaque salaire étant affecté à une période de temps (marquée par la date de début de la période). - Un salaire est composé d un salaire brut, de charges patronales et de charges salariales. Gestion des congés : - Pour chaque employé, on mémorise chaque congé pris (posant qu un congé concerne toujours une ou plusieurs journées entières, dont on conserve la date et la durée). - Pour chaque employé, on mémorise le nombre total de congés cumulés par année. - Chaque employé a le droit aux jours de congés suivants, par année : o 25 jours (pour une quotité de 1) et 25 x quotité sinon o Chaque fonction ouvre les droits à un certain nombre de jours de RTT o Chaque service ouvre les droits à un certain nombre de jours de RTT o o Chaque tranche de 5 ans passés dans l entreprise donne droit à un jour supplémentaire Les employés de plus de 40 ans ont un jour supplémentaire ; et ceux de plus de 50 ans deux Questions 1) Donner une représentation Entité-Association des données pour la gestion des employés, des salaires et des congés et noter les cardinalités entre les entités. 2) Définissez un modèle relationnel en intention à partir de ce schéma, en introduisant un identifiant unique pour les employés. 3) Soulignez les clés primaires, et indiquez les clés étrangères (en indiquant les attributs et tables référencés) 4) Proposer une vue «salairesfiscaux» sur cette base (donnez sa définition en intention, et l expression SQL correspondant à sa création) qui renvoie pour chaque employé le salaire chargé (brut + charges patronales), et le salaire net (brut charges salariales) pour le salaire en cours (celui que touche actuellement l employé). Questions (suite) On garde dans la relation congéscumulés les droits aux congés cumulés par employé chaque année, et détaillés par catégories (ancienneté, age, quotité travaillée, fonction, service), suivant cette relation : CongésCumulés(emp_id, année, TotalNbJours, ancienneté_jours, age-jours, quotité_jours, fonction_jours, service_jours) 5) Donnez la requête SQL correspondant à l insertion pour l année 2009 d une entrée dans cette table pour l employé 19177 embauché le 1/03/1981 et né le 16/09/1954, qui appartient au service reseaux et remplit la fonction de manager, et qui travaille à mi-temps.

Réponses 1) Fonction nbrtt Service nbrtt Remplit 1:N 1:N Appartient à Employé Nom Prénom datenaissance dateembauche quotitétravail Gagne 1:N DateDébut 0:N Prend 0:N DateDébut nbjours Cumule nbjours année Congé Salaire Brut ChargesPatronales ChargesSalariales 2) Modèle relationnel en intention : Employé (emp_id, nom, prenom, datenaissance, dateembauche, quotitétravaillée, fonction, service) Salaire (emp_id, datedébut, brut, chargespatronales, chargessalariales) Fonction(fonction, nbrtt) Service(service, nbrtt) CongésPris(emp_id, datedébut, nbjours, ) CongésCumulés(emp_id, année, TotalNbJours, ancienneté_jours, age-jours, quotité_jours, fonction_jours, service_jours) 3) emp_id de Salaire est une clé étrangère qui référence l attribut emp_id de la relation Employé fonction de Employé est une clé étrangère qui référence l attribut fonction de la relation Fonction

service de Employé est une clé étrangère qui référence l attribut service de la relation Service Emp_id de CongésPris est une clé étrangère qui référence l attribut emp_id de la relation Employé Emp_id de CongésCumulés est une clé étrangère qui référence l attribut emp_id de la relation Employé 5) salairesfiscaux(emp_id, salairechargé, salairenet) CREATE VIEW salairesfiscaux AS SELECT emp_id, brut+chargespatronales AS charge, brut-chargessalariales AS net FROM salaire WHERE date IN (select max(date) FROM salaire group by emp_id) 5) INSERT INTO CongésCumulés (emp_id, année, totalnbjours, ancienneté_jours, age-jours, quotité_jours, fonction_jours, service_jours) VALUES ( 19117, 2009, (2009-1981 div 5) + (2009-1954) div 40 + (2009-1954) div 50 + 25 * 0.5 + select nbrtt from fonction where fonction= manager + select nbrtt from service where service= reseaux, (2009-1981 div 5), (2009-1954) div 40 + (2009-1954) div 50, 25 * 0.5, select nbrtt from fonction where fonction= manager, select nbrtt from service where service= reseaux ) ; Algèbre relationnelle et requêtes SQL 6pts Une maîtresse de maison s est constituée une base de données sur les personnes (probables) qu elle invite et les plats qu elle leur sert. Cette base de données est composée de trois relations : - REPAS (date, invité) donne la liste des invités qui ont été reçus et à quelle date - MENU (date, plat) donne le plat servi à chaque date - PREFERENCE (personne, plat) donne pour chaque personne ses plats préférés. N.B. : les attributs personne et invité ont le même domaine. À l aide du langage SQL, exprimer les requêtes suivantes : Questions 1) Quels sont les invités du repas du 01/05/97? 2) Quels sont les plats qui ont été servis à Alice 3) Quels sont les invités qui lors d un repas ont eu au moins un de leur plat préféré? 4) Quelles sont les personnes qui n ont jamais été invitées? 5) Quels sont les invités venus à tous les repas? Réponses 1) SELECT invité FROM repas WHERE date=01/05/97 ; 2) SELECT plat FROM menu WHERE date IN ( SELECT date FROM repas WHERE invité= Alice ) ; 3) SELECT invité FROM repas WHERE date IN ( SELECT date FROM menu WHERE plat IN ( SELECT plat FROM preference WHERE personne=invité) ); 4) SELECT personne FROM preference WHERE personne NOT IN ( SELECT invité FROM repas) ; 5) SELECT invité FROM REPAS GROUP BY invité HAVING COUNT(*) = (SELECT COUNT (DISTINCT (date)) FROM REPAS)

Organisation Physique 2pts Dessinez le résultat des opérations suivantes sur l organisation par hachage linéaire de la figure suivante (un dessin par opération) en supposant que la fonction de hachage est h(clé) = clé MOD 32. Donnez la valeur de P à la fin de chaque insertion. Début deuxième expansion : d = 2 Donc 2 digits de la clé servent à identifier le bloc. P = 0 10100 11101 11010 01111 00001 11011 00 01 10 11 a) insérer 22 (22 = 16 + 4 + 2) b) insérer 51 (51 = 32 + 16 + 2 + 1) Réponses : a) 22 MOD 32 = 22 22 10 =10110 2 10100 11101 11010 01111 00001 10110 11011 P=0 00 01 10 11 b) 51 MOD 32 = 19 19 10 = 10011 2 Il y a débordement, 00 est éclaté P = 1 10011 11101 11010 01111 10100 00001 10110 11011 000 01 10 11 100 Optimisation 6pts Soit le schéma relationnel : Journaliste (JID, Nom, Prenom) Journal (Titre, Redaction, ReID) 2 _ 4 3 + 7 ' 2 _ 5 _ 6_ La table Journaliste stocke les informations (Nom, Prenom) sur les journalistes (JID est le numéro d identification du journaliste). La table Journal stocke pour chaque rédaction d un

5 le journal le titre du journal (Titre), le nom de la rédaction (Redaction) et le JID de son rédacteur (ReID). Soit la requête : SELECT Nom FROM Journal, Journaliste WHERE Titre= Le Monde and JID=ReID and Prenom= Jean 1. (1 point) Que calcule cette requête? 2. (2 points) Voici deux requêtes algébriques (la jointure est notée *) : (1) π Nom (σ Titre = Le Monde ^ Prénom = Jean (JOURNALISTE * (JID =ReID) JOURNAL) (2) π Nom ( (σ Prénom = Jean (JOURNALISTE) * (JID =ReID) (σ Titre = Le Monde JOURNAL)) a) Est-ce que les deux requêtes retournent le même résultat (sont équivalentes) et citer la/les règle(s ) qui justifient la réponse? Est-ce qu une requête est meilleure que l autre si on considère les deux requêtes comme plans d exécution? Expliquez votre réponse. Il n y a pas d index sur le titre du journal. On a seulement un index dense sur la table Journaliste sur l attribut JID : I-Journaliste-JID. 3. (1 point) Donner le meilleur plan d exécution physique sous forme arborescente. Les noeuds de l arbre sont des opérateurs comme balayage séquentiel (BS), traversée d index (TI), accès direct (par adresse) à une table (AD), tri, fusion, boucles imbriquées (BI), etc. 4. (1 point) Expliquez en détail ce plan. Soit Bal le nombre de blocs de la table Journal et Biste _ Bistele nombre de blocs de la table Journaliste. Soit BTI 8 nombre de blocs lus lorsqu on traverse l index I-Journaliste-JID. 5) (1 point) Quel est le coût en nombre de lectures de blocs pour exécuter ce plan? Solution : 1) Les noms des rédacteurs du journal le Monde qui s appellent Jean. 2) a) Oui, car la sélection est commutative avec la jointure règle 5 2) b) Suivant les heuristiques vues en cours, la requète (2) qui exécute les sélections en premier avant les jointures a plus de chances (en limitant le nombre d uplets de la jointure entre Journaliste et Journal) d avoir un coût inférieur à (1) 4) Réponse : - par balayage séquentiel de la table Journal, on obtient les nuplets correspondant aux rédactions du Monde (sélection sur le titre). - On fait ensuite une jointure par boucles imbriquées : la valeur de l attribut ReID de ce nuplet sert de clé d accès à l index I-Journaliste-JID. La traversée de cet index donne les adresses des nuplets de la table Journaliste correspondant aux rédacteurs du Monde. Cette table est accédée directement (par adresse du nuplet correspondant au ReID du Monde). - On projette le nuplet obtenu alors sur le champ Nom après avoir effectué une sélection sur le prénom.

3) Nom Projection Prenom= Jean selection jointure Titre= lemonde selection adresse Journaliste séquentiel Journal JID Index Journaliste(JID) 5) Cout = Bal * log(biste).