coincoins

Projet Animal : présentation

SQL, Cas Animal
Introduction au projet

Un vétérinaire souhaite enregistrer des informations concernant les animaux et leur propriétaires.

Il y a bien un logiciel qui existe qui lui correspondrait, mais comme il vient de s'installer et qu'il aime bien l'informatique, il a décidé de faire appel à vous pour développer une petite application.

Celle ci se compose de quelques pages d'interface utilisateur en html et php :

  • index.php : accueil & liste des animaux soignés qui permet d'accéder aux différentes fonctions,
  • animVisu.php : la fiche animal en mode visualisation
  • animMaj.php : la fiche animal en mode mise à jour
  • animCrea.php : la fiche animal en mode création
  • animSuppr.php : la fiche animal en mode suppression,
  • interLst.php : la liste des interventions,
  • interVisu.php : une intervention en mode visu,
  • interMaj.php : une intervention en mode modif,
  • interCrea.php : une intervention en mode création,

A celles-ci, il faut ajouter les pages d'exécution des requêtes sur la base de données :

  • animAdd.php : insertion d'une fiche animal,
  • animUpd.php : modification d'une fiche animal,
  • animDel.php : suppression d'une fiche animal et de toutes les interventions le concernant,
  • interAdd.php : insertion d'une intervention,
  • interUpd.php : modification d'une intervention,

De plus, il faut tenir compte de la feuille CSS (style.css) et du script d'affichage de l'entête et du pied de page (template.css).

Si j'ai bien compté, cela fait 16 fichiers.

Ce n'est pas du MVC, mais on s'en approche ...

A vous de jouer.

index.php et template.php

Ce sont des paramètres passés à l'index qui vont déterminer le contenu de la page qui sera affiché.

Template ne fera que afficher l'entête, le contenu de la vue demandée et le pied de page.

tester l'index véto de base.

  • proprietaire(id, nom, ville)
    • id
  • espece(id, nom)
    • id
  • animal(id, nom, date_naiss, sexe, idEspece, idProprio)
    • id
    • idEspece référence id dans espece
    • idProprio référence id dans proprietaire

Top of page

Les questions (enfin!)

1ère série : simples

Liste (12 requêtes)

  • 1-01 Quelle est la liste des enregistrements de la table animal (r101_liste des animaux) ?
  • 1-02 Quelle est la liste des animaux mâles (Access: male=-1 ; mysql : sexe="M")
  • 1-03 Quelle est la liste des noms des animaux ?
  • 1-04 Quelle est la liste des animaux mâles nés après 2010 ?
  • 1-05 Quelle est la liste des animaux mâles de taille entre 30 et 50cm ?
  • 1-11 Quelle est la liste des propriétaires ?
  • 1-12 Quelle est la liste des propriétaires de Strasbourg ?
  • 1-13 Quelle est la liste des propriétaires de Strasbourg ou de Molsheim ?
  • 1-14 Quelle est la liste des propriétaires de Strasbourg, de Molsheim et Saverne ?
  • 1-21 Quelle est la liste des espèces ?
  • 1-22 Quelle est la liste des propriétaires, triée par ville et nom ?
  • 1-23 Quelle est la liste des noms et tailles des animaux, classé par taille décroissante ?

Mots clés utilisés : SELECT, FROM, WHERE, ORDER BY, DESC, OR, AND, BETWEEN, IN et les opérateurs de comparaison

2ème série : moyennes

Si possible, respecter l'ordre des requêtes, il permet d'être progressif dans la création des requêtes.

Liste et regroupements (12 requêtes)

  • 2-01 Combien y a-t-il d'animaux ?
  • 2-02 Combien y a-t-il d'animaux dont la taille ne dépasse pas 30cm ?
  • 2-03 Quels sont les noms des propriétaires de chaque animal (indiquer l'id, le nom de l'animal et celui du propriétaire) ?
  • 2-04 Donner la liste des noms d'animaux, suivi du nom de l'espèce puis du nom du propriétaire.
  • 2-05 Quelle est la liste espèces par propriétaire (nom proprio et nom espèce) ?
  • 2-11 Combien y a-t-il de propriétaires ?
  • 2-12 Combien y a-t-il de propriétaires par ville ?
  • 2-21 Donner le nom de l'espece et le nom des animaux.
  • 2-22 Combien y a-t-il d'animaux par espèce ?
  • 2-31 Quelle est la taille moyenne des animaux ?
  • 2-32 Quelle est la taille moyenne des animaux par id d'espèce ?
  • 2-33 Combien d'animaux mâles sont nés après 2010 ?

Mots clés utilisés : ceux de la série 1 et : DISTINCT, COUNT(*), AVG, GROUP BY

3ème série : difficiles

La difficulté réside dans la requête ... ou dans la question!

Imbrication : utilisation du résultat d'une sous-requête pour obtenir une valeur ou une liste servant à une comparaison dans la requête cadre.

  • 3-01 Combien y a-t-il d'animaux de strasbourg (simple) ?
  • 3-02 Les propriétaires strasbourgeois n'ont ils qu'un seul animal (subtilité de la question) ?
  • 3-03 Quels sont les animaux (id et nom) dont la taille est supérieure à la moyenne des tailles des animaux (imbrication simple)?
  • 3-04 Quels sont les propriétaires ... qui n'ont pas d'animal (imbrication astucieuse) ?
  • 3-05 Combien y a-t-il de propriétaires réels par ville (compatge avec regroupement et imbrication dans le where) ?
  • 3-06 Quels sont les id et nom des propriétaires strasbourgeois qui ont plus d'un animal (HAVING, plusieurs syntaxes possibles)?

Top of page

Corrigés ???

Pas si facile à voir ...

Série 1 : simples

Série 2 : moyennes

Série 3 : difficiles (très)

Top of page