530 likes | 714 Views
בסיסי נתונים מכווני אובייקטים. חסרונות המודל הטבלאי. ייצוג קשר ע"י מפתח זר בלבד * פירוק למספר רב של טבלאות * שחזור הישות מחייב פעולות Join שהינן יקרות ולא יעילות. חסרונות המודל הטבלאי. מגוון מצומצם של טיפוסי נתונים נתמכים
E N D
חסרונות המודל הטבלאי • ייצוג קשר ע"י מפתח זר בלבד * פירוק למספר רב של טבלאות * שחזור הישות מחייב פעולות Joinשהינן יקרות ולא יעילות
חסרונות המודל הטבלאי • מגוון מצומצם של טיפוסי נתונים נתמכים • אי יכולת לשלב פונקציה בפקודת SQL
התפתחות שני מגמות עיקריות • החלפת המודל הטבלאי ל- - ODBMS • פועלות בהרמוניה עם סביבות התכנות מוכוונות האובייקטים כגון ++C, JAVA, ו- Small Talk • הרחבה ושיפור המודל הטבלאי ORDBMS - בObject Relational DatabaseManagement Systems
מושגי יסוד במודל האובייקטים • אובייקט - ישות הניתנת לזיהוי באופן חד ערכי ומורכבת משני מרכיבים: תכונות (Attributes) המתארות את מצב האובייקט (Object State) ושירותים המתארים את הפעולות שהאובייקט מבצע
זיהוי אובייקט (Object Identification) • OID • מזהה זה נוצר ע”י המערכת ואינו תלוי בתכונות האובייקט • 64 סיביות שחלקן מזהה את הטבלה וחלקן מזהה את השורה בטבלה
זיהוי אובייקט (Object Identification) • מזהה המערכת ניתן ע”י המערכת כשנוצר אובייקט • המזהה לא ניתן לאובייקט אחר גם לאחר בטול האובייקט • מזהה האובייקט הינו חד ערכי ברמת המערכת כולה • המזהה יעיל וקומפקטי (ובעל מבנה סטנדרטי) יותר ממפתח של טבלה • המזהה יכול להיות שקוף למשתמש ומשמש רק את המערכת
תכונות של אובייקט(Object Attributes) • תכונה יכולה להיות תכונה פשוטה שמקבלת ערך בודד וכן תכונה מורכבת (Complex Attribute) ולקבל אוסף ערכים (שלא כבמודל הטבלאי) • ניתן להגדיר את מרחב הערכים של תכונה כאובייקט אחר
תכונות של אובייקט(Object Attributes) • לדוגמא: תכונות האובייקט “סטודנט” הן: מספר סטודנט, שם סטודנט, כתובת, רשימת החוגים בהם הוא רשום ורשימת הקורסים אותו סיים • 2 התכונות האחרונות הן מסוג Reference Attributeהמכילות הצבעה (רשימה של( OID לאובייקטים אחרים (חוגים, קורסים) • הדבר מהווה ייצוג ישיר של קשרים בין אובייקטים ללא צורך בשימוש בטבלאות קשר מיוחדות
דוגמא לאובייקט עם תכונה שמרחב הערכים שלה הוא אובייקט אחר קורס א סטודנט קורס ב קורס ג’
שירותים (Methods) • פעולה שהאובייקט מסוגל לבצע • לכל שירות שני מרכיבים: הממשק של השירותים והיישום של השירות (הלוגיקה) • הממשק (Method Interface) מגדיר את שם השירות, פרמטרים לקלט ופרמטרים לפלט • אוסף כל השירותים שהאובייקט מספק מגדיר את התנהגותהאובייקט (Object Behavior) • שירות יכול להפעיל שירותים אחרים הן של אותו אובייקט והן של אובייקטים אחרים
דוגמא לשירותים (Methods) • נניח שמחלקת “סטודנט” תומכת בשירותים הבאים:יצירת סטודנט חדש, שינוי נתוני סטודנט, רישום סטודנט לקורס, רישום סטודנט לחוג, הצגת ציוני סטודנט • ממשק השירות “רשום סטודנט לקורס” יהיה: (S_C.Add_New_course(Course_#,Student_#, Date, Status) • הדרך לבקש מאובייקט לבצע שירות היא רק ע”י שיגור הודעה (Message)
שיחה בין אובייקטים רישום קורס סטודנט סטודנט_קורס בדיקת תקציב מחלקה
שיחה בין אובייקטים • אובייקט “סטודנט” שולח הודעה “רשום סטודנט לקורס” לאובייקט “סטודנט_קורס” • תוך כדי ביצוע השירות האובייקט “סטודנט_קורס” שולח הודעה לאובייקט “מחלקה” - “בדיקת תקציב” • האובייקט “סטודנט” אינו מודע לצורה בה מתבצע השירות “רישום סטודנט לקורס” ולעובדה שתהליך הרישום מבצע בדיקה תקציבית
אריזה - כימוס – הסתרת מידע Encapsulation • ההתייחסות לישות היא כאל אובייקט בו השירותים והנתונים ארוזים יחד • כל תוכנית הפונה לאובייקט אינה מכירה את מבנה הנתונים/לוגיקה • הכרת הממשק (השירותים) בלבד
כימוס - אריזת המצב וההתנהגות Encapsulation • לדוגמא - ניתן לשנות את הליך הרישום של סטודנט לקורס מבלי שאף אובייקט אחר יהיה מודע לשינוי זה
מחלקת אובייקטים • אוסף של כל האובייקטים מאותו סוג שהם בעלי אותן תכונות ואותה התנהגות • יש להבחין בין מחלקה ל- אובייקט(Object Instance)
קשריםבין אובייקטים המבוטאים ע”י תכונת ייחוס (Reference Attribute)
הורשה ( Inheritance) • ניתן לפצל מחלקת אובייקטים לתתי מחלקות • כל תת-מחלקה יורשת את כל התכונות והשירותים של כל המחלקות הנמצאות מעליה בהיררכיה • בנוסף יש לכל תת מחלקה מספר תכונות ושירותים ייחודיים • מאפשר התפתחות הדרגתית של המערכת הן מבחינת בסיס הנתונים והן מבחינת הלוגיקה (אלגוריתם)
דריסה (Overriding) • אם תכונה או שירות קיימים בתת-מחלקה הם דורסים את ההגדרה שעוברת בירושה
מערכותORDBMS • Stonebraker מברקלי ומבעלי חברת Informixפיתח מערכת לניהול בסיסי נתונים ששילבה רעיונות של מודל האובייקטים עם המודל הטבלאי המלווה בתקן SQL3 • יצרנים שונים החלו לשלב בתוך המערכות שלהם כמה רעיונות מתקן - SQL3 - יבמ עםDB2 יInformix עם Universal Server ו אורקל עם Oracle
תקן SQL3 - עקרונותטיפוס הנתונים (BLOB- (Binary Large Object • רצף גדול של סיביות • העמודה אינה מכילה את האובייקט עצמו אלא רק הצבעה (Pointer) לקובץ חיצוני המכיל אותו • למשל: תמונה, טקסט, ווידאו, ו- הקלטת קול • לא ניתן לבצע עליהם פעולות • כדי להציג את האובייקט דרושה התוכנה שבנתה אותו או תוכנת תצוגה מתאימה
טיפוס נתונים מופשטAbstract Data Type - דוגמא: • .3 שם הפרוצדורה הממירה את הנתונים ממבנה ASCIIלמבנה פנימי • 4 .שם הפרוצדורה הממירה את צורת הייצוג הפנימי למבנה ASCII לצורך הצגת הערכים על המסך/מדפסת
טיפוס נתונים מופשט • בשורה 5 מופיעה העמודה מיקום העיר המכילה את הקואורדינטות של עיר המגורים הסטודנט
פונקציות המטפלות בטיפוס הנתונים החדש • הפונקציה יכולה להיכתב בשפת תכנות כל שהיא כגון ++C • שורה 3 מגדירה את שם הקובץ המכיל את הפונקציה • הפונקציה מחזירה מספר עשרוני המייצג את המרחק בק”מ מהמכללה • הפרוצדורה מכילה במשתנה פנימי את נקודות הציון של מיקום המכללה
שימוש בפונקציה המטפלת בטיפוס נתונים חדש - דוגמא לשאילתת SQL • שליפת כל הסטודנטים הגרים במרחק שמעל 25 ק”מ מהמכללה:
טיפוס נתונים חדש - סיכום • היכולת להוסיף טיפוס נתונים חדש והיכולת להגדיר פונקציות חדשות ולשלב אותם בתוך שאילתת SQL - מאפשרת פיתוח יישומים מתוחכמים בצורה נוחה יחסית • ללא זאת היה צורך לכתוב תוכנית יישום השולפת שורה של סטודנט, בודקת אם הוא גר במרחק מתאים מהמכללה
טיפוס נתונים מורכב • בנוי מטיפוסי נתונים בסיסיים וטיפוסי נתונים מופשטים גם יחד • זוהי צורה בה תקן SQL3 מאפשר להגדיר מחלקת אובייקטים (Object Class) • הגדרה של נתונים ופונקציות גם יחד
טיפוס נתונים חדש – כתובת “סטודנט”
דוגמא א’ - טיפוס נתונים חדש - “סטודנט” המכיל את כל נתוני הסטודנט INTEGER
יצירת טבלת "סטודנטים" • CREATE TABLE STUDENTS OF TYPE STUDENT
טיפוס נתונים מורכב • נניח שבנינו פונקציה המחשבת את סכום הספרות של משתנה נומרי וקראנו לו Sum_digits • נשלוף את כל הסטודנטים הגרים בחיפה ושסכום הספרות של המיקוד שלהם הוא 50
טיפוס נתונים מורכב • בשורה 22 ישנה פונקציה מסוג ACTORשהינה חלק מהגדרת טיפוס הנתונים המורכב • הפונקציה מקבלת כפרמטר את כתובת הסטודנט ומחזירה את עיר המגורים (רעיון ההכמסה) • נוכל לבקש את עיר המגורים של כל הסטודנטים ששמם מתחיל באות A
קשרים בין טבלאות ע”י טיפוס נתונים מצביע (Reference) • התוכן של המצביע OID : של השורה המתאימה בטבלה האחרת או באותה טבלה • דוגמא: נגדיר טיפוס נתונים חדש “מפה”
קשרים בין טבלאות ע”י טיפוס נתונים מצביע (Reference) • נגדיר טבלה המכילה אוסף של מפות הערים
קשרים בין טבלאות ע”י טיפוס נתונים מצביע (Reference) • נגדיר משתנה חדש בטבלת סטודנטים: MAP-ID המצביע אל מפת העיר שבו מתגורר הסטודנט INTEGER
קשרים בין טבלאות ע”י טיפוס נתונים מצביע (Reference) • כדי לפנות למשתנה בטבלת מפות יש לבצע - פענוח המצביע (Dereferencing)ע”י הפונקציה Deref • לדוגמא: הצג את מספר התושבים בעיר המגורים של כל הסטודנטים המתגוררים במרחק גדול מ- 25 ק”מ מהמכללה: • הפונקציהDerefמחליפה את השימוש בפעולתJoinויעילה ממנה
יצירת קשר מסוג N:M • נגדיר שאילתא המציגה לגבי סטודנטים שקבלו 90 בסמסטר קיץ 2008 את מספרי הסטודנטים ואת מספרי הקורסים הרלוונטים: SUM2007
יצירת קשר מסוג N:M • דוגמא נוספת: רוצים לעדכן בטבלת ציונים את הציון והסמסטר של סטודנט שמספרו: 115 ומס’ הקורס: M-110 FALL2007
פונקציותSQL • עד כה ראינו פונקציות הכתובות בשפת תכנות כל שהיא • תקן SQL3תומך גם בפונקציות פנימיות • הפונקציות משתמשות בהרחבות מסוימות של שפת SQL • תחביר הפקודה:
פונקציותSQL • דוגמא: פונקציה המחזירה רשימת הסטודנטים המקיימים תנאי שוויון לגבי ציון סופי וסמסטר:
פונקציותSQL • נוכל לכתוב שאילתא המציגה את רשימת הסטודנטים שקבלו ציון 90 בסמסטר: חורף 2007: • SELECT STUDENT_DATA (90, ‘WIN2007’)
טיפוס נתונים מסוג “ אוסף מצביעים” (SETOF) • טיפוס הנתונים Reference מכיל מצביע אחד בלבד • לעומתוSetof מכיל מספר בלתי מוגבל של מצביעים • כל אחד מהמצביעים הוא במבנה של OID
דוגמא • נגדיר עמודה בטבלת “ סטודנטים ” המכילה את רשימת כל הקורסים אליהם הסטודנט נרשם:
טיפוס נתונים מסוג “ אוסף מצביעים” (SETOF) • שאילתא המציגה את שמות הקורסים אליהם רשומים סטודנטים ששמם מתחיל באות “A” Name,
טיפוס נתונים מסוג "מערך" (Array) • דוגמא: יש לנהל 4 תקציבים רבעוניים למחלקה בתוך שורת מחלקה • במקום להגדיר 4 עמודות נפרדות או לפרק את התקציב לטבלה נפרדת - נגדיר עמודה בעל טיפוס נתונים של מערך בגודל 4
טיפוס נתונים מסוג "מערך" (Array) Department)
טיפוס נתונים מסוג “ מערך ”(Array) • נרצה להציג את התקציב של הרבעון השני עבור כל המחלקות בהן התקציב של הרבעון השני גדול מהתקציב של הרבעון הראשון: