IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

des difficultés pour comprendre une requête


Sujet :

Schéma

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut des difficultés pour comprendre une requête
    Bonjour,

    je cherche à comprendre le corrigé d'une requête mais je ne retombe pas sur les mêmes conclusions que celles du corrigé.

    Je vous expose le problème:

    on considère les 2 relations suivantes:

    LESFILMS(TITRE,PAYS,ANNEE,REALISATEUR,DUREE)
    LESACTEURS(TITRE,ACTEUR)

    La requête est la suivante: réalisateurs qui ne jouent pas dans un de leurs propres films.

    RES1:= projection(réalisateur; LESFILMS) intersection projection(acteur;LESACTEURS).

    RES1 donne les réalisateurs/acteurs.

    RES2:= projection(LESFILMS.réalisateur; sélection(acteur=réalisateur; jointure(LESFILMS.titre=LESACTEURS.titre; LESFILMS; LESACTEURS))

    RES2 donne les réalisateurs qui sont acteurs dans leurs propres films.

    Et là, je ne saisis pas:
    RES:= RES1-RES2

    Et il est dit que cela donne les réalisateurs qui ne jouent pas dans un de leurs propres films.

    Ce que je ne saisis pas, c'est que si l'on considère que RES1 = ABCD et RES2 = ABE, RES1 - RES 2 = CD, soit ce que l'on trouve dans RES1 que l'on ne retrouve pas dans RES2.

    Du coup, sauf si ma logique est erronée, si l'on a:
    - RES1 = tous les réalisateurs qui sont aussi acteurs. 3 possibilités: ils ont réalisé des films sans jouer dedans, ils ont joué dans des films sans les réaliser, ou ils ont réalisé et joué dans tout ou partie de leurs films.
    - RES2 = tous les réalisateurs qui sont acteurs dans leurs propres films,
    - RES1 - RES2, on obtient les réalisateurs qui ont joué dans au moins 1 de leurs propres films, ceux qui ont joué dans des films sans y jouer et ceux qui ont joué dans des films sans les réaliser.

    Êtes-vous d'accord?

    Je débute, donc peut-être comprends-je mal tout cela.

    Merci par avance pour ceux qui m'éclaireront,
    John

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir John,


    Citation Envoyé par johnny3
    sauf si ma logique est erronée, si l'on a:
    - RES1 = tous les réalisateurs qui sont aussi acteurs. 3 possibilités: ils ont réalisé des films sans jouer dedans, ils ont joué dans des films sans les réaliser, ou ils ont réalisé et joué dans tout ou partie de leurs films.
    - RES2 = tous les réalisateurs qui sont acteurs dans leurs propres films,
    - RES1 - RES2, on obtient les réalisateurs qui ont joué dans au moins 1 de leurs propres films, ceux qui ont joué dans des films sans y jouer et ceux qui ont joué dans des films sans les réaliser.
    Êtes-vous d'accord?
    Pas précisément.

    Je n’ai pas le mode d’emploi pour la lecture de vos expressions, du genre :
    projection(LESFILMS.réalisateur; sélection(acteur=réalisateur; jointure(LESFILMS.titre LESACTEURS.titre; LESFILMS; LESACTEURS))
    Mais peu importe. Soit RESx l’ensemble des réalisateurs qui n’ont jamais joué dans un de leurs propres films.

    Considérons le cas de Roger qui a réalisé le film "Johnny transpire" mais qui n’a jamais été acteur (tant dans ses propres films que dans ceux des autres),
    donc Roger est un élément de RESx.

    Vous dites que RES1 est l’ensemble des réalisateurs qui sont aussi acteurs :

    Roger n’est donc pas élément de RES1 et par conséquent de RES1 - RES2.

    Roger étant élément de RESx, RES1 - RES 2 n’est pas égal à RESx.

    La formule permettant de produire RES1 est manifestement à revoir.


    En notation Tutorial D, voici comment on peut écrire la chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    WITH
        LESFILMS {Réalisateur, Titre} AS P1, 
        LESACTEURS {Acteur, Titre} AS P2,            
        (P2 RENAME Acteur AS Réalisateur) AS P3,
        (P1 MINUS P3) {Réalisateur} AS RES1 : RES1
    Explications :

    WITH est un mot-clé permettant de déclarer une liste d’opérations relationnelles (séparées par des virgules) et dont l’objet est de faciliter la rédaction et la lecture d’expressions complexes.

    1) L’expression
    LESFILMS {Réalisateur, Titre} AS P1
    correspond à l’opération suivante :
    Projection de la relation LESFILMS sur les attributs Réalisateur et Titre ; le résultat est une relation appelée P1.
    2) L’expression
    LESACTEURS {Acteur, Titre} AS P2
    correspond à l’opération suivante :
    Projection de la relation LESACTEURS sur les attributs Acteur et Titre ; le résultat est une relation appelée P2.
    3) L’expression
    P2 RENAME Acteur AS Réalisateur
    correspond à l’opération suivante :
    Changer le nom de l’attribut Acteur de la relation P2 en Réalisateur ; le résultat (au moins conceptuellement parlant) est une relation appelée P3.
    Ce changement de nom est nécessaire, à cause de l’opération de différence qui suit, car en Tutorial D, les relations opérandes des opérateurs relationnels UNION, INTERSECT, MINUS doivent être du même type, ce qui signifie que leurs attributs doivent avoir le même nom et être du même type.

    4) L’expression
    (P1 MINUS P3) {Réalisateur}
    correspond au couple d’opérations suivantes :
    Différence entre P1 et P3 puis projection du résultat sur l’attribut Réalisateur pour obtenir finalement RES1.

    Exemple :

    René a réalisé "Zorro arrive" sans y jouer, il a réalisé "La fête chez DVP" et il y a joué. Il a joué dans "Les rois du sport" qu’il n’a pas réalisé.

    Raoul a réalisé "Les rois du sport" sans y jouer et il a joué dans "Johnny transpire" qu’il n’a pas réalisé.

    Roger a réalisé "Johnny transpire" et n’a joué dans rien du tout.

    Robert a réalisé "DVP en délire" et il y a joué.

    Berthe a joué dans "La fête chez DVP" mais n’a rien réalisé.

    P1 contient les tuples suivants :
    <René, Zorro arrive>
    <René, La fête chez DVP>
    <Raoul, Les rois du sport>
    <Roger, Johnny transpire>
    <Robert, DVP en délire>
    P2 et P3 contiennent les tuples suivants :
    <René, La fête chez DVP>
    <René, Les rois du sport>
    <Raoul, Johnny transpire>
    <Robert, DVP en délire>
    <Berthe, La fête chez DVP>

    P1 MINUS P3 donne :
    <René, Zorro arrive>
    <Raoul, Les rois du sport>
    <Roger, Johnny transpire>
    La projection sur l’attribut réalisateur donne RES1 :
    <René>
    <Raoul>
    <Roger>
    Intervient RES2 qui correspond à une projection sur l’attribut Réalisateur de la jointure naturelle des relations LESFILMS et LESACTEURS et qui permet de connaître les réalisateurs qui ont joué dans les films qu’ils ont réalisés :
    <René>
    <Robert>
    RES1 MINUS RES2 donne :
    <Raoul>
    <Roger>
    Raoul et Roger n'ont pas joué dans leurs propres films, mais ils ont pu jouer dans les films qu'ils n'ont pas réalisés.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut
    Bonjour;

    je viens de lire attentivement votre explication qui m'a éclairé.

    Mais du coup, on obtient des réalisateurs qui n'ont pas joué dans leur propre films mais dans ceux d'autres réalisateurs et, ce qui est difficile, je trouve, est que l'on demande le nom des réalisateurs qui ne jouent pas dans un de leurs propres films.

    Dans "au moins un" de leurs propres films, j'aurais compris, mais dans 1 et 1 seul, je trouve cela pas évident comme résultat. Comment faire pour parvenir à cette restriction?

    Merci encore pour vos explications claires, elles m'aident en ce démarrage sur les bases de données.

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir John,


    Citation Envoyé par johnny3
    on obtient des réalisateurs qui n'ont pas joué dans leur propre films mais dans ceux d'autres réalisateurs
    Il n’est pas fait mention de restrictions quant à la participation en tant qu'acteurs des réalisateurs aux films de leurs confrères. Vous vous trouvez dans la situation des informaticiens qui sont obligés de préciser les règles du jeu à la maîtrise d’ouvrage, quand ces règles sont ambiguës, contradictoires, incomplètes, redondantes, etc. Dans la réalité des entreprises, un pourcentage non négligeable de ces règles est à revoir, c'est-à-dire qu’il est prudent de ne pas commencer à développer quoi que ce soit, tant que tout ce qui est important n’est pas fixé. Surtout quand en plus les utilisateurs ne sont pas d’accord entre eux et que nous devons arbitrer...
    Dans le cas présent, on va dire qu’un réalisateur peut jouer dans des films réalisés par ses copains.

    Citation Envoyé par johnny3
    Dans "au moins un" de leurs propres films, j'aurais compris, mais dans 1 et 1 seul, je trouve cela pas évident comme résultat
    A mon avis, "des réalisateurs qui ne jouent pas dans un de leurs propres films" est un raccourci pour "au moins un".
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    Bonsoir John,



    Il n’est pas fait mention de restrictions quant à la participation en tant qu'acteurs des réalisateurs aux films de leurs confrères. Vous vous trouvez dans la situation des informaticiens qui sont obligés de préciser les règles du jeu à la maîtrise d’ouvrage, quand ces règles sont ambiguës, contradictoires, incomplètes, redondantes, etc. Dans la réalité des entreprises, un pourcentage non négligeable de ces règles est à revoir, c'est-à-dire qu’il est prudent de ne pas commencer à développer quoi que ce soit, tant que tout ce qui est important n’est pas fixé. Surtout quand en plus les utilisateurs ne sont pas d’accord entre eux et que nous devons arbitrer...
    Dans le cas présent, on va dire qu’un réalisateur peut jouer dans des films réalisés par ses copains.


    A mon avis, "des réalisateurs qui ne jouent pas dans un de leurs propres films" est un raccourci pour "au moins un".
    Merci, c'est à présent clair!

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Petit lapsus de ma part, je ne voulais pas écrire :
    des informaticiens qui sont obligés de préciser les règles du jeu
    mais :
    des informaticiens qui sont obligés de se faire préciser les règles du jeu
    Mais après tout...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/10/2014, 15h11
  2. Difficulté pour batir une requête simple
    Par pierre50 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 18/11/2013, 11h08
  3. Réponses: 2
    Dernier message: 05/09/2012, 11h51
  4. [AC-2003] Difficulté pour faire une requête
    Par ouinih dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 15/02/2012, 19h09
  5. Besoin d'aide pour comprendre une requête SQL
    Par MAXJEREM dans le forum SQL
    Réponses: 0
    Dernier message: 12/04/2011, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo