* Bonjour, *
J'ai besoin d'aide pour cette exercice , toute réponse sera appréciée.
Merci d'avance.
L’exercice est lié à la base de données cassette.
carolina
* Bonjour, *
J'ai besoin d'aide pour cette exercice , toute réponse sera appréciée.
Merci d'avance.
L’exercice est lié à la base de données cassette.
carolina
Bonjour,
Et avec ça, un p'tit café et des galettes de Pont-Aven
Plus sérieusement, qu'avez vous commencé à faire ?
Nous pouvons vous aiguiller mais en aucune façon faire vos devoirs à votre place !
Cordialement,
![]()
J'aime bien le "Travail à faire individuellement" en entête des exercices...
Bonjour Carolina,
Je vois que tu as un devoir mais tu as un an de retard. C'est à rendre en 2011. Plus sérieusement maintenant, tu as déjà commencé à faire quelque chose? Tu bloques quelque part?
Je n'ai pas de SQL Server sous la main, mais je vais essayer de rester proche de la syntaxe SQL 'standard'.
La première chose que tu dois faire, c'est de modéliser tes tables. Dans ton fichier cassettes.pdf, tu as un beau modèle de données. Je vais te faire une version Oracle de ton exercice:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 CREATE TABLE membre ( no_membre VARCHAR2(10) NOT NULL, prenom_membre VARCHAR2(30) NOT NULL, nom_membre VARCHAR2(30) NOT NULL, addresse VARCHAR2(50) NOT NULL, telephone VARCHAR2(14) NOT NULL, date_nais DATE, CONSTRAINT PK_membre PRIMARY KEY(no_membre) ); CREATE TABLE location ( no_location VARCHAR2(10) NOT NULL, date_location DATE NOT NULL, montant_location NUMBER(15, 5) NOT NULL, date_retour DATE, heure_retour VARCHAR2(5), montant_retard NUMBER(15, 5), no_membre VARCHAR2(10), CONSTRAINT PK_location PRIMARY KEY(no_location), CONSTRAINT FK_location_membre FOREIGN KEY(no_membre) REFERENCES membre(no_membre), -- La colonne heure_retour est de type VARCHAR à cinq positions, où la -- troisième position est le caractère deux points (ex : 09:26). CONSTRAINT CK_heure_retour CHECK (REGEXP_LIKE(heure_retour, '(^([01])?[0-9]|2[0-3]):[0-5][0-9]')) ); CREATE TABLE film ( code_film VARCHAR2(10) NOT NULL, titre_film VARCHAR2(50) NOT NULL, annee_prod VARCHAR2(4) NOT NULL, genre VARCHAR2(2) NOT NULL, CONSTRAINT PK_film PRIMARY KEY(code_film), CONSTRAINT CK_annee_prod CHECK(REGEXP_LIKE(annee_prod, '^[[:digit:]]{4}$')) ); -- je laisse les autres tables...
1- On voudrait pouvoir conserver de façon facultative le no de cellulaire des membres.
2- Pour des raisons légales, il est nécessaire de conserver la date de naissance des nouveaux membres. Il faudra éventuellement obtenir la date de naissance des membres existants. Rendez cette date obligatoire et inscrivez la date artificielle du 1er janvier 1900 pour tous les membres
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ALTER TABLE membre ADD no_cellulaire VARCHAR2(50);
actuels en attendant d’obtenir leur vraie date.
3- Il serait utile d’enregistrer l’identité du réalisateur avec les films. Ajouter une table pour gérer les réalisateurs et chaque film doit obligatoirement être associé avec un réalisateur, quitte à ajouter le réalisateur « Inconnu ».
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 -- pour les membres existant, je mets une valeur artificielle. UPDATE membre SET date_nais = DATE '1900-01-01' WHERE date_nais IS NULL; -- pour les futurs membres, je mets une valeur par défaut ALTER TABLE membre MODIFY date_nais DEFAULT DATE '1900-01-01' NOT NULL ;
4- Ajouter Martin Scorsese et Stanley Kubrick parmi les réalisateurs. Indiquez Martin Scorsese comme le réalisateur de Raging Bull et Taxi Driver; Stanley Kubrick comme le réalisateur de A Clockwork Orange.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 -- Pour info, je n'ai pas voulu mettre des contraintes de type NOVALIDATE! CREATE TABLE realisateur ( no_realisateur VARCHAR2(10), nom_realisateur VARCHAR2(50), CONSTRAINT PK_realisateur PRIMARY KEY (no_realisateur) ); INSERT INTO realisateur(no_realisateur, nom_realisateur) VALUES('0', 'Inconnu'); ALTER TABLE film ADD no_realisateur VARCHAR2(10); UPDATE film SET no_realisateur = '0'; ALTER TABLE film MODIFY no_realisateur NOT NULL; ALTER TABLE film ADD CONSTRAINT FK_film_realisateur FOREIGN KEY (no_realisateur) REFERENCES realisateur;
5- Ajouter un total dans la location pour contenir la somme du montant de location et du montant de retard. Ce total est obligatoire puisque le montant de location est obligatoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 INSERT INTO realisateur VALUES('2', 'Martin Scorsese'); INSERT INTO realisateur VALUES('3', 'Stanley Kubrick'); UPDATE film SET no_realisateur = '2' WHERE titre_film IN ('Raging Bull', 'Taxi Driver'); UPDATE film SET no_realisateur = '3' WHERE titre_film = 'A Clockwork Orange'; COMMIT;
Bon, j'avoue que je n'ai testé aucun de ces ordres SQL et la syntaxe SQL Server est surement différente. Mais le but est que tu puisses avoir une idée de ce que tu dois faire. Honnêtement, il ne te faut pas plus d'une heure pour faire ton exercice complètement. Il suffit de te lancer. Et si tu bloques quelque part, fais signe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ALTER TABLE location ADD montant_total NUMBER(15, 5) GENERATED ALWAYS AS (montant_location + montant_retard) VIRTUAL,;
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager