Soit le schéma relationnel suivant décrivant un système de gestion des films et leur distribution dans des salles de cinéma :
REALISATEURS(idrealisateur, nomrealisateur) : un réalisateur est identifié de manière unique par son identifiant (entier, clé de la relation) et un nom
FILMS (idfilm, titre, annee, score, nbVotants, idRealisateur) : un film est décrit de manière unique par un identifiant (entier, clé de la relation), un titre, une année (première sortie du film), un score (moyenne de tous les votes pour ce film, compris entre 0 et 10), un nombre de votants et un réalisateur (entier positif, clé étrangère sur REALISATEURS)
DOCUMENTAIRES(idfilm, sujet) : un documentaire est un film, identifié par idfilm. Idfilm est une clé étrangère sur FILMS. L’attribut sujet donne le type de sujet traité dans le documentaire : ‘Animalier, ‘Historique’, ‘Voyage’, ‘Société’, ‘Animation’.
COURTMETRAGES(idfilm, subventionne, duree) : un court-métrage est un film, identifié par idfilm. Idfilm est une clé étrangère sur FILMS. L’attribut ‘subventionne’ indique si le film a bénéficé de subventions. Il peut prendre les valeurs ‘oui’ ou ‘non’. La durée du court-métrage est mémorisée en minutes. Un court-métrage ne peut excéder 59 minutes.
ACTEURS (idacteur, nomacteur) : un acteur est décrit de manière unique par un identifiant (entier, clé de la relation) et un nom
DISTRIBUTIONS (idFilm, idActeur, rang) : un acteur peut jouer un rôle dans zéro ou plusieurs films et un film a zéro ou plusieurs acteurs dans sa distribution. L'attribut rang indique le statut de l'acteur dans le film (rang=1 indique que l'acteur est la vedette du film). Le couple (idActeur, idFilm) est la clé de la relation DISTRIBUTIONS. idActeur est une clé étrangère sur ACTEURS et idFilm est une clé étrangère sur FILMS.
CINEMAS(nomCine, tel, adresse) : un cinéma est identifié par son nom (clé de la relation). Il possède une adresse et un téléphone.
CINESALLES(nomCine, noSalle, nbplaces) : une salle est identifiée par son numéro au sein d'un cinéma (nomCine clé étrangère sur CINEMA). Elle possède un nombre de place maximum (entier de 0 à 3000).
PROGRAMMES(nomCine, noSalle, semaine, heureDebut, IdFilm, nbEntreesCumulees) : dans une salle donnée (dans un cinéma donné donc - nomCine, noSalle clé étrangère sur CINESALLES), pour une séance donnée (semaine, heureDebut), il n'est programmé qu'un seul film (idFilm clé étrangère sur FILM). Le nombre d'entrées total de la séance pour cette semaine est mémorisé dans nbEntreesCumulees.
CRITIQUES(idCritique, nomCritique) : un critique de cinéma (i.e. la personne dont le métier est d'être critique) est identifié par un numéro (numCritique, entier, clé de la relation) et possède un nom
AVIS(numCritique, idFilm, note, commentaire) : un critique de cinéma (numCritique clé étrangère sur CRITIQUES) émet un avis sur un film (idFilm clé étrangère sur FILMS). Un critique de cinéma peut emettre au plus un avis sur un film donné. Un critique de cinéma peut emettre de 0 à n avis (sur des films différents donc). Un film peut avoir reçu de 0 à n avis par les critiques de cinéma. L'avis est donné sour la forme d'une note (décimal de 0 à 10) et d'un commentaire.
CLIENTS(idClient,nomClient) : un client possède un identifiant et est caractérisé par un nom.
BILLETS(noBillet, nomCine, salle, semaine, heureDebut, jour, idClient) : un billet réservé à l'avance est identifié par un numéro de billet (entier, clé de la relation). La réservation concerne une "programmation" précise, à savoir une salle de cinéma donné à une séance donnée (nomCine, noSalle, semaine, heureDebut clé étrangère sur PROGRAMMES) et précise le jour de la semaine effectif de la réservation ("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"). Afin de pouvoir retirer le billet en toute sécurité, l'identifiant du client est aussi mémorisé (idClient clé étrangère sur CLIENTS).
En vous aidant des règles de passage d'une modélisation Entité/association à une modélisation relationnelle "à l'envers", proposer un schéma Entité/Association équivalent à ce schéma relationnel. Ce schéma devra comporter la description des entités (avec leurs propriétés), des associations (avec leurs propriétés) ainsi que les cardinalités minimum et maximum des associations binaires.
Comment faire ? appliquer "à l'envers" les étapes de transformation vues en cours
En pratique :
Donner les principales contraintes d'intégrité associées à ce schéma (en français). On pourra distinguer entre les divers types de contraintes (mono-relation ou multi-relations, statiques ou dynamiques, ...).
En pratique :
Que faire des autres contraintes (exprimées en français mais non supportées en SQL) ?
On suppose que 2 classes d'utilisateurs ont accès à tout ou partie de ce schéma relationnel. L'administrateur de la base, qui initialise la base et donne notamment en régulièrement toutes les programmations de films.
Et les clients potentiels qui peuvent consulter la base pour
Définir les vues et les droits associés à chaque classe d'utilisateur.
En pratique :
GRANT { SELECT | INSERT | UPDATE | DELETE | ALL }
ON { nom_table | nom_vue | ALL TABLES IN SCHEMA schema_name }
TO nom_utilisateur [ WITH GRANT OPTION ]
DOCUMENTAIRES(idfilm, sujet) : un documentaire est un film, identifié par idfilm. Idfilm est une clé étrangère sur FILMS. L’attribut sujet donne le type de sujet traité dans le documentaire : ‘Animalier, ‘Historique’, ‘Voyage’, ‘Société’, ‘Animation’.
COURTMETRAGES(idfilm, subventionne, duree) : un court-métrage est un film, identifié par idfilm. Idfilm est une clé étrangère sur FILMS. L’attribut ‘subventionne’ indique si le film a bénéficé de subventions. Il peut prendre les valeurs ‘oui’ ou ‘non’. La durée du court-métrage est mémorisée en minutes. Un court-métrage ne peut excéder 59 minutes.