Advertisement
Guest User

Untitled

a guest
Oct 9th, 2016
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 57.50 KB | None | 0 0
  1. /*
  2. -- =========================================================================== A
  3. Activité : IFT187
  4. Trimestre : 2016-3
  5. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  6. Plateforme : PostgreSQL 9.5.1
  7. Responsable : Luc.Lavoie@USherbrooke.ca
  8. Version : 0.1.3a
  9. Statut : en vigueur
  10. Résumé : Création des tables du schéma Films (boutique de films en ligne).
  11. -- =========================================================================== A
  12. */
  13. /*
  14. -- =========================================================================== B
  15. Modélisation du schéma
  16. ~~~~~~~~~~~~~~~~~~~~~~
  17. La présente modélisation découle du document de vision [ddv].
  18.  
  19. ** Pays d'origine
  20. Le pays d'origine d'un film est un attribut fréquemment utilisé, mais flou.
  21. D'une part, les co-productions se multiplient et d'autre part la base sur
  22. laquelle les «pays d'origine» sont établis varie beaucoup : est-ce la
  23. nationalité du réalisateur, du producteur, du scénariste, des principaux
  24. comédiens, des principaux bailleurs de fonds, des studios ? Pour cette raison,
  25. il a été jugé préférable de ne pas modéliser cet attribut pour les films, mais
  26. plutot de permettre de le définir sur la base des nationalités des autres
  27. entités qui llui sont associés.
  28.  
  29. ** Version originale, doublage et sous-titrage
  30. Dans le contexte d'une boutique en ligne qui diffusera ou offrira le téléchargement
  31. de la copie demandée, il faut prendre soin de ne pas «imposer» les contraintes
  32. des supports physiques utilisés autrefois (cassette, CD, DVD, BR).
  33.  
  34. Par exemple, à l’époque des supports physiques, les versions disponibles dans
  35. le commerce comprenaient des collections de doublages et de sous-titres pré-établis
  36. en fonction de l’aire de distribution. Il était souvent difficile de trouver
  37. des oeuvres doublées ou sous-titrées en allemand au Québec, alors qu'elles étaient
  38. généralement disponibles en Europe centrale.
  39.  
  40. Compte tenu de la nature des produits de notre boutique et du mode
  41. d'acheminement proposé (diffusion ou téléversement), on pourrait espérer que
  42. le client puisse commander une version avec les langues doublées et les langues
  43. sous-titrées de son choix.
  44.  
  45. Par exemple, je commande «Pirates des Caraïbes» en anglais américain, doublé
  46. en français québécois, mais sous-titré en arabe (parce que la version doublée
  47. n’est pas disponible). En résumé, je choisis ce que je veux (dans ce qui est
  48. disponible) et on me le livre.
  49.  
  50. Notes de mise en oeuvre
  51. ~~~~~~~~~~~~~~~~~~~~~~~
  52. Les clés artificielles sont généralement représentées par CHAR(n) où n a été
  53. choisi en fonction de la cardinalité pressentie des données d'essai.
  54. Par ailleurs, le caractère initial de la clé sera une lettre (majuscule)
  55. permettant de rappeler la nature de l'entité représentée (F pour film,
  56. A pour artisan, etc.). Dans une BD plus réaliste, ces clés seraient
  57. vraisemblablement représentées à l'aide d'une séquence obtenue par un type
  58. spécialisé (serial) ou un séquenceur.
  59.  
  60. On pourrait présumer que les codes internationaux des pays et des langues sont
  61. si fréquemment utilisés qu'un schéma du SGBD les contient déjà, au bénéfice
  62. des autres schémas. Dans le cadre du présent exercice, et pour rendre l'exemple
  63. autonome, nous les avons redéfinies localement. Leur initialisation utilisera
  64. toutefois des tables existantes dont le contenu est conforme aux normes ISO.
  65.  
  66. -- =========================================================================== B
  67. */
  68.  
  69. /**
  70.  * Un pays est identifié par le code ISO 3166-1 "idPays" et porte le nom français "pays".
  71.  * Le code à deux lettres a été retenu (il existe des codes à trois lettres).
  72.  * Par convention, les codes de pays sont en lettres majuscules.
  73.  * Source : http://www.iso.org/iso/fr/french_country_names_and_code_elements#y.
  74.  */
  75. CREATE TABLE Pays
  76. (
  77.   idPays CHAR(2) NOT NULL,
  78.   pays VARCHAR(60) NOT NULL,
  79.   CONSTRAINT Pays_cc0 PRIMARY KEY (idPays),
  80.   CONSTRAINT Pays_cc1 UNIQUE (pays),
  81.   CONSTRAINT Pays_id CHECK (idPays SIMILAR TO '[A-Z]{2}'),
  82.   CONSTRAINT Pays_nom CHECK (LENGTH(pays) > 0)
  83. );
  84.  
  85. /**
  86.  * La langue identifiée par le code ISO 639-1 "idLangue" porte le nom français "langue".
  87.  * Le code à deux lettres a été retenu (il existe des codes à trois lettres).
  88.  * Par convention, les codes de langue sont en lettres minuscules.
  89.  * Source : https://www.loc.gov/standards/iso639-2/php/code_list.php
  90.  */
  91. CREATE TABLE Langue
  92. (
  93.   idLangue CHAR(2) NOT NULL,
  94.   langue VARCHAR(80) NOT NULL,
  95.   CONSTRAINT Langue_cc0 PRIMARY KEY (idLangue),
  96.   CONSTRAINT Langue_cc1 UNIQUE (langue),
  97.   CONSTRAINT Langue_id CHECK (idLangue SIMILAR TO '[a-z]{2}'),
  98.   CONSTRAINT Langue_description CHECK (LENGTH(langue) > 0)
  99. );
  100.  
  101. /**
  102.  * Le film identifié par "idFilm" porte le titre "titre", est sorti en
  103.  * version (langue) originale "vo" au cours de l'année "parution" et a une durée
  104.  * de "duree" (en secondes).
  105.  */
  106. CREATE TABLE Film
  107. (
  108.   idFilm CHAR(4) NOT NULL,
  109.   titre VARCHAR(120) NOT NULL,
  110.   vo CHAR(2) NOT NULL,
  111.   parution NUMERIC(4) NOT NULL,
  112.   duree NUMERIC(6) NOT NULL,
  113.   CONSTRAINT Film_cc0 PRIMARY KEY (idFilm),
  114.   CONSTRAINT Film_ce0 FOREIGN KEY (vo) REFERENCES Langue (idLangue),
  115.   CONSTRAINT Film_id CHECK (idFilm SIMILAR TO 'F[0-9]{3}'),
  116.   CONSTRAINT Film_titre CHECK (LENGTH(titre) > 0),
  117.   CONSTRAINT Film_parution CHECK (parution > 1870),
  118.   CONSTRAINT Film_duree CHECK (duree>0)
  119. ) ;
  120.  
  121. /**
  122.  * Le film "idFilm" est disponible en la langue "idLangue" selon le mode "mode".
  123.  * Il y a deux modes : 'D' pour doublé et 'S' pour sous-titré.
  124.  */
  125. CREATE TABLE VersionDisponible
  126. (
  127.   idFilm CHAR(4) NOT NULL,
  128.   idLangue CHAR(2) NOT NULL,
  129.   mode CHAR(1) NOT NULL,
  130.   CONSTRAINT VersionDisponible_cc0 PRIMARY KEY (idFilm, idLangue, mode),
  131.   CONSTRAINT VersionDisponible_ce0 FOREIGN KEY (idFilm) REFERENCES Film,
  132.   CONSTRAINT VersionDisponible_ce1 FOREIGN KEY (idLangue) REFERENCES Langue,
  133.   CONSTRAINT VersionDisponible_mode CHECK (mode IN ('D', 'S'))
  134. );
  135.  
  136. /**
  137.  * Le genre cinématographique  identifié par "idGenre" porte le nom français "genre".
  138.  * Source : https://fr.wikipedia.org/wiki/Genre_cinématographique *** trouver mieux!
  139.  */
  140. CREATE TABLE Genre
  141. (
  142.   idGenre CHAR(4)  NOT NULL,
  143.   genre VARCHAR(40) NOT NULL,
  144.   CONSTRAINT Genre_cc0 PRIMARY KEY (idGenre),
  145.   CONSTRAINT Genre_cc1 UNIQUE (genre),
  146.   CONSTRAINT Genre_id CHECK (idGenre SIMILAR TO 'G[0-9]{3}'),
  147.   CONSTRAINT Genre_genre CHECK (LENGTH(genre) > 0)
  148. );
  149.  
  150. /**
  151.  * Le film "idFilm" appartient au genre idGenre; un film peut appartenir à plus d'une genre.
  152.  */
  153. CREATE TABLE FilmGenre
  154. (
  155.   idFilm CHAR(4) NOT NULL,
  156.   idGenre CHAR(4) NOT NULL,
  157.   CONSTRAINT FilmGenre_cc0 PRIMARY KEY (idFilm, idGenre),
  158.   CONSTRAINT FilmGenre_ce0 FOREIGN KEY (idFilm) REFERENCES Film,
  159.   CONSTRAINT FilmGenre_ce1 FOREIGN KEY (idGenre) REFERENCES Genre
  160. );
  161.  
  162. /**
  163.  * Le studio identifié par "idStudio" porte le nom "studio" et est localisé à "localisation".
  164.  */
  165. CREATE TABLE Studio
  166. (
  167.   idStudio CHAR(4) NOT NULL,
  168.   studio VARCHAR(60) NOT NULL,
  169.   localisation CHAR(2) NOT NULL,
  170.   CONSTRAINT Studio_cc0 PRIMARY KEY (idStudio),
  171.   CONSTRAINT Studio_cc1 UNIQUE(studio,localisation),
  172.   CONSTRAINT Studio_ce0 FOREIGN KEY (localisation) REFERENCES Pays(idPays),
  173.   CONSTRAINT Studio_id CHECK (idStudio SIMILAR TO 'S[0-9]{3}'),
  174.   CONSTRAINT Studio_nom CHECK (LENGTH(studio) > 0)
  175. );
  176.  
  177. /**
  178.  * Le film "idFilm" est principalement produit par le studio "idStudio"
  179.  */
  180. CREATE TABLE Production
  181. (
  182.   idFilm CHAR(4) NOT NULL,
  183.   idStudio CHAR(4) NOT NULL,
  184.   CONSTRAINT Production_cc0 PRIMARY KEY (idFilm, idStudio),
  185.   CONSTRAINT Production_ce0 FOREIGN KEY (idFilm) REFERENCES Film,
  186.   CONSTRAINT Production_ce1 FOREIGN KEY (idStudio) REFERENCES Studio
  187. );
  188.  
  189. /**
  190.  * L'artisan identifié par "idArtisan", de sexe "sexe", porte le nom "nom" et le prénom "prénom".
  191.  */
  192. CREATE TABLE Artisan
  193. (
  194.   idArtisan CHAR(4) NOT NULL,
  195.   nom VARCHAR(30) NOT NULL,
  196.   prenom VARCHAR(30) NOT NULL,
  197.   sexe CHAR (1) NOT NULL,
  198.   CONSTRAINT Artisan_cc0 PRIMARY KEY (idArtisan),
  199.   CONSTRAINT Artisan_id CHECK (idArtisan SIMILAR TO 'A[0-9]{3}'),
  200.   CONSTRAINT Artisan_sexe CHECK (sexe IN ('F', 'M', 'I')),
  201.   CONSTRAINT Artisan_nom CHECK (LENGTH(nom) > 0),
  202.   CONSTRAINT Artisan_prenom CHECK (LENGTH(prenom) > 0)
  203. );
  204.  
  205. /**
  206.  * L'artisan "idArtisan" est né le "naissance".
  207.  */
  208. CREATE TABLE Naissance
  209. (
  210.   idArtisan CHAR(4) NOT NULL,
  211.   naissance DATE NOT NULL,
  212.   CONSTRAINT Naissance_cc0 PRIMARY KEY (idArtisan),
  213.   CONSTRAINT Naissance_ce0 FOREIGN KEY (idArtisan) REFERENCES Artisan,
  214.   CONSTRAINT Naissance_naissance CHECK (EXTRACT(YEAR FROM naissance) > 1770)
  215. );
  216.  
  217. /**
  218.  * L'artisan "idArtisan" est décédé le "deces".
  219.  */
  220. CREATE TABLE Deces
  221. (
  222.   idArtisan CHAR(4) NOT NULL,
  223.   deces DATE NOT NULL,
  224.   CONSTRAINT Deces_cc0 PRIMARY KEY (idArtisan),
  225.   CONSTRAINT Deces_ce0 FOREIGN KEY (idArtisan) REFERENCES Artisan,
  226.   CONSTRAINT Deces_deces CHECK (EXTRACT(YEAR FROM deces) > 1870)
  227. );
  228.  
  229. /**
  230.  * L'artisan "idArtisan" est notationalité "nationalite"; il peut en cumuler plusieurs.
  231.  */
  232. CREATE TABLE Nationalite
  233. (
  234.   idArtisan CHAR(4) NOT NULL,
  235.   nationalite CHAR(2) NOT NULL,
  236.   CONSTRAINT Nationalite_cc0 PRIMARY KEY (idArtisan,nationalite),
  237.   CONSTRAINT Nationalite_ce0 FOREIGN KEY (idArtisan) REFERENCES Artisan,
  238.   CONSTRAINT Nationalite_ce1 FOREIGN KEY (nationalite) REFERENCES Pays(idPays)
  239. );
  240.  
  241. /**
  242.  * Le poste identifié par "idPoste" porte le nom français "poste".
  243.  */
  244. CREATE TABLE Poste
  245. (
  246.   idPoste CHAR(4) NOT NULL,
  247.   poste VARCHAR(40) NOT NULL,
  248.   CONSTRAINT Poste_cc0 PRIMARY KEY (idPoste),
  249.   CONSTRAINT Poste_id CHECK (idPoste SIMILAR TO 'P[0-9]{3}'),
  250.   CONSTRAINT Poste_poste CHECK (LENGTH(poste) > 0)
  251. );
  252.  
  253. /**
  254.  * L'artisan "idArtisan" occupe le poste "idPoste" dans le film "idFilm".
  255.  */
  256. CREATE TABLE Participation
  257. (
  258.   idArtisan CHAR(4) NOT NULL,
  259.   idPoste CHAR(4) NOT NULL,
  260.   idFilm CHAR(4) NOT NULL,
  261.   CONSTRAINT Participation_cc0 PRIMARY KEY (idArtisan, idPoste, idFilm),
  262.   CONSTRAINT Participation_ce0 FOREIGN KEY (idArtisan) REFERENCES Artisan,
  263.   CONSTRAINT Participation_ce1 FOREIGN KEY (idPoste) REFERENCES Poste,
  264.   CONSTRAINT Participation_ce2 FOREIGN KEY (idFilm) REFERENCES Film
  265. );
  266.  
  267. /**
  268.  * Une recette du film "idFilm" à l'année "annee" est de "revenu" USD.
  269.  */
  270. CREATE TABLE Recette
  271. (
  272.   idFilm CHAR(4) NOT NULL,
  273.   annee NUMERIC(4) NOT NULL,
  274.   revenu NUMERIC(9) NOT NULL,
  275.   CONSTRAINT Recette_cc0 PRIMARY KEY (idFilm, annee),
  276.   CONSTRAINT Recette_ce0 FOREIGN KEY (idFilm) REFERENCES Film,
  277.   CONSTRAINT Recette_annee CHECK (annee > 1870),                -- on pourrait faire mieux, comment ?
  278.   CONSTRAINT Recette_revenu CHECK (revenu >= 0)
  279. );
  280.  
  281. /*
  282. -- =========================================================================== Z
  283. Contributeurs :
  284.   (CK) Christina.Khnaisser@USherbrooke.ca,
  285.   (LL) Luc.Lavoie@USherbrooke.ca
  286.  
  287. Adresse, droits d'auteur et copyright :
  288.   Groupe Metis
  289.   Département d'informatique
  290.   Faculté des sciences
  291.   Université de Sherbrooke
  292.   Sherbrooke (Québec)  J1K 2R1
  293.   Canada
  294.   http://info.usherbrooke.ca/llavoie/
  295.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  296.  
  297. Tâches projetées :
  298.   NIL
  299.  
  300. Tâches réalisées :
  301.   2016-09-18 (LL) : Retrait du pays d'origine du film.
  302.   2016-09-17 (LL) : Ajout des versions sous-titrées.
  303.   2016-09-16 (CK) : Création
  304.  
  305. Références :
  306. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  307.  
  308. -- -----------------------------------------------------------------------------
  309. -- fin de Exemples/Films/Films_cre.sql
  310. -- =========================================================================== Z
  311. */
  312.  
  313. /*
  314. -- =========================================================================== A
  315. Activité : IFT187
  316. Trimestre : 2016-3
  317. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  318. Plateforme : PostgreSQL 9.5.1
  319. Responsable : Luc.Lavoie@USherbrooke.ca
  320. Version : 0.1.0b
  321. Statut : en vigueur
  322. Résumé : Destruction des tables du schéma.
  323. -- =========================================================================== A
  324. */
  325.  
  326. /*
  327. -- =========================================================================== B
  328. Destruction des tables du schéma correspondant au problème de boutique en ligne
  329. de films. Pour plus d'information, voir Films_cre.sql
  330.  
  331. Notes de mise en oeuvre
  332. (a) aucune.
  333. -- =========================================================================== B
  334. */
  335.  
  336. DELETE FROM FilmGenre;
  337. DELETE FROM Production;
  338. DELETE FROM Deces;
  339. DELETE FROM Naissance;
  340. DELETE FROM Nationalite;
  341. DELETE FROM Participation;
  342. DELETE FROM Artisan;
  343. DELETE FROM Recette ;
  344. DELETE FROM VersionDisponible ;
  345. DELETE FROM Film ;
  346. DELETE FROM Langue;
  347. DELETE FROM Pays;
  348. DELETE FROM Genre;
  349. DELETE FROM Poste;
  350. DELETE FROM Studio;
  351.  
  352. /*
  353. -- =========================================================================== Z
  354. Contributeurs :
  355.   (CK) Christina.Khnaisser@USherbrooke.ca,
  356.   (LL) Luc.Lavoie@USherbrooke.ca
  357.  
  358. Adresse, droits d'auteur et copyright :
  359.   Groupe Metis
  360.   Département d'informatique
  361.   Faculté des sciences
  362.   Université de Sherbrooke
  363.   Sherbrooke (Québec)  J1K 2R1
  364.   Canada
  365.   http://info.usherbrooke.ca/llavoie/
  366.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  367.  
  368. Tâches projetées :
  369. NIL
  370.  
  371. Tâches réalisées :
  372. 2016-09-16 (CK) :Création
  373.  
  374. Références :
  375. [mod] http://info.usherbrooke.ca/llavoie/enseignement/Modules/
  376.  
  377. -- -----------------------------------------------------------------------------
  378. -- fin de Exemples/Evaluation/Evaluation_drop.sql
  379. -- =========================================================================== Z
  380. */
  381.  
  382. /*
  383. -- =========================================================================== A
  384. Activité : IFT187
  385. Trimestre : 2016-3
  386. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  387. Plateforme : PostgreSQL 9.5.1
  388. Responsable : Luc.Lavoie@USherbrooke.ca
  389. Version : 0.1.0b
  390. Statut : en vigueur
  391. Résumé : Destruction des tables du schéma.
  392. -- =========================================================================== A
  393. */
  394.  
  395. /*
  396. -- =========================================================================== B
  397. Destruction des tables du schéma correspondant au problème de boutique en ligne
  398. de films. Pour plus d'information, voir Films_cre.sql
  399.  
  400. Notes de mise en oeuvre
  401. (a) aucune.
  402. -- =========================================================================== B
  403. */
  404.  
  405. DROP TABLE Langue CASCADE;
  406. DROP TABLE Pays CASCADE;
  407. DROP TABLE Film CASCADE;
  408. DROP TABLE VersionDisponible CASCADE;
  409. DROP TABLE Genre CASCADE;
  410. DROP TABLE FilmGenre CASCADE;
  411. DROP TABLE Studio CASCADE;
  412. DROP TABLE Production CASCADE;
  413. DROP TABLE Artisan CASCADE;
  414. DROP TABLE Deces CASCADE;
  415. DROP TABLE Naissance CASCADE;
  416. DROP TABLE Nationalite CASCADE;
  417. DROP TABLE Poste CASCADE;
  418. DROP TABLE Participation CASCADE;
  419. DROP TABLE Recette CASCADE;
  420.  
  421.   /*
  422. -- =========================================================================== Z
  423. Contributeurs :
  424.   (CK) Christina.Khnaisser@USherbrooke.ca,
  425.   (LL) Luc.Lavoie@USherbrooke.ca
  426.  
  427. Adresse, droits d'auteur et copyright :
  428.   Groupe Metis
  429.   Département d'informatique
  430.   Faculté des sciences
  431.   Université de Sherbrooke
  432.   Sherbrooke (Québec)  J1K 2R1
  433.   Canada
  434.   http://info.usherbrooke.ca/llavoie/
  435.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  436.  
  437. Tâches projetées :
  438. NIL
  439.  
  440. Tâches réalisées :
  441. 2016-09-16 (CK) :Création
  442.  
  443. Références :
  444. [mod] http://info.usherbrooke.ca/llavoie/enseignement/Modules/
  445.  
  446. -- -----------------------------------------------------------------------------
  447. -- fin de Exemples/Evaluation/Evaluation_drop.sql
  448. -- =========================================================================== Z
  449. */
  450.  
  451. /*
  452. -- =========================================================================== A
  453. Activité : IFT187
  454. Trimestre : 2016-3
  455. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  456. Plateforme : PostgreSQL 9.5.1
  457. Responsable : Luc.Lavoie@USherbrooke.ca
  458. Version : 0.1.0b
  459. Statut : en vigueur
  460. Résumé : Insertions pour tester le bon fonctionnement de nos requêtes
  461. -- =========================================================================== A
  462. */
  463. /*
  464. -- =========================================================================== B
  465. Notes de mise en oeuvre
  466. ~~~~~~~~~~~~~~~~~~~~~~~
  467. ...
  468.  
  469. -- =========================================================================== B
  470. */
  471.  
  472. --Tests pour la requête no 1:
  473.  
  474. INSERT INTO Film (idFilm, titre, vo, parution, duree) VALUES --Insertion d'un film inventé
  475.  ('F021','Comment faire un TP un dimanche matin en 2 étapes faciles', 'fr', 2016, 2000);
  476.  
  477. INSERT INTO Participation(idArtisan, idFilm, idPoste) VALUES --Insertion de plusieurs artisans dans le film inventé pour voir si le nombre
  478.                                  --correspond bien au nombre de tuples implémentées (Ça fonctionne).
  479.  ('A000','F021','P002'),
  480.  ('A001','F021','P002'),
  481.  ('A002','F021','P002'),
  482.  ('A003','F021','P002'),
  483.  ('A004','F021','P002');
  484.  
  485. /*******************************************************************************************************************************/
  486.  
  487. --Tests pour la requête no2:
  488.  
  489. INSERT INTO Film (idFilm, titre, vo, parution, duree) VALUES --Insertion de plusieurs films sortis dans la décennie 1950 (non-utilisée
  490.                                  --initialement) pour voir si le nombre correspond bien au nombre de tuples
  491.                                  --implémentées (Ça fonctionne).
  492.  ('F022','Comment adorer faire un TP un dimanche matin en 2 étapes faciles', 'fr', 1956, 2000),
  493.  ('F023','Comment prouver que le film F022 a un titre impossible en 2 étapes faciles', 'fr', 1951, 2000),
  494.  ('F024','Comment trouver des idées de titre en 2 étapes faciles', 'fr', 1952, 2000),
  495.  ('F025','Eh bien, il faut faire comme je fais', 'fr', 1950, 2000),
  496.  ('F026','C est-à-dire des choses assez farfelues', 'fr', 1959, 2000),
  497.  ('F027','Parce que je suis clairement en manque d idée', 'fr', 1960, 2000), --Les deux dernières ne devraient pas y être
  498.  ('F028','Et que c est tout ce qui me vient en tête', 'fr', 1949, 2000);
  499.  
  500. /*******************************************************************************************************************************/
  501.  
  502. --Tests pour la requête no3:
  503.  
  504. --Ici, je n'insère rien, car maintenant que j'ai inséré 5 films dans la décennie 1950, cela devrait être
  505. --celle-ci qui comporte le plus de films. (Ça fonctionne).
  506.  
  507. /*******************************************************************************************************************************/
  508.  
  509. --Tests pour la requête no4:
  510.  
  511. INSERT INTO Artisan (idArtisan, nom, prenom, sexe) VALUES --Insertion d'artisans qui me seront utile pour le reste du fichier
  512.  ('A100', 'Lavoie', 'Luc', 'M'),
  513.  ('A102', 'Vaugeois', 'Frédéric', 'M'),
  514.  ('A103', 'Khoa', 'Patrick', 'M'),
  515.  ('A104', 'Khnaisser', 'Christina', 'M'),
  516.  ('A105', 'Codd', 'Edgar Frank', 'M'),
  517.  ('A106', 'Graton', 'Elvis', 'M'),
  518.  ('A107', 'Presley', 'Elvis', 'M');
  519.  
  520. INSERT INTO Participation (idFilm, idArtisan, idPoste) VALUES --Insertion d'artisans ayant participé à des films avec des postes qui étaient
  521.                                   --initialement inoccupés selon vos propres insertions (P001,P004 et P007 à P016)
  522.                                   --en ne laissant que P016 (doubleur) d'inoccupé, qui devrait être le seul affiché.
  523.                                   --(Ça fonctionne).
  524.  ('F021','A100','P001'),
  525.  ('F022','A100','P004'),
  526.  ('F023','A100','P007'),
  527.  ('F024','A100','P008'),
  528.  ('F025','A100','P009'),
  529.  ('F026','A100','P010'),
  530.  ('F027','A100','P011'),
  531.  ('F028','A100','P012'),
  532.  ('F021','A100','P013'),
  533.  ('F022','A100','P014'),
  534.  ('F023','A100','P015');
  535.  
  536. /*******************************************************************************************************************************/
  537.  
  538. --Tests pour la requête no5:
  539.  
  540. INSERT INTO Participation (idFilm, idArtisan, idPoste) VALUES --Insertions de plusieurs Artisans dans participations qui testeront toutes
  541.                                   --les variantes de notre requête. (Ça fonctionne).
  542.  ('F021','A102','P000'),
  543.  ('F021','A102','P003'),
  544.  ('F022','A102','P003'), --Ici, comme cet homme a été réalisateur-producteur une fois, mais qu'il n'a pas toujours produit ses films, il
  545.                      --Ne devrait pas apparaître.
  546.  ('F024','A103','P000'),
  547.  ('F025','A103','P000'), --Ici, comme cet homme n'a jamais été réalisateur, il ne devrait pas apparaître même s'il a toujours produit ses films.
  548.  
  549.  ('F026','A104','P000'),
  550.  ('F027','A104','P003'),
  551.  ('F027','A104','P000'),
  552.  ('F028','A104','P003'), --Ici, comme cette femme a été réalisatrice-productrice une fois et qu'il a produit au moins un autre film, elle
  553.              --n'a pas produit TOUS ses films, donc elle ne devrait pas apparaître.
  554.  ('F023','A105','P000'),
  555.  ('F023','A105','P003'),
  556.  ('F024','A105','P000'),
  557.  ('F024','A105','P001'),
  558.  ('F025','A105','P000'),
  559.  ('F025','A105','P001'),
  560.  ('F026','A105','P001'),
  561.  ('F026','A105','P000'); --Ici, comme cet homme a été réalisateur-producteur une fois et qu'il a produit tous ses films, il devrait apparaître.
  562.  
  563. /*******************************************************************************************************************************/
  564.  
  565. --Tests pour la requête no6:
  566.  
  567. --Ici, je n'insère rien non plus, car avec mes dernières insertion pour la requête no5, on ne devrait pas voir apparaître 'A102' car il n'a eu
  568. --que deux postes sur un seul des deux films dans lequel il a joué. On ne devrait pas voir 'A103', car il n'a jamais eu deux postes dans les films
  569. --auxquels il a participé. On ne devrait pas voir 'A104', car elle n'a eu deux postes que sur un film sur les trois auxquels elle a participé.
  570. --Finalement, on devrait voir apparaître 'A105', car il a toujours eu deux postes dans les films pour lesquels il a joué. (Ça fonctionne).
  571. /*
  572. -- =========================================================================== Z
  573. Contributeurs :
  574.  (CK) Christina.Khnaisser@USherbrooke.ca,
  575.  (LL) Luc.Lavoie@USherbrooke.ca
  576.  
  577. Adresse, droits d'auteur et copyright :
  578.   Groupe Metis
  579.   Département d'informatique
  580.  Faculté des sciences
  581.  Université de Sherbrooke
  582.  Sherbrooke (Québec)  J1K 2R1
  583.  Canada
  584.  http://info.usherbrooke.ca/llavoie/
  585.  [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  586.  
  587. Tâches projetées :
  588.  NIL
  589.  
  590. Tâches réalisées :
  591.  2016-09-25 (LL) : Création
  592.  
  593. Références :
  594. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  595.  
  596. -- -----------------------------------------------------------------------------
  597. -- fin de Films_ess03.sql
  598. -- =========================================================================== Z
  599. */
  600.  
  601. /*
  602. -- =========================================================================== A
  603. Activité : IFT187
  604. Trimestre : 2016-3
  605. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  606. Plateforme : PostgreSQL 9.5.1
  607. Responsable : Luc.Lavoie@USherbrooke.ca
  608. Version : 0.1.0b
  609. Statut : en vigueur
  610. Résumé : Initialisation des tables du schéma.
  611. -- =========================================================================== A
  612. */
  613. /*
  614. -- =========================================================================== B
  615. Initialisation du schéma correspondant au problème de boutique de films en ligne.
  616. ...
  617.  
  618. Notes de mise en oeuvre
  619. L'initialisation des tables Pays et Langue repose sur la dispoibilité des tables
  620. du schéma ISO. Pour le moment elles ont été crées dans le schéma Film, pour
  621. simplifier la référence.
  622. -- =========================================================================== B
  623. */
  624.  
  625. /**
  626.  * Un pays est identifié par le code ISO 3166-1 "idPays" et son nom français est "pays".
  627.  * Le code a deux lettres a été retenu (il existe des codes à trois lettres).
  628.  * Par convention, les codes de pays sont en lettres majuscules.
  629.  * Source : http://www.iso.org/iso/fr/french_country_names_and_code_elements#y.
  630.  */
  631. INSERT INTO Pays (idPays, pays)
  632.   SELECT UPPER(code2) AS idPays, fr AS pays FROM ISO_3166_1;
  633.  
  634. /**
  635.  * La langue identifiée par le code ISO 639-1 "idLangue" porte le nom  français "langue".
  636.  * Le code a deux lettres a été retenu (il existe des codes à trois lettres).
  637.  * Par convention, les codes de langue sont en lettres minuscules.
  638.  * Source : https://www.loc.gov/standards/iso639-2/php/code_list.php
  639.  * Note : certaines descriptions de langue (ou de groupe linguistique) sont
  640.  *        parfois très longues; pour le vérifier :
  641.  *        SELECT code3, fr, length(fr) FROM ISO_639_3 WHERE length(fr) > 60;
  642.  */
  643. INSERT INTO Langue (idLangue, langue)
  644.   SELECT LOWER(code2) AS idLangue, fr AS langue FROM ISO_639_2 JOIN ISO_639_3 USING (code3);
  645.  
  646. /**
  647.  * Poste
  648.  */
  649. INSERT INTO Poste(idPoste, poste) VALUES('P000','Producteur');
  650. INSERT INTO Poste(idPoste, poste) VALUES('P001','Assistant producteur');
  651. INSERT INTO Poste(idPoste, poste) VALUES('P002','Scénariste');
  652. INSERT INTO Poste(idPoste, poste) VALUES('P003','Réalisateur');
  653. INSERT INTO Poste(idPoste, poste) VALUES('P004','Assistant réalisateur');
  654. INSERT INTO Poste(idPoste, poste) VALUES('P005','Acteur');
  655. INSERT INTO Poste(idPoste, poste) VALUES('P006','Monteur');
  656. INSERT INTO Poste(idPoste, poste) VALUES('P007','Cameraman');
  657. INSERT INTO Poste(idPoste, poste) VALUES('P008','Preneur de son');
  658. INSERT INTO Poste(idPoste, poste) VALUES('P009','Chef décorateur');
  659. INSERT INTO Poste(idPoste, poste) VALUES('P010','Maquilleur');
  660. INSERT INTO Poste(idPoste, poste) VALUES('P011','Costumier');
  661. INSERT INTO Poste(idPoste, poste) VALUES('P012','Directeur technique');
  662. INSERT INTO Poste(idPoste, poste) VALUES('P013','Cascadeur');
  663. INSERT INTO Poste(idPoste, poste) VALUES('P014','Auteur de doublage');
  664. INSERT INTO Poste(idPoste, poste) VALUES('P015','Auteur de sous-titrage');
  665. INSERT INTO Poste(idPoste, poste) VALUES('P016','Doubleur');
  666. INSERT INTO Poste(idPoste, poste) VALUES('P017','Compositeur');
  667.  
  668. /**
  669.  * Genre
  670.  */
  671. INSERT INTO Genre(idGenre, genre) VALUES('G000','Action');
  672. INSERT INTO Genre(idGenre, genre) VALUES('G001','Animation');
  673. INSERT INTO Genre(idGenre, genre) VALUES('G002','Aventure');
  674. INSERT INTO Genre(idGenre, genre) VALUES('G003','Catastrophe');
  675. INSERT INTO Genre(idGenre, genre) VALUES('G004','Comédie');
  676. INSERT INTO Genre(idGenre, genre) VALUES('G005','Danse');
  677. INSERT INTO Genre(idGenre, genre) VALUES('G006','Documentaire');
  678. INSERT INTO Genre(idGenre, genre) VALUES('G007','Dramatique');
  679. INSERT INTO Genre(idGenre, genre) VALUES('G008','Espionnage');
  680. INSERT INTO Genre(idGenre, genre) VALUES('G009','Guerre');
  681. INSERT INTO Genre(idGenre, genre) VALUES('G010','Historique');
  682. INSERT INTO Genre(idGenre, genre) VALUES('G011','Horreur');
  683. INSERT INTO Genre(idGenre, genre) VALUES('G012','Comédie musicale');
  684. INSERT INTO Genre(idGenre, genre) VALUES('G013','Mystère');
  685. INSERT INTO Genre(idGenre, genre) VALUES('G014','Policier');
  686. INSERT INTO Genre(idGenre, genre) VALUES('G015','Politique');
  687. INSERT INTO Genre(idGenre, genre) VALUES('G016','Romantique');
  688. INSERT INTO Genre(idGenre, genre) VALUES('G017','Science-fiction');
  689. INSERT INTO Genre(idGenre, genre) VALUES('G018','Western');
  690. INSERT INTO Genre(idGenre, genre) VALUES('G019','Suspense');
  691. INSERT INTO Genre(idGenre, genre) VALUES('G020','Thriller');
  692. INSERT INTO Genre(idGenre, genre) VALUES('G021','Fantastique');
  693.  
  694. /**
  695.  * Studio
  696.  */
  697. INSERT INTO Studio(idStudio, studio, localisation) VALUES
  698.  ('S000', 'LGM Productions', 'FR'),
  699.  ('S001', 'Gaumont', 'FR'),
  700.  ('S002', 'Walt Disney Pictures', 'US'),
  701.  ('S003', 'Walt Disney Animation', 'US'),
  702.  ('S004', 'Malposo Productions', 'US'),
  703.  ('S005', 'Village Roadshow Pictures', 'US'),
  704.  ('S006', 'Cinecittà', 'IT'),
  705.  ('S007', 'Pathé Consortium Cinéma', 'FR'),
  706.  ('S008', 'Universal', 'US'),
  707.  ('S009', 'United Artists', 'US'),
  708.  ('S010', 'Pathé', 'FR');
  709.  
  710. /**
  711.  * Insertion des informations d'un artisan
  712.  * Artisan, Naissance (si connue), Deces (s'il y a lieu) et nationnalité
  713.  */
  714.  -- Régis Wargnier
  715. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  716.  ('A000', 'Wargnier', 'Régis', 'M');
  717. INSERT INTO Naissance(idArtisan, naissance) VALUES
  718.  ('A000', '1948-04-18');
  719. INSERT INTO nationalite(idartisan, nationalite) VALUES
  720.  ('A000', 'FR');
  721. -- José Garcia
  722. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  723.  ('A001', 'Garcia', 'José', 'M');
  724. INSERT INTO Naissance(idArtisan, naissance) VALUES
  725.  ('A001', '1966-03-17');
  726. INSERT INTO nationalite(idartisan, nationalite) VALUES
  727.  ('A001', 'FR'),
  728.  ('A001', 'ES');
  729. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  730.  ('A101', 'Garcia', 'José', 'M');
  731. INSERT INTO Naissance(idArtisan, naissance) VALUES
  732.  ('A101', '1946-09-01');
  733. INSERT INTO nationalite(idartisan, nationalite) VALUES
  734.  ('A101', 'AR');
  735.  
  736. -- Lucas Belvaux
  737. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  738.  ('A002', 'Belvaux', 'Lucas', 'M');
  739. INSERT INTO Naissance(idArtisan, naissance) VALUES
  740.  ('A002', '1961-11-14');
  741. INSERT INTO nationalite(idartisan, nationalite) VALUES
  742.  ('A002', 'BE');
  743.  -- Maris Gillian
  744. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  745.  ('A003', 'Gillain', 'Marie', 'F');
  746. INSERT INTO Naissance(idArtisan, naissance) VALUES
  747.  ('A003', '1975-06-18');
  748. INSERT INTO nationalite(idartisan, nationalite) VALUES
  749.  ('A003', 'BE');
  750. -- Michel Serrault
  751. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  752.  ('A004', 'Serrault', 'Michel', 'M');
  753. INSERT INTO Naissance(idArtisan, naissance) VALUES
  754.  ('A004', '1928-01-24');
  755. INSERT INTO Deces(idArtisan, deces) VALUES
  756.  ('A004', '2007-08-17');
  757. INSERT INTO nationalite(idartisan, nationalite) VALUES
  758.  ('A004', 'FR');
  759. -- Yann Malcore
  760. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  761.  ('A005', 'Malcor', 'Yann', 'M');
  762. -- Cyril Colbeau-Justin,
  763. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  764.  ('A006', 'Colbeau-Justin', 'Cyril', 'M');
  765. INSERT INTO nationalite(idartisan, nationalite) VALUES
  766.  ('A006', 'FR');
  767. -- Jean-Baptiste Dupont
  768. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  769.  ('A007', 'Dupont', 'Jean-Baptiste', 'M');
  770. INSERT INTO nationalite(idartisan, nationalite) VALUES
  771.  ('A007', 'FR');
  772. -- Patrick Doyle
  773. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  774.  ('A008', 'Doyle', 'Patrick', 'M');
  775. INSERT INTO Naissance(idArtisan, naissance) VALUES
  776.  ('A008', '1953-04-06');
  777. INSERT INTO nationalite(idartisan, nationalite) VALUES
  778.  ('A008', 'GB');
  779. -- Chris Buck
  780. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  781.  ('A009', 'Buck', 'Chris', 'M');
  782. INSERT INTO Naissance(idArtisan, naissance) VALUES
  783.  ('A009', '1960-01-01');
  784. INSERT INTO nationalite(idartisan, nationalite) VALUES
  785.  ('A009', 'US');
  786. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  787.  ('A109', 'Buck', 'Chris', 'M');
  788. INSERT INTO Deces(idArtisan, deces) VALUES
  789.  ('A109', '1920-12-01');
  790. INSERT INTO nationalite(idartisan, nationalite) VALUES
  791.  ('A109', 'AU');
  792. -- Jennifer Lee
  793. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  794.  ('A010', 'Lee', 'Jennifer', 'F');
  795. INSERT INTO Naissance(idArtisan, naissance) VALUES
  796.  ('A010', '1971-01-01');
  797. INSERT INTO nationalite(idartisan, nationalite) VALUES
  798.  ('A010', 'US');
  799. -- Peter Del Vecho
  800. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  801.  ('A011', 'Del Vecho', 'Peter', 'M');
  802. INSERT INTO Naissance(idArtisan, naissance) VALUES
  803.  ('A011', '1958-04-06');
  804. INSERT INTO nationalite(idartisan, nationalite) VALUES
  805.  ('A011', 'US');
  806. -- Clint Eastwood
  807. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  808.  ('A012', 'Eastwood', 'Clint', 'M');
  809. INSERT INTO Naissance(idArtisan, naissance) VALUES
  810.  ('A012', '1930-04-30');
  811. INSERT INTO nationalite(idartisan, nationalite) VALUES
  812.  ('A012', 'US');
  813. -- Andrew Lazar
  814. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  815.  ('A013', 'Lazar', 'Andrew', 'M');
  816. INSERT INTO nationalite(idartisan, nationalite) VALUES
  817.  ('A013', 'US');
  818. -- Ken Kaufman
  819. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  820.  ('A014', 'Kaufman', 'Ken', 'F');
  821. -- Haword Klausner
  822. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  823.  ('A015', 'Klausner', 'Haword', 'M');
  824. -- Tommy Lee Jones
  825. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  826.  ('A016', 'Lee Jones', 'Tommy', 'M');
  827. INSERT INTO Naissance(idArtisan, naissance) VALUES
  828.  ('A016', '1946-09-15');
  829. INSERT INTO nationalite(idartisan, nationalite) VALUES
  830.  ('A016', 'US');
  831. -- Donald Sutherland
  832. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  833.  ('A017', 'Sutherland', 'Donald', 'M');
  834. INSERT INTO Naissance(idArtisan, naissance) VALUES
  835.  ('A017', '1935-07-17');
  836. INSERT INTO nationalite(idartisan, nationalite) VALUES
  837.  ('A017', 'CA');
  838. -- James Garner
  839. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  840.  ('A018', 'Garner', 'James', 'M');
  841. INSERT INTO Naissance(idArtisan, naissance) VALUES
  842.  ('A018', '1928-04-07');
  843. INSERT INTO nationalite(idartisan, nationalite) VALUES
  844.  ('A018', 'US');
  845. -- Maria Gay Harden
  846. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  847.  ('A019', 'Harden', 'Maria Gay', 'F');
  848. INSERT INTO Naissance(idArtisan, naissance) VALUES
  849.  ('A019', '1959-08-14');
  850. INSERT INTO nationalite(idartisan, nationalite) VALUES
  851.  ('A019', 'US');
  852. -- Ingrid Bergman
  853. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  854.  ('A020', 'Bergman', 'Ingrid', 'F');
  855. INSERT INTO Naissance(idArtisan, naissance) VALUES
  856.  ('A020', '1915-08-29');
  857. INSERT INTO Deces(idArtisan, deces) VALUES
  858.  ('A020', '1982-08-29');
  859. INSERT INTO nationalite(idartisan, nationalite) VALUES
  860.  ('A020', 'SE');
  861. -- Marcello Mastroianni
  862. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  863.  ('A021', 'Mastroianni', 'Marcello', 'M');
  864. INSERT INTO Naissance(idArtisan, naissance) VALUES
  865.  ('A021', '1924-09-28');
  866. INSERT INTO Deces(idArtisan, deces) VALUES
  867.  ('A021', '1996-12-19');
  868. INSERT INTO nationalite(idartisan, nationalite) VALUES
  869.  ('A021', 'IT');
  870.  
  871. -- Charlie Chaplin
  872. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  873.  ('A022', 'Chaplin', 'Charlie', 'M');
  874. INSERT INTO Naissance(idArtisan, naissance) VALUES
  875.  ('A022', '1889-04-16');
  876. INSERT INTO Deces(idArtisan, deces) VALUES
  877.  ('A022', '1977-12-25');
  878. INSERT INTO nationalite(idartisan, nationalite) VALUES
  879.  ('A022', 'GB');
  880.  
  881. -- Jackie Coogan
  882. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  883.  ('A023', 'Coogan', 'Jackie', 'M');
  884. INSERT INTO Naissance(idArtisan, naissance) VALUES
  885.  ('A023', '1914-10-26');
  886. INSERT INTO Deces(idArtisan, deces) VALUES
  887.  ('A023', '1984-03-01');
  888. INSERT INTO nationalite(idartisan, nationalite) VALUES
  889.  ('A023', 'US');
  890.  
  891. -- Georgia Hale
  892. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  893.  ('A024', 'Hale', 'Georgia', 'F');
  894. INSERT INTO Naissance(idArtisan, naissance) VALUES
  895.  ('A024', '1905-06-24');
  896. INSERT INTO Deces(idArtisan, deces) VALUES
  897.  ('A024', '1985-06-07');
  898. INSERT INTO nationalite(idartisan, nationalite) VALUES
  899.  ('A024', 'US');
  900.  
  901. -- Moroni "Mack" Swain
  902. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  903.  ('A025', 'Swain', 'Moroni', 'M');
  904. INSERT INTO Naissance(idArtisan, naissance) VALUES
  905.  ('A025', '1876-02-16');
  906. INSERT INTO Deces(idArtisan, deces) VALUES
  907.  ('A025', '1935-08-25');
  908. INSERT INTO nationalite(idartisan, nationalite) VALUES
  909.  ('A025', 'US');
  910.  
  911. -- Tom Murray
  912. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  913.  ('A026', 'Murray', 'Tom', 'M');
  914. INSERT INTO Naissance(idArtisan, naissance) VALUES
  915.  ('A026', '1874-09-08');
  916. INSERT INTO Deces(idArtisan, deces) VALUES
  917.  ('A026', '1935-08-27');
  918. INSERT INTO nationalite(idartisan, nationalite) VALUES
  919.  ('A026', 'US');
  920.  
  921. -- Paulette Goddard
  922. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  923.  ('A027', 'Goddard', 'Marion Pauline "Paulette"', 'F');
  924. INSERT INTO Naissance(idArtisan, naissance) VALUES
  925.  ('A027', '1910-06-10');
  926. INSERT INTO Deces(idArtisan, deces) VALUES
  927.  ('A027', '1990-04-23');
  928. INSERT INTO nationalite(idartisan, nationalite) VALUES
  929.  ('A027', 'US');
  930.  
  931.  
  932. /**
  933.  * Insertion des informations d'un film
  934.  * Film, Versiondisponible, FilmGenre, Production, Participation, recette
  935.  */
  936.  -- Film Pars vite et reviens tard
  937. INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  938.   ('F000', 'Pars vite et reviens tard', 'fr', 2007, 4500);
  939. INSERT INTO Versiondisponible(idFilm, idLangue, mode) VALUES
  940.   ('F000', 'en', 'S'),
  941.   ('F000', 'es', 'S');
  942. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  943.   ('F000', 'G014'),
  944.   ('F000', 'G020');
  945. INSERT INTO Production(idFilm, idStudio) VALUES
  946.   ('F000', 'S000'),
  947.   ('F000', 'S001');
  948. INSERT INTO Participation(idArtisan, idPoste, idFilm) VALUES
  949.   ('A000', 'P002', 'F000'),
  950.   ('A000', 'P003', 'F000'),
  951.   ('A001', 'P005', 'F000'),
  952.   ('A002', 'P005', 'F000'),
  953.   ('A003', 'P005', 'F000'),
  954.   ('A004', 'P005', 'F000'),
  955.   ('A005', 'P006', 'F000'),
  956.   ('A006', 'P000', 'F000'),
  957.   ('A007', 'P000', 'F000'),
  958.   ('A008', 'P017', 'F000');
  959. --Recette introuvable.
  960.  
  961. -- Film Frozen SAUF les acteurs.
  962.  INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  963.   ('F001', 'Frozen', 'en', 2013, 4800);
  964. INSERT INTO Versiondisponible(idFilm, idLangue, mode) VALUES
  965.   ('F001', 'fr', 'S'),
  966.   ('F001', 'fr', 'D'),
  967.   ('F001', 'es', 'S'),
  968.   ('F001', 'es', 'D');
  969. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  970.   ('F001', 'G001'),
  971.   ('F001', 'G002'),
  972.   ('F001', 'G004'),
  973.   ('F001', 'G021');
  974. INSERT INTO Production(idFilm, idStudio) VALUES
  975.   ('F001', 'S002'),
  976.   ('F001', 'S003');
  977. INSERT INTO Participation(idFilm, idArtisan, idPoste) VALUES
  978.   ('F001', 'A009', 'P000'),
  979.   ('F001', 'A009', 'P003'),
  980.   ('F001', 'A010', 'P003'),
  981.   ('F001', 'A009', 'P002'),
  982.   ('F001', 'A010', 'P002'),
  983.   ('F001', 'A011', 'P000');
  984. INSERT INTO Recette(idFilm, annee, revenu)
  985.   VALUES ('F001', 2013, 67391326);
  986.  
  987.  -- Film Space Cowboys
  988.  INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  989.   ('F002', 'Space Cowboys', 'en', 2000, 5400);
  990. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  991.   ('F002', 'G003'),
  992.   ('F002', 'G007');
  993. INSERT INTO Production(idFilm, idStudio) VALUES
  994.   ('F002', 'S004'),
  995.   ('F002', 'S005');
  996. INSERT INTO Participation(idFilm, idArtisan, idPoste) VALUES
  997.   ('F002', 'A012', 'P000'),
  998.   ('F002', 'A012', 'P003'),
  999.   ('F002', 'A012', 'P005'),
  1000.   ('F002', 'A013', 'P000'),
  1001.   ('F002', 'A014', 'P002'),
  1002.   ('F002', 'A015', 'P002'),
  1003.   ('F002', 'A016', 'P005'),
  1004.   ('F002', 'A017', 'P005'),
  1005.   ('F002', 'A018', 'P005'),
  1006.   ('F002', 'A019', 'P005');
  1007. INSERT INTO Recette(idFilm, annee, revenu)
  1008.   VALUES ('F002', 2000, 18093776);
  1009.  
  1010. -- Le Kid
  1011. INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  1012.  ('F003', 'The Kid', 'en', 1921, 68*60);
  1013. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  1014.  ('F003', 'G004'),
  1015.  ('F003', 'G007');
  1016. INSERT INTO Production(idFilm, idStudio) VALUES
  1017.  ('F003', 'S009');        -- United Artists
  1018. INSERT INTO Participation(idFilm, idArtisan, idPoste) VALUES
  1019.  ('F003', 'A022', 'P000'), -- Chaplin : réalisateur, scénariste, producteur, acteur, compositeur...
  1020.  ('F003', 'A022', 'P002'),
  1021.  ('F003', 'A022', 'P003'),
  1022.  ('F003', 'A022', 'P005'),
  1023.  ('F003', 'A022', 'P017'),
  1024.  ('F003', 'A023', 'P005'); -- Coogan : acteur
  1025.  
  1026. -- La ruée vers l'or
  1027. INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  1028.  ('F004', 'The Gold Rush', 'en', 1925, 82*60);
  1029. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  1030.  ('F004', 'G004'),
  1031.  ('F004', 'G007');
  1032. INSERT INTO Production(idFilm, idStudio) VALUES
  1033.  ('F004', 'S009');        -- United Artists
  1034. INSERT INTO Participation(idFilm, idArtisan, idPoste) VALUES
  1035.  ('F004', 'A022', 'P000'), -- Chaplin : réalisateur, scénariste, producteur, acteur, compositeur...
  1036.  ('F004', 'A022', 'P002'),
  1037.  ('F004', 'A022', 'P003'),
  1038.  ('F004', 'A022', 'P005'),
  1039.  ('F004', 'A022', 'P017'),
  1040.  ('F004', 'A024', 'P005'), -- Gorgia Hale
  1041.  ('F004', 'A025', 'P005'), -- Mack Swain
  1042.  ('F004', 'A026', 'P005'); -- Tom Murray
  1043.  
  1044. -- L'opinion publique
  1045. INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  1046.  ('F005', 'A Woman of Paris', 'en', 1923, 93*60);
  1047. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  1048.  ('F005', 'G007');
  1049. INSERT INTO Production(idFilm, idStudio) VALUES
  1050.  ('F005', 'S009');        -- United Artists
  1051. INSERT INTO Participation(idFilm, idArtisan, idPoste) VALUES
  1052.  ('F005', 'A022', 'P000'), -- Chaplin : réalisateur, scénariste, producteur.
  1053.  ('F005', 'A022', 'P002'),
  1054.  ('F005', 'A022', 'P003');
  1055.  -- Edna Purviance : Marie Saint Clair
  1056.  -- Clarence Geldart : le père de Marie
  1057.  -- Carl Miller : Jean Millet
  1058.  -- Lydia Knott : la mère de Jean
  1059.  -- Charles K. French : le père de Jean
  1060.  -- Adolphe Menjou : Pierre Revel
  1061.  -- Betty Morrissey : Fifi
  1062.  -- Malvina Polo : Paulette
  1063.  -- Harry Northrup (non crédité) : le valet de Revel
  1064.  
  1065. -- Les Temps modernes
  1066. INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  1067.  ('F006', 'The Gold Rush', 'en', 1936, 87*60);
  1068. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  1069.  ('F006', 'G004'),
  1070.  ('F006', 'G007');
  1071. INSERT INTO Production(idFilm, idStudio) VALUES
  1072.  ('F006', 'S009');        -- United Artists
  1073. INSERT INTO Participation(idFilm, idArtisan, idPoste) VALUES
  1074.  ('F006', 'A022', 'P000'), -- Chaplin : réalisateur, scénariste, producteur, acteur, compositeur...
  1075.  ('F006', 'A022', 'P002'),
  1076.  ('F006', 'A022', 'P003'),
  1077.  ('F006', 'A022', 'P005'),
  1078.  ('F006', 'A022', 'P017'),
  1079.  ('F006', 'A027', 'P005'); -- Paulette Goddard
  1080.  
  1081.  
  1082. -- Film La Dolce Vita...
  1083.  
  1084. /*
  1085. -- =========================================================================== Z
  1086. Contributeurs :
  1087.   (CK) Christina.Khnaisser@USherbrooke.ca,
  1088.   (LL) Luc.Lavoie@USherbrooke.ca
  1089.  
  1090. Adresse, droits d'auteur et copyright :
  1091.   Groupe Metis
  1092.   Département d'informatique
  1093.   Faculté des sciences
  1094.   Université de Sherbrooke
  1095.   Sherbrooke (Québec)  J1K 2R1
  1096.   Canada
  1097.   http://info.usherbrooke.ca/llavoie/
  1098.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1099.  
  1100. Tâches projetées :
  1101.   NIL
  1102.  
  1103. Tâches réalisées :
  1104. 2016-09-16 (LL) : Création
  1105.  
  1106. Références :
  1107. [film] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1108. [ISO] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/ISO
  1109.  
  1110. -- -----------------------------------------------------------------------------
  1111. -- fin de Exemples/Films/Films_ess02.sql
  1112. -- =========================================================================== Z
  1113. */
  1114.  
  1115. /*
  1116. -- =========================================================================== A
  1117. Activité : IFT187
  1118. Trimestre : 2016-3
  1119. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1120. Plateforme : PostgreSQL 9.5.1
  1121. Responsable : Luc.Lavoie@USherbrooke.ca
  1122. Version : 0.1.0b
  1123. Statut : en vigueur
  1124. Résumé : Requête X01
  1125. -- =========================================================================== A
  1126. */
  1127. /*
  1128. -- =========================================================================== B
  1129. Notes de mise en oeuvre
  1130. ~~~~~~~~~~~~~~~~~~~~~~~
  1131. ...
  1132.  
  1133. -- =========================================================================== B
  1134. */
  1135.  
  1136. /**
  1137.  * X01.
  1138.  * Calculer le nombre d’artisans par film.
  1139.  * Donner la clé du film, le titre du film et le nombre d’artisans. Trier en ordre de titre.
  1140. **/
  1141.  
  1142. WITH
  1143.     GroupementArtisansFilms AS --Nombre d'artisans par films
  1144.     (
  1145.     SELECT DISTINCT  idFilm, COUNT (idArtisan) AS NombreArtisansFilms
  1146.     FROM Artisan JOIN Participation USING (idArtisan)
  1147.     GROUP BY idFilm
  1148.     )
  1149. SELECT DISTINCT idFilm, titre, NombreArtisansFilms --Agencement pour la beauté et pour répondre à la question
  1150. FROM Film JOIN GroupementArtisansFilms USING (idFilm)
  1151. ORDER BY titre
  1152. ;
  1153.  
  1154.  
  1155.  
  1156. /*
  1157. -- =========================================================================== Z
  1158. Contributeurs :
  1159.  (CK) Christina.Khnaisser@USherbrooke.ca,
  1160.  (LL) Luc.Lavoie@USherbrooke.ca
  1161.  
  1162. Adresse, droits d'auteur et copyright :
  1163.   Groupe Metis
  1164.   Département d'informatique
  1165.  Faculté des sciences
  1166.  Université de Sherbrooke
  1167.  Sherbrooke (Québec)  J1K 2R1
  1168.  Canada
  1169.  http://info.usherbrooke.ca/llavoie/
  1170.  [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1171.  
  1172. Tâches projetées :
  1173.  NIL
  1174.  
  1175. Tâches réalisées :
  1176.  2016-09-25 (LL) : Création
  1177.  
  1178. Références :
  1179. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1180.  
  1181. -- -----------------------------------------------------------------------------
  1182. -- fin de Films_X01.sql
  1183. -- =========================================================================== Z
  1184. */
  1185.  
  1186. /*
  1187. -- =========================================================================== A
  1188. Activité : IFT187
  1189. Trimestre : 2016-3
  1190. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1191. Plateforme : PostgreSQL 9.5.1
  1192. Responsable : Luc.Lavoie@USherbrooke.ca
  1193. Version : 0.1.0b
  1194. Statut : en vigueur
  1195. Résumé : Requête X02
  1196. -- =========================================================================== A
  1197. */
  1198. /*
  1199. -- =========================================================================== B
  1200. Notes de mise en oeuvre
  1201. ~~~~~~~~~~~~~~~~~~~~~~~
  1202. ...
  1203.  
  1204. -- =========================================================================== B
  1205. */
  1206.  
  1207. /**
  1208. * X02.
  1209. * Sur la base de la date de parution, calculer le tableau du nombre de films par décennie.
  1210. * Présenter le résultat de façon appropriée.
  1211. **/
  1212.  
  1213. WITH
  1214.     CalculerDecennie(idFilm, Decennie) AS --Sert à changer l'annee de tous les films sortis dans une décennie
  1215.                           -- par une decennie (Ex. 1993 devient 1990).
  1216.     (
  1217.     SELECT DISTINCT idFilm, SUBSTRING (CAST (parution AS VARCHAR(4)),1,3) || '0' AS Decennie
  1218.     FROM Film
  1219.     )
  1220. SELECT Decennie, COUNT(*) AS NombreDeFilm --Nombre de films par décennie
  1221. FROM CalculerDecennie
  1222. GROUP BY Decennie
  1223. ORDER BY Decennie ASC   --Arrangement pour la beauté et pour répondre à la question
  1224. ;
  1225.  
  1226.  
  1227. /*
  1228. -- =========================================================================== Z
  1229. Contributeurs :
  1230.   (CK) Christina.Khnaisser@USherbrooke.ca,
  1231.   (LL) Luc.Lavoie@USherbrooke.ca
  1232.  
  1233. Adresse, droits d'auteur et copyright :
  1234.   Groupe Metis
  1235.   Département d'informatique
  1236.   Faculté des sciences
  1237.   Université de Sherbrooke
  1238.   Sherbrooke (Québec)  J1K 2R1
  1239.   Canada
  1240.   http://info.usherbrooke.ca/llavoie/
  1241.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1242.  
  1243. Tâches projetées :
  1244.   NIL
  1245.  
  1246. Tâches réalisées :
  1247.   2016-09-25 (LL) : Création
  1248.  
  1249. Références :
  1250. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1251.  
  1252. -- -----------------------------------------------------------------------------
  1253. -- fin de Films_X02.sql
  1254. -- =========================================================================== Z
  1255. */
  1256.  
  1257. /*
  1258. -- =========================================================================== A
  1259. Activité : IFT187
  1260. Trimestre : 2016-3
  1261. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1262. Plateforme : PostgreSQL 9.5.1
  1263. Responsable : Luc.Lavoie@USherbrooke.ca
  1264. Version : 0.1.0b
  1265. Statut : en vigueur
  1266. Résumé : Requête X03
  1267. -- =========================================================================== A
  1268. */
  1269. /*
  1270. -- =========================================================================== B
  1271. Notes de mise en oeuvre
  1272. ~~~~~~~~~~~~~~~~~~~~~~~
  1273. ...
  1274.  
  1275. -- =========================================================================== B
  1276. */
  1277.  
  1278. /**
  1279.  * X03.
  1280.  * Quelle est la décennie comportant le plus de films ?
  1281.  * Présenter le résultat de façon appropriée.
  1282. **/
  1283.  
  1284. WITH
  1285.     CalculerDecennie(idFilm, Decennie) AS --Sert à changer l'annee de tous les films sortis dans une décennie
  1286.                           -- par une decennie (Ex. 1993 devient 1990).
  1287.     (
  1288.     SELECT DISTINCT idFilm, SUBSTRING (CAST (parution AS VARCHAR(4)),1,3) || '0' AS Decennie
  1289.     FROM Film
  1290.     ),
  1291.     NombreFilmsDecennie AS --Compte le nombre de films par decennie
  1292.     (
  1293.     SELECT DISTINCT Decennie, COUNT (idFilm) AS NombreFilms
  1294.     FROM CalculerDecennie
  1295.     GROUP BY Decennie
  1296.     )
  1297.  
  1298. SELECT Decennie, NombreFilms
  1299. FROM NombreFilmsDecennie
  1300. WHERE NombreFilms = (SELECT MAX(NombreFilms) FROM NombreFilmsDecennie) --La decennie qui a eu le plus de films
  1301. ;
  1302.  
  1303.  
  1304. /*
  1305. -- =========================================================================== Z
  1306. Contributeurs :
  1307.  (CK) Christina.Khnaisser@USherbrooke.ca,
  1308.  (LL) Luc.Lavoie@USherbrooke.ca
  1309.  
  1310. Adresse, droits d'auteur et copyright :
  1311.   Groupe Metis
  1312.   Département d'informatique
  1313.  Faculté des sciences
  1314.  Université de Sherbrooke
  1315.  Sherbrooke (Québec)  J1K 2R1
  1316.  Canada
  1317.  http://info.usherbrooke.ca/llavoie/
  1318.  [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1319.  
  1320. Tâches projetées :
  1321.  NIL
  1322.  
  1323. Tâches réalisées :
  1324.  2016-09-25 (LL) : Création
  1325.  
  1326. Références :
  1327. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1328.  
  1329. -- -----------------------------------------------------------------------------
  1330. -- fin de Films_X03.sql
  1331. -- =========================================================================== Z
  1332. */
  1333.  
  1334. /*
  1335. -- =========================================================================== A
  1336. Activité : IFT187
  1337. Trimestre : 2016-3
  1338. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1339. Plateforme : PostgreSQL 9.5.1
  1340. Responsable : Luc.Lavoie@USherbrooke.ca
  1341. Version : 0.1.0b
  1342. Statut : en vigueur
  1343. Résumé : Requête X04
  1344. -- =========================================================================== A
  1345. */
  1346. /*
  1347. -- =========================================================================== B
  1348. Notes de mise en oeuvre
  1349. ~~~~~~~~~~~~~~~~~~~~~~~
  1350. ...
  1351.  
  1352. -- =========================================================================== B
  1353. */
  1354.  
  1355. /**
  1356. * X04.
  1357. * Quels sont les postes qui n’ont jamais été utilisés ?
  1358. * Présenter le résultat de façon appropriée.
  1359. * Note: Nous ne pensons pas que cela vaille la peine de mettre
  1360. * le nombre 0 dans une colonne nommée Nombre D'artisans. Ainsi,
  1361.  * nous mettons juste la clé ainsi que le poste.
  1362. **/
  1363.  
  1364. WITH
  1365.     PosteQuiOntArtisan AS --Tous les postes occupés
  1366.     (
  1367.     SELECT DISTINCT idArtisan, idPoste, poste
  1368.     FROM Participation JOIN Poste USING (idPoste)
  1369.     )
  1370.    
  1371. SELECT DISTINCT idPoste, poste --Tous les postes existants
  1372. FROM Poste
  1373. EXCEPT
  1374. SELECT DISTINCT idPoste, poste --Moins ceux qui ont été occupés au moins une fois
  1375. FROM PosteQuiOntArtisan
  1376. ORDER BY idPoste
  1377. ;
  1378.  
  1379.  
  1380. /*
  1381. -- =========================================================================== Z
  1382. Contributeurs :
  1383.   (CK) Christina.Khnaisser@USherbrooke.ca,
  1384.   (LL) Luc.Lavoie@USherbrooke.ca
  1385.  
  1386. Adresse, droits d'auteur et copyright :
  1387.   Groupe Metis
  1388.   Département d'informatique
  1389.   Faculté des sciences
  1390.   Université de Sherbrooke
  1391.   Sherbrooke (Québec)  J1K 2R1
  1392.   Canada
  1393.   http://info.usherbrooke.ca/llavoie/
  1394.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1395.  
  1396. Tâches projetées :
  1397.   NIL
  1398.  
  1399. Tâches réalisées :
  1400.   2016-09-25 (LL) : Création
  1401.  
  1402. Références :
  1403. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1404.  
  1405. -- -----------------------------------------------------------------------------
  1406. -- fin de Films_X04.sql
  1407. -- =========================================================================== Z
  1408. */
  1409.  
  1410. /*
  1411. -- =========================================================================== A
  1412. Activité : IFT187
  1413. Trimestre : 2016-3
  1414. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1415. Plateforme : PostgreSQL 9.5.1
  1416. Responsable : Luc.Lavoie@USherbrooke.ca
  1417. Version : 0.1.0b
  1418. Statut : en vigueur
  1419. Résumé : Requête R06
  1420. -- =========================================================================== A
  1421. */
  1422. /*
  1423. -- =========================================================================== B
  1424. Notes de mise en oeuvre
  1425. ~~~~~~~~~~~~~~~~~~~~~~~
  1426. ...
  1427.  
  1428. -- =========================================================================== B
  1429. */
  1430.  
  1431. /**
  1432.  * X06.
  1433.  * Quels sont les artisans qui ont occupé aux moins deux postes dans tous les
  1434.  * films auxquels ils ont participé ?
  1435.  * Présenter le résultat de façon appropriée.
  1436. **/
  1437.  
  1438. WITH
  1439.     ArtisansFilms AS --Tous les artisans qui ont participé à un film
  1440.     (
  1441.     SELECT idArtisan, idFilm
  1442.     FROM Participation
  1443.     ),
  1444.    
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450. /*
  1451. -- =========================================================================== Z
  1452. Contributeurs :
  1453.   (CK) Christina.Khnaisser@USherbrooke.ca,
  1454.   (LL) Luc.Lavoie@USherbrooke.ca
  1455.  
  1456. Adresse, droits d'auteur et copyright :
  1457.   Groupe Metis
  1458.   Département d'informatique
  1459.   Faculté des sciences
  1460.   Université de Sherbrooke
  1461.   Sherbrooke (Québec)  J1K 2R1
  1462.   Canada
  1463.   http://info.usherbrooke.ca/llavoie/
  1464.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1465.  
  1466. Tâches projetées :
  1467.   NIL
  1468.  
  1469. Tâches réalisées :
  1470.   2016-09-25 (LL) : Création
  1471.  
  1472. Références :
  1473. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1474.  
  1475. -- -----------------------------------------------------------------------------
  1476. -- fin de Films_X06.sql
  1477. -- =========================================================================== Z
  1478. */
  1479.  
  1480. /*
  1481. -- =========================================================================== A
  1482. Activité : IFT187
  1483. Trimestre : 2016-3
  1484. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1485. Plateforme : PostgreSQL 9.5.1
  1486. Responsable : Luc.Lavoie@USherbrooke.ca
  1487. Version : 0.1.0b
  1488. Statut : en vigueur
  1489. Résumé : Requête R07
  1490. -- =========================================================================== A
  1491. */
  1492. /*
  1493. -- =========================================================================== B
  1494. Notes de mise en oeuvre
  1495. ~~~~~~~~~~~~~~~~~~~~~~~
  1496. ...
  1497.  
  1498. -- =========================================================================== B
  1499. */
  1500.  
  1501. /**
  1502.  * X07.
  1503.  * Déterminer les films qui ont un nombre d’acteurs supérieur à la moyenne du nombre
  1504.  * d’acteurs des films de la même décennie.
  1505.  * Présenter le résultat de façon appropriée.
  1506. **/
  1507.  
  1508.  
  1509. WITH
  1510.     CalculerDecennie(idFilm, Decennie) AS --Sert à changer l'année de tous les films sortis dans une décennie
  1511.                           -- par une decennie (Ex. 1993 devient 1990).
  1512.     (
  1513.     SELECT DISTINCT idFilm, SUBSTRING (CAST (parution AS VARCHAR(4)),1,3) || '0' AS Decennie
  1514.     FROM Film
  1515.     GROUP BY idFilm
  1516.     ),
  1517.     NombreDartisanParFilm AS --Nombre d'acteurs par film
  1518.     (
  1519.     SELECT DISTINCT idFilm, COUNT (DISTINCT idArtisan)  AS NombreActeursParFilm
  1520.     FROM CalculerDecennie JOIN Participation USING (idFilm)
  1521.     WHERE (idPoste = 'P005')
  1522.     GROUP BY idFilm
  1523.     ),
  1524.     FilmsNbrActeursDecennie (idFilm, NombreActeursParFilm, Decennie) AS --Nombre d'acteurs par film, groupé selon la décennie
  1525.     (
  1526.     SELECT idFilm, NombreActeursParFilm, Decennie
  1527.     FROM CalculerDecennie JOIN NombreDartisanParFilm USING (idFilm)
  1528.     ),
  1529.     MoyenneActeursParFilmAvecDecennie AS --Moyenne du nombre d'acteurs par film selon chaque décennie
  1530.     (
  1531.     SELECT DISTINCT Decennie, AVG (NombreActeursParFilm) AS MoyenneActeursParFilm
  1532.     FROM FilmsNbrActeursDecennie
  1533.     GROUP BY Decennie
  1534.     )
  1535. SELECT DISTINCT idFilm, titre, NombreActeursParFilm, Decennie, trunc(MoyenneActeursParFilm,3) AS Moyenne --Arrangement pour la beauté et pour répondre à la question
  1536. FROM FilmsNbrActeursDecennie JOIN Film USING (idFilm)
  1537.                  JOIN MoyenneActeursParFilmAvecDecennie USING (Decennie)
  1538. WHERE (FilmsNbrActeursDecennie.Decennie = MoyenneActeursParFilmAvecDecennie.Decennie) --Tous les films dont la moyenne d'acteurs est supérieure à la moyenne d'acteurs
  1539.                                               -- d'acteurs par films de leur décennie
  1540.     AND (MoyenneActeursParFilmAvecDecennie.MoyenneActeursParFilm < FilmsNbrActeursDecennie.NombreActeursParFilm)
  1541. ;
  1542.  
  1543.  
  1544. /*
  1545. -- =========================================================================== Z
  1546. Contributeurs :
  1547.   (CK) Christina.Khnaisser@USherbrooke.ca,
  1548.   (LL) Luc.Lavoie@USherbrooke.ca
  1549.  
  1550. Adresse, droits d'auteur et copyright :
  1551.   Groupe Metis
  1552.   Département d'informatique
  1553.   Faculté des sciences
  1554.   Université de Sherbrooke
  1555.   Sherbrooke (Québec)  J1K 2R1
  1556.   Canada
  1557.   http://info.usherbrooke.ca/llavoie/
  1558.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1559.  
  1560. Tâches projetées :
  1561.   NIL
  1562.  
  1563. Tâches réalisées :
  1564.   2016-09-25 (LL) : Création
  1565.  
  1566. Références :
  1567. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1568.  
  1569. -- -----------------------------------------------------------------------------
  1570. -- fin de Films_X07.sql
  1571. -- =========================================================================== Z
  1572. */
  1573.  
  1574. /*
  1575. -- =========================================================================== A
  1576. Activité : IFT187
  1577. Trimestre : 2016-3
  1578. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1579. Plateforme : PostgreSQL 9.5.1
  1580. Responsable : Luc.Lavoie@USherbrooke.ca
  1581. Version : 0.1.0b
  1582. Statut : en vigueur
  1583. Résumé : Requête R08
  1584. -- =========================================================================== A
  1585. */
  1586. /*
  1587. -- =========================================================================== B
  1588. Notes de mise en oeuvre
  1589. ~~~~~~~~~~~~~~~~~~~~~~~
  1590. ...
  1591.  
  1592. -- =========================================================================== B
  1593. */
  1594.  
  1595. /**
  1596.  * X08.
  1597.  * Quelles sont les trois paires d’acteurs ayant le plus souvent joué ensemble ?
  1598.  * Pour chacune des paires, donner le nombre d’occurrences.
  1599. **/
  1600.  
  1601. WITH
  1602.     ArtisansActeursFilms AS --Tous les acteurs avec leur film
  1603.     (
  1604.     SELECT idArtisan, idFilm
  1605.     FROM Participation
  1606.     WHERE idPoste = 'P005'
  1607.     ),
  1608.     PairesDacteurs AS --Toutes les paires d'acteurs avec le nombre de films dans lesquels
  1609.               -- ils ont joué ensemble.
  1610.     (
  1611.     SELECT A.idArtisan AS pA, B.idArtisan AS pB, COUNT (A.idFilm) AS nbrFilms
  1612.     FROM ArtisansActeursFilms AS A JOIN ArtisansActeursFilms AS B USING (idFilm)
  1613.     WHERE A.idArtisan < B.idArtisan --Évite les doublons (José Garcia a joué avec José Garcia est invalide)
  1614.     GROUP BY A.idArtisan, B.idArtisan
  1615.     )
  1616. SELECT (pA,pb) AS PaireiD, (A.nom, A.prenom) AS nom1_prenom1, (B.nom, B.prenom)AS nom2_prenom2, nbrFilms --Arrangement pour beauté
  1617. FROM PairesDacteurs JOIN Artisan AS A ON (pA = A.idArtisan)
  1618.             JOIN Artisan AS B ON (pB = B.idArtisan)
  1619. ORDER BY nbrFilms DESC --On met la paire d'acteurs en ordre décroissant de nombre de films en commun dans lesquels ils ont joué
  1620. FETCH FIRST 3 ROWS ONLY --On prends les trois premières tuples de cette table décroissante pour avoir les trois paires avec le plus
  1621.             -- de films dans lesquels ils ont joué ensemble.
  1622. ;
  1623.  
  1624.  
  1625.    
  1626.  
  1627.  
  1628.  
  1629. /*
  1630. -- =========================================================================== Z
  1631. Contributeurs :
  1632.   (CK) Christina.Khnaisser@USherbrooke.ca,
  1633.   (LL) Luc.Lavoie@USherbrooke.ca
  1634.  
  1635. Adresse, droits d'auteur et copyright :
  1636.   Groupe Metis
  1637.   Département d'informatique
  1638.   Faculté des sciences
  1639.   Université de Sherbrooke
  1640.   Sherbrooke (Québec)  J1K 2R1
  1641.   Canada
  1642.   http://info.usherbrooke.ca/llavoie/
  1643.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1644.  
  1645. Tâches projetées :
  1646.   NIL
  1647.  
  1648. Tâches réalisées :
  1649.   2016-09-25 (LL) : Création
  1650.  
  1651. Références :
  1652. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1653.  
  1654. -- -----------------------------------------------------------------------------
  1655. -- fin de Films_X08.sql
  1656. -- =========================================================================== Z
  1657. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement