Zoologie

[45 minutes]

Un zoologue souhaite réaliser une base de données pour l'étude des chaînes alimentaires.

Il souhaite étudier deux populations d'animaux : les carnivores et les herbivores, sachant que les carnivores ne mangent  que des herbivores et que les herbivores, évidemment, ne mangent pas d'animaux. La base gère donc des espèces d'animaux, identifiées par leur nom (Lion, Biches, etc.). Les carnivores et les herbivores sont étudiés selon deux paramètres communs : taille moyenne et poids moyen.

Pour les herbivores, on étudie en plus le poids moyen de végétaux mangé par jour. Bien entendu le zoologue souhaite connaître également le poids moyen mangé par jour pour chaque espèce de carnivore et pour chaque espèce d'herbivore qu'il mange. Il souhaite enfin pouvoir obtenir très facilement le poids total mangé par un carnivore par jour (donc en sommant le poids de chaque herbivore mangé par jour). On fera apparaître cette opération sur le modèle.

Question

Réalisez le modèle conceptuel du problème posé.

Question

Réalisez le modèle logique relationnel-objet du problème (on utilisera les OID pour toutes les tables référencés).

On ajoutera la méthode poidsMangéParJourTotal() à la table d'objets Carnivore.

Question

Implémentez le modèle relationnel-objet en SQL3 sous Oracle (sans implémenter de méthode).

Question

Implémentez la méthode permettant de calculer le poids total d'herbivore mangé par un carnivore par jour.

Question

Écrivez une requête qui permet de retourner tous les carnivores, triés par leur poids, avec le poids total d'herbivore qu'ils mangent par jour.

Question

Proposez et implémentez une solution d'optimisation pour améliorer les performances de la requête précédente. Justifiez votre choix et expliquez, éventuellement à l'aide d'un petit schéma ou d'un exemple, pourquoi l'exécution sera améliorée.