Question à propos de l'interrogation des données

Cette formation présente les fondements des bases de données relationnelles et enseigne l’écriture de requêtes SQL.

Modérateurs : Équipe sillages.info, Benjamin NGUYEN

COLELLA
Messages : 9
Enregistré le : jeu. 9 août 2018 07:07

Question à propos de l'interrogation des données

Messagepar COLELLA » mer. 15 août 2018 11:55

Bonjour,

J'ai plusieurs questions à propos de l'interrogation des données.

1 - Dans le premier exemple de ce chapitre (séquence 4), nommé "nom et prénom des acteurs" on a :

SELECT Nom Prénom
FROM Acteurs ;

Algèbre :

π (Nom, Prénom) (ACTEURS)

Pourquoi la réponse n'est-elle pas : π (Nom, Prénom) (FILM) ? Dans l'exemple du départ, la table "Acteurs" n'existe pas.

2 - Dans le deuxième exemple, nommé "Directeur du film 42" , on a :

Table de référence : idfilm, titre, directeur, année, titre_vo


SELECT Directeur
FROM film f
WHERE f.idfilm=42

Je ne comprends pas pourquoi il est écrit film f dans la ligne FROM. Normalement, c'est une table qui est nommée ici, et dans ce cas, j'ai l'impression que l'on nomme une variable f. Je ne comprends pas pourquoi on introduit f ici, alors que ce type de pratique n'apparaît jamais dans les autres exercices.
Je ne comprends pas non plus pourquoi dans la clause WHERE (où les conditions apparaissent), il est écrit f.film, alors que d'habitude ce n'est pas le cas. Quelle est la nature de f.film exactement ?


3 - Dans le troisième exemple, nommé "Titre d'un film avec la liste des identifiants de ses acteurs", on a :

SELECT f.titre AS titre, jd.idacteur AS id
FROM film f JOIN jouedans jd ON f.idfilm = jd.idfilm;

Je ne comprends pas quelle est la table de référence, car lavable "jouedans" apparaît, et elle n'existe pas dans la table annoncée en début de séquence (qui comportait : idfilm, titre, directeur, année, titre_vo).
Même question que précédemment concernant jd.idfilm et jd.idacteur.

4 - Dans le quatrième exemple, nommé "Titre des films datant d'avant 2000", on a :

SELECT titre FROM film
WHERE annee < 2000;

Algèbre :

πtitre (σ annee<2000 (FILM))

Calcul:

res = {titre, directeur ׀ ∃(idfilm, année), FILM(iddilm, titre, directeur, année, ^(année<2000) }


Aurait-on pu indiquer " ∃(x (idfilm), x (année))" comme il a été montré dans les exemples du cours ?

5 - Dans le cinquième exemple, nommé : "Titre et directeur des films produits entre 2003 et 2013 dont le titre commence par 'L'", on a :

SELECT titre, directeur FROM film
WHERE annee BETWEEN 2003 AND 2013
AND titre LIKE 'L%';

πtitre, directeur (σ annee> 2013 ^annee<2000 ^titre like 'L%' (FILM))

Ne serait-ce pas plutôt : πtitre, directeur (σ annee<2013 ^annee>2000 ^titre like 'L%' (FILM)) ?

De plus, dans le calcul, on a :

res = {titre, directeur ׀ ∃(idfilm, année), FILM(iddilm, titre, directeur, année, ^(année>2000) ^(annee<2013) }

Pourquoi dans l'expression : "∃(idfilm, année)" n'a-t-on pas plutôt "∃(idfilm, année, titre_vo)" ? Pourquoi l'expression "titre like 'L%' " n'apparait-elle pas dans le calcul ?

Je vous remercie par avance et reste à votre écoute,

Salutations respectueuses,

Anna Colella

Astrid Allemandou
Messages : 12
Enregistré le : sam. 22 déc. 2018 15:21

Re: Question à propos de l'interrogation des données

Messagepar Astrid Allemandou » dim. 30 déc. 2018 19:46

1- Il faut bien avoir suivi la partie DDL où, en vérité, on a créé trois tables pour FILM : une table Film, une table Acteur et une table Jouedans. Cela a permis d'avoir une table Film avec une seule ligne par film (et donc idfilm en clé primaire).

2- Je pense que renommer "f" permet juste d'aller plus vite dans l'écriture, d'être plus compréhensible à la lecture.
Je pense aussi qu'on aurait pu juste écrire idfilm=42. Mais on nous introduit la méthode à adopter pour quand il y aura plusieurs tables et qu'il faudra préciser de l'attribut de quelle table on parle.

3- Voir 1-

4- Oui (moi je marque x_i, x_t...)

5- Il y a pas mal d'erreurs là je pense, je me suis fait les mêmes remarques. Mais on comprend le principe :)


Retourner vers « Bases de données relationnelles »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité