מערכות מסד נתונים – 236363חורף תשס"ו תרגיל בית יבש מס' 4 מועד ההגשה הינו ) 12:00PM 7.2.2006בצהריים(. יש להגיש את התרגיל בזוגות בלבד ,לתא המקצוע. בשאלות נא לפנות אל [email protected] כאשר נושא המכתב הינו .HW4 שאלה 1 נתונה הסכמה ) R(B,C,D,F,G,Hוקבוצת התלויות הפונקציונליות הבאה F = {BGdCD, GdF, CDdGH, CdFG, FdD}. א. מצא פירוק ל 3NF-המשמר מידע ותלויות ע"י הפעלת האלגוריתם הנלמד בהרצאה. ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ב. אם קיימת סכמה Riב -אשר אינה נמצאת ב ,BCNF-מחק אותה מ -והוסף במקומה תתי סכמות הנוצרות ע"י פירוק משמר מידע ל BCNF-של . Riבצע הנ"ל עבור כל סכמה ב- אשר אינה נמצאת ב.BCNF- רשום את הפירוק ' המתקבל. ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ג. האם ' משמר מידע ותלויות? נמק בקצרה. ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ד. יהי } = {R1, …,Rn פירוק של R,Fהמתקבל ע"י הרצת האלגוריתם למציאת פירוק 3NFהמשמר מידע ותלויות .תהא Riתת-סכמה אשר אינה נמצאת ב .BCNF-הוכח בקצרה שאם נמשיך לפרק את Riלפירוק משמר מידע שבו כל סכמה ב BCNF-אזי הפירוק הסופי לא יהיה משמר תלויות. ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ שאלה 2 תהא R,Fסכמה ב 3NF -אך לא ב .BCNF -תהא R,Gסכמה ב 3NF -אך לא ב ,BCNF -כאשר Rזהה בשני המקרים. א. ) 6נק'( האם R,F#Gבהכרח נמצאת ב ?3NF -אם כן נמק בקצרה .אם לא תן דוגמא נגדית קצרה )לכל היותר 4אטריביוטים ל.(R - ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ב. ) 7נק'( האם ) R,(F 4 Gיכולה להיות ב ?BCNF -אם לא נמק בקצרה .אם כן תן דוגמא קצרה )לכל היותר 4אטריביוטים ל.(R - ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ 3 שאלה : המתארים אילן יוחסין כבתרגיל בית שניXML עבור מסמכיDTD להלן מסמך <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT DB (man*, woman*)> <!ELEMENT man EMPTY> <!ATTLIST man name ID #REQUIRED > <!ELEMENT woman (birth)*> <!ATTLIST woman name ID #REQUIRED > <!ELEMENT birth (manref | woman)> <!ATTLIST birth father IDREF #REQUIRED > <!ELEMENT manref EMPTY> <!ATTLIST manref ref IDREF #REQUIRED > :הנחות מתאים לסדרwoman מתחת לכל אלמנטbirth סדר ההופעה של האלמנטים.1 .woman הכרונולוגי של לידות עבור האישה המתוארת ע"י אותו האלמנט ( שווה לאחד הערכים שלmanref- )המוגדר בref הערך של האטריביוט.2 .man השייכים לאלמנטיםname אטריביוט : המחזירותXPath 1.0 ממשו שאילתות .את שמות הנשים שיש להן נכדים זכרים כלשהם מבנים שלהן .א .1 . את כל שמות הבעלים של שרה מהנישואין השניים שלה והלאה.2 : הבאXpath-כתבו במילים )ובקצרה( מה מחזיר ביטוי ה //woman/descendant::woman[birth/@father = ancestor::birth/followingsibling::birth//woman/birth/@father] |//woman/descendant::woman[birth/@father = ancestor::birth/precedingsibling::birth//woman/birth/@father] .ב שאמורה להחזיר אתXQuery-השלימו את המקומות החסרים בשאילתא הממומשת ב .כל הצאצאים של שרה : הבאDTD-על תוצאת השאילתא לציית למסמך ה <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT result (descendants)> descendants (woman|man)*> woman (name, descendants)> man (name, descendants)> name (#PCDATA)> אשר בתוכו נמצאים כל,result תוצאת השאילתא תופיע בתוך אלמנט,כלומר .הצאצאים של שרה : הבאxml- בהינתן מסמך ה,לדוגמא <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE DB SYSTEM "HW4.dtd"> <DB> <man name="haim"/> <man name="moshe"/> <man name="shlomo"/> <woman name="sarah"> <birth father="haim"> <woman name="rivka"> <birth father="moshe"> <manref ref="shlomo"/> </birth> </woman> </birth> </woman> </DB> :תוצאת השאילתא תראה כך <result> <descendants> <woman> <name>rivka</name> <descendants> <man> <name>shlomo</name> </man> </descendants> </woman> </descendants> </result> .ג :להלן השאילתא xquery version "1.0"; declare function local:desc($births as element()*) as element()* { <descendants> { for $b in $births return if ($b/*[name()="manref"]) then ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ else( ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ______________________________________________________________ ) } </descendants> }; <result> { for $w in doc("example.xml")//woman[@name = "sarah"] return local:desc($w/birth) } </result> להכיל את שם האם או האב שאתdescendants נק'( על שמו של האלמנט5 )בונוס השם החדש של האלמנט יהיה בפורמט.צאצאיו הוא מתאר ."descendants-of-theRelevantName" :להלן התוצאה המתקבלת עבור הדוגמא הקודמת <result> <descendants-of-sarah> <woman> <name>rivka</name> <descendants-of-rivka> <man> <name>shlomo</name> </man> </descendants-of-rivka> </woman> </descendants-of-sarah> </result> הנחיות לשאלה :3 .1 .2 .3 .4 יש להגיש את הפתרון מודפס. עליכם לבדוק את נכונות השאילתות! שאילתות שתהיינה שגויות סינטקטית או הממומשות באמצעות ) Xpath 2.0רלוונטי לסעיף א'( תקבלנה ציון !0 על מנת לוודא את נכונות השאילתות עליכם לעבוד עם תוכנת XmlSpyהמותקנת בחוות המחשבים. בזמן בדיקת שאילתות Xpathיש לסמן גירסא ) 1.0ברירת המחדל היא גירסא (2.0 כפי שמודגם להלן: שאלה – 4לא להגשה נייצג מסמך XMLכאוסף עובדות ל .DATALOG -לצורך שאלה זו ,נניח שלמסמכים אין אטריביוטים אלא רק אלמנטים. נשתמש בפרדיקטים הבאים ב:EDB- • Root(ID) – ID is the unique id of the root element of the document. IDהנו מזהה ייחודי של שורש המסמך )קיימת עובדה אחת בלבד לפרדיקט .(Root • Tag(ID, TAG) – TAG is the tag of the XML element with unique id ID. Tag is not defined for the ID of the root. TAGהנו שם האלמנט של אלמנט ה XML -בעל מזהה ייחודי TAG .IDאינו מוגדר עבור המזהה הייחודי של השורש. th • Edge(ID1, ID2, POS) – The element with ID2 is the POS child of the element with ID1. האלמנט בעל ID2הנו הבן ה POS -במספר )מספר הבן השמאלי ביותר הוא (1של האלמנט בעל מזהה ייחודי .ID1 Text(ID, TEXT) – Element ID has a text child element containing the text TEXT. לאלמנט בעל מזהה ייחודי IDיש בן מסוג textהכולל את המחרוזת .TEXT לדוגמא: • ><a ><b>55</b ><b>6</b ><d ><e>909</e ></d ></a ה EDB -ייוצג ע"י: Text Text(3, 55). Text(4, 6). Text(6, 909). Edge Edge(1,2,1). Edge(2,3,1). Edge(2,4,2). Edge(2,5,3). Edge(5,6,1). Tag Tag(2,a). Tag(3,b). Tag(4,b). Tag(5,d). Tag(6,e). Root Root(1). א .כתוב תוכנית DATALOGובה פרדיקט ) r(Xהמחשב את ה ID-של הבן הראשון של השורש של המסמך. ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ב .כתוב תוכנית DATALOGובה פרדיקט ) p(Xהמחשב את ה IDs-של כל האלמנטים המוחזרים ע"י ביטוי ה/a | /child::*[2]/child::b :Xpath - ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ג .כתוב תוכנית DATALOGובה פרדיקט ) q(Xהמחשב את ה IDs-של כל האלמנטים המוחזרים ע"י ביטוי ה//b//d :Xpath - ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ד .בטא ב XPath -את שאילתת ה Datalog -הבאה כאשר sהינו פרדיקט השאילתה, כלומר ).?s(X הערה :אות גדולה מציינת משתנה. s(X) r(R), Edge(R,X,P), Tag(X, a), t(X). t(X) Edge(X,Y,P), Tag(Y, b), u(Y). u(X) Edge(X,Y,P), Tag(Y, c). ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________ ____________________________________________________________________
© Copyright 2025 Paperzz