Home

corrigé du DS de février 2007

image

Contents

1. Le processus est donn dans le dessin suivant suite l insertion d un point la proc dure VOISIN nous donnera le segment le plus proche de la bordure En s appuyant sur le nouveau point ajouter et ce segment on cr era deux nouveaux segments et un nouveau triangle R sultat de la Bordure du proc dure terrain VOISIK id e e i Point g l ajouter M Nouveaux segments du nouveau triangle Il s agira dun TRIGGER AFTER INSERT c est dire que l on effectuera d abord l ordre INSERT puis le trigger afin de respecter les contraintes d int grit Les identificateurs des deux nouveaux segments et du nouveau triangle seront g n r s par l appel aux SEQUENCEs L instruction pouvant lancer le trigger est de la forme INSERT INTO TABLE SOMMET VALUES nextval seq sommet 345 56 678 98 45 89 Deux remarques pour le code du trigger 1 cause des cl s trang res il faudra d abord cr er les deux segments puis le triangle 2 comme nous avons deux cl s de nouveaux identificateurs de segments la clause CURVAL ne pourra pas tre utilis e d o la n cessit de cr er deux variables de no segment CREATE OR REPLACE TRIGGER AFTER INSERT ON SOMMET DECLARE no segment voisin integer no segment A integer no segment B integer no point A integer no point B integer BEGIN VOISIN new no sommet no segment voisin SELECT no pointl no point2 INTO no point A no point
2. B FROM SEGMENT WHERE no segment no segment voisin no segment nextval seq no segment no segment B nextval seq no segment INSERT INTO TABLE SEGMENT no segment A no point A new no sommet INSERT INTO TABLE SEGMENT no segment B no point B new no sommet INSERT INTO TABLE TRIANGLE nextval seq no triangle no segment voisin no segment A no segment B END C5 On modifie la table SEGMENT afin qu elle devienne la suivante SEGMENT no segment no sommetl no sommet 2 no trianglel no triangle2 o no trianglel et no triangle repr sentent les num ros des triangles situ s de chaque c t du segment en question Comment r gler de mani re simple les segments situ s sur le bord du terrain qui n ont qu un seul voisin Apr s avoir 5 choisi une solution pr ciser les cons quences en mati re de contraintes d int grit et d ordonnancement du chargement 4 points premi re vue ajouter les deux attributs no trianglel no triangle2 revient ajouter deux cl s trang res mais c est plus compliqu car cela reviendrait avoir des cl s trang res avec r f rences cycliques ce qui est interdit La seule solution est de cr er des attributs normaux et ensuite voir si l on peut modifier la table avec un ordre du type ALTER TABLE ADD CONSTRAINT Une des solutions pour r gler le probl me des triangles de la bordure est de
3. WITH 1 INCREMENT BY 1 CREATE SEQUENCE seq striangle START WITH 1 INCREMENT BY 1 C2 Faire une vue donnant la liste des segments situ s sur la bordure du terrain 3 points Alors que les segments situ s l int rieur ont tous deux triangles de chaque c t les segments situ s sur la bordure n ont qu un seul triangle COUNT Il existe plusieurs fa ons de r diger une telle vue En voici une en deux tapes elle consistera en une premi re vue TRIANGLE1 afin de normaliser la table triangle sur laquelle s appuiera la vue BORDURE CREATE VIEW TRIANGLEI no triangle no segment AS SELECT no triangle no segmentl FROM TRIANGLE UNION SELECT no triangle no segment2 FROM TRIANGLE 3 UNION SELECT no triangle no segment3 FROM TRIANGLE CREATE VIEW BORDURE no segment AS SELECT no segment FROM TRIANGLE1 GROUP BY no segment HAVING Count 1 C3 Dans un tel mod le de terrain si l on veut conna tre l altitude d un point quelconque du terrain on se base sur l approximation planaire suivante z Axx Bx y C Ces trois coefficients A B C ont t calcul s et stock s dans la table suivante COEF no triangle A B C R diger la commande ALTER qui permet d ajouter trois attributs A B et C la relation TRIANGLE Quelles sont les deux fa ons pour charger les valeurs Donner le code de l une d entre elles au choix Supposons qu il manque un ou plusieurs t
4. de la v rification En d autres termes puisque dans un tel cas de figure on a affaire une contrainte d int grit particuli re qui ne peut tre r dig e de mani re d clarative on r soudra le probl me de mani re proc durale
5. 3IF F vrier 2007 R Laurini DS de BD relationnelles de F vrier 2007 CORRECTION Les corrections sont donn es en italique Remarques g n rales 1 Il faut toujours expliquer ce que l on fait dans la correction ci joint les textes en italiques ne sont pas des explications pour les tudiants afin qu ils comprennent la solution mais des l ments de r flexion qui donnent tre donn s au professeur afin qu il puisse juger de vos capacit s de r solution de probl me Par exemple une requ te SQL sans commentaires AVANT se voit syst matiquement attribuer 50 seulement de la note globale les commentaires AVANT servent expliquer le cheminement de votre raisonnement Sils sont r dig s apr s la requ te ils sont bien videmment inutiles donc pas not s on ne vous demande pas de r diger un manuel d utilisation mais d expliquer votre d marche de mani re claire car un ing nieur doit toujours expliquer et argumenter avant de faire De plus expliquer un raisonnement par un sch ma est une alternative souvent int ressante 2 Attention la pr sentation Des copies mal r dig es brouillons ou pleines de fautes d orthographes pourront entra ner une r duction de un ou deux points 3 Syst matiquement je demande une question r diger en langue anglaise avec 2 points de bonus si l anglais est excellent A Dans la cr ation d une BD relationnelle quel est le r le exact de
6. APPLICATION_ERROR cela correspondra un ROLLBACK qui fera que la base de donn es redeviendra dans l tat ant rieur l ordre qui avait activ le TRIGGER C Soit la base de donn es suivante qui repr sente un mod le num rique de terrain bas sur des triangles On poss de un ensemble de points dont on a mesur les coordonn es x y et l altitude z Ces points sont regroup s en triangles dont ils forment les sommets bas s sur leurs c t s appel s segments Les relations de base sont les suivantes TD FT TN LS UT AA VU Mimi TRIANGLE no triangle no segmentl no segment2 no segment3 SEGMENT no segment no sommetl no sommet2 SOMMET no sommet x y Z C1 Pour chacune de ces trois relations expliquer quelles sont les cl s primaires et les cl s trang res En d duire l ordonnancement de la cr ation des tables Donner le code en SQL en tenant compte de TOUTES les contraintes d int grit s Donner galement les CREATE SEQUENCES 3 points Dans cette formulation il est clair que l on a les l ments suivants Nom de la table Cl primaire Cl s trang res TRIANGLE no triangle no segmentl no segment2 no segment3 SEGMENT no segment no sommetl no
7. mettre la valeur NULL au sens d inapplicable dans no triangle2 Entre parenth se cette convention simplifierait l criture de la vue de la question C2 Dans ces conditions s il on opte pour mettre des valeurs NULL dans no triangle2 alors cet attribut ne pourra plus tre cl trang re voir question D s lors apr s la cr ation de la TABLE SOMMET qui reste inchang e on crira pour la cr ation de la nouvelle table SEGMENT bien videmment les deux triangles sont diff rents CREATE SEGMENT no segment integer primary key no sommetl integer foreign key references SOMMET no sommet no sommet2 integer foreign key references SOMMET no sommet no trianglel integer NOT NULL no triangle2 integer NULL CONSTRAINT CHECK no sommetl no sommet2 CONSTRAINT CHECK no segmentl no segment2 IN NNNNA Ensuite le CREATE TRIANGLE reste inchang Puis tous les INSERTS pour le remplissage des tables en commen ant par remplir la table SOMMET puis la table SEGMENT et enfin la table TRIANGLE Maintenant suite ce qui a t expliqu plus haut on peut mettre la contrainte de cl trang re sur no triangle1 Ce qui donne ALTER TABLE TRIANGLE ADD CONSTRAINT no trianglel FOREIGN KEY REFERENCES TRIANGLE no triangle Puisque l on a une contrainte sur no triangle2 qui ressemble fortement une cl trang re lors de l adjonction d un segment on pourra r diger un trigger qui se chargera
8. riangles dans la relation COEF comment d tecter explications et code cet oubli 3 points Pour ajouter les trois colonnes la table TRIANGLE il suffit d crire ALTER TABLE TRIANGLE ADD A NUMBER 10 5 ADD C NUMBER 10 5 ADD D NUMBER 10 5 Pour charger les valeurs il existe deux solutions soit un UPDATE soit un programme PL SQL Voici la solution UPDATE UPDATE TRIANGLE SET An Bp Oo SELECT A B C FROM COEF WHERE COEF no triangle TRIANGLE no triangle Pour effectuer un contr le de qualit afin de conna tre les divergences entre les deux tables on peut faire des intersections SELECT no triangle from TRIANGLE MINUS SELECT no triangle FROM COEF SELECT no triangle from COEF MINUS SELECT no trianglie FROM TRIANGLE Remarque Comme dit dans l nonc de cet examen bonus de deux points ceux qui avaient r pondu en bon anglais ou am ricain cette question C4 On d sire agrandir le terrain en ajoutant un nouveau point suppos ext rieur au contour du terrain Supposons que l on dispose d une proc dure VOISIN no sommet ajoute no segment voisin qui donne le num ro du segment de la bordure le plus proche du sommet que l on d sire ajouter Apr s avoir donn les explications n cessaires r diger le trigger qui l ajout d un tel point cr e automatiquement les tuples n cessaires dans les tables SEGMENT et TRIANGLE 3 points
9. s mots cl s suivants FOREIGN KEY UNIQUE REFERENCES PCTFREE Est il possible de les combiner avec le mot cl NULL 2 points T Le mot cl FOREIGN KEY s applique lorsque l on d sire qu un attribut soit cl trang re et le mot cl REFERENCES indique la cl primaire correspondante Le mot cl UNIQUE est utilis lorsqu on d sire que toutes les valeurs soient diff rentes L extrait de la grammaire suivant montre qu il n est pas possible de combiner les trois premiers mots cl s avec NULL inline_constraint out_of line_constraint references _clause REFERENCES En ce qui concerne le dernier mot cl PCTFREE celui s applique au niveau physique pour indiquer le pourcentage de place libre dans les blocs physiques en de duquel il ne sera plus possible d ins rer de nouvelles lignes Puisque le mot cl PCTFREE est totalement ind pendant du mot cl NULL il n y aucun probl me ce qu ils soient combin s B Dans le cas d un TRIGGER AFTER d tailler le m canisme du fonctionnement lorsque le trigger doit annuler l v nement qui l avait activ 2 points Dans le cas d un TRIGGER AFTER l ordre qui l a activ a t ex cut auparavant puis suivi du trigger en question Si dans le corps du trigger on est amen supprimer l ordre qui l avait lanc gr ce l appel d une proc dure du type RAISE_
10. sommet2 SOMMET no sommet D s lors il faudra cr er les tables en premier SOMMET puis SEGMENT et TRIANGLE en dernier Cr ation de la table SOMMET on pourra mettre la contrainte additionnelle sp cifiant que les coordonn es doivent tre valu es CREATE SOMMET no sommet integer primary key x number 10 5 NOT NULL y number 10 5 NOT NULL L4 NON Cr ation de la table SEGMENT il semble important de sp cifier que les deux extr mit s du segment doivent tre diff rentes ce qui donne CREATE SEGMENT no segment integer primary key no sommetl integer foreign key references SOMMET no sommet no sommet2 integer foreign key references SOMMET no sommet CONSTRAINT CHECK no sommetl no sommet2 L4 uONONON Cr ation de la table TRIANGLE de m me il semble int ressant de sp cifier que les trois segments doivent tre diff rents CREATE TRIANGLE no triangle integer primary key no segmentil integer foreign key references SEGMENT no segment no segment2 integer foreign key references SEGMENT no segment no segment3 integer foreign key references SEGMENT no segment IN ONNAN NASN CONSTRAINT CHECK no segmentl no segment2 CONSTRAINT CHECK no segmentl no segment3 CONSTRAINT CHECK no segment2 no segment3 7 Pour la cr ation des s quences il suffira d crire CREATE SEQUENCE seq sommet START WITH 1 INCREMENT BY 1 CREATE SEQUENCE seq segment START

Download Pdf Manuals

image

Related Search

Related Contents

Catalog It.book - Amazing Designs  BRUDER 02210 toy  RX14 RX18 französisch A4  AVIS - Genie Industries  15-Band-Stereo-Equalizer  USER`S MANUAL  Benvenuti a bordo! - Brunswick Marine in EMEA Center  HERMA Labels Premium A4 105x297 mm white paper matt 200 pcs.  Mazda Tribute Owner's Manual  Albrecht DR 56 - ALBRECHT Audio  

Copyright © All rights reserved.
Failed to retrieve file