1 / 30

מודל היחסים

מודל היחסים. The Relational Model. למה דווקא מודל זה?. מודל היחסים הינו ביסוד של כל DBMS בשימוש כיום הדברים שנלמד בהרצאות הינם נצר כ ים לשימוש בכל DBMS סיבות להצלחה של מודל היחסים : מודל פשוט: כל הנתונים בטבלאות מאפשר להביע שאילתות בשפה בעלת פשטות ועצמה: SQL

nishi
Download Presentation

מודל היחסים

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. מודל היחסים The Relational Model

  2. למה דווקא מודל זה? • מודל היחסים הינו ביסוד של כל DBMS בשימוש כיום • הדברים שנלמד בהרצאות הינם נצרכים לשימוש בכל DBMS • סיבות להצלחה של מודל היחסים: • מודל פשוט: כל הנתונים בטבלאות • מאפשר להביע שאילתות בשפה בעלת פשטות ועצמה: SQL • מאפשר ביצוע שאילתות מתוחכמות תוך זמנים קצרים

  3. דוגמה של בסיס נתונים במודל היחסים • שבוע שעבר ראינו דוגמה פשוטה של בסיס נתונים במודל היחסים: • עכשיו נראה דוגמה יותר מפותחת עם ארבע טבלאות • יש לטבלה מֻנָּח פורמלי הבא מתורת הקבוצות: יחס (באנגלית: Relation) • מכאן מודל היחסים שפירושו מודל הטבלאות

  4. נתונים וסכמה במודל היחסים Data and Schema in the Relational Model

  5. סכמה לעומת נתונים • סכמה מתארת את מה הנתונים מיצגים: • סוגי ישויות בעולם • למשל: סטודנטים, מחלקות, קורסים • קשרים בין סוגי ישויות שונים • למשל: קיים קשר בין סטודנט לבין הקורסים שהוא לומד • אילוצים שצריכים להתקיים תמיד • למשל: סטודנט לא יכול ללמוד קורס שלא קיים • וכו' (נלמד יותר פרטים בהמשך) • על פי רוב, מגדירים את הסכמה בהתחלה (לפני שמכניסים נתונים ראשונים) והיא לא משתנה הרבה • בניגוד לזה, הנתונים משתנים הרבה. דוגמאות הנתונים: • יוסי הינו סטודנט של שנה ב' • יוסי לומד בסיסי נתונים

  6. נתונים במודל היחסים • הנתונים שמורות בשורות ועמודות של הטבלה • לשורות מכנים רשומות (באנגלית: Tuples) • לעמודות מכנים אטריבוטים (באנגלית: Attributes) אושדות • כל שורה בטבלה מתארת: • ישות (קורס בדוגמה) ו\או • קשר בין שתיים או יותר ישויות (קשר בין קורס למחלקה בדוגמה) • כל פריט ברשומה נקרא ערךשל אטריבוט • למשל, הערך של אטריבוט "מס' נקודות" עבור בסיסי נתונים הוא 3

  7. ערכים צריכים להיות אטומיים • כלל: שאילתות לא יכולות לחפש נתונים לפי קריטריונים המתייחסים לחלקים של ערכים • דוגמה: עם יש אטריבוט "רשימת קורסים שהסטודנט למד", אז אין אפשרות להגיש שאילתה "האם סטודנט ראובן למד קורס בסיסי נתונים?" • במילים אחרות: ערכים צריכים להיות אטומיים • כלומר, ביצוע שאילתות עף פעם לא יחייב בדיקת חלק של ערך אטריבוט • יש יציאות מכלל זה ונראה אותם בהמשך הקורס • בדיקת הבנה: האם רשימה של קורסים שהסטודנט למד יכולה להיות ערך אטומי?

  8. -- ערך מיוחדNULL • NULL הינו ערך מיוחד שמתאים לכל טיפוס • לכן הוא יכול להופיע בכל אטריבוט (חוץ מהמקרים שנפרט בהמשך) • לערך NULL יש אחת משתי משמעויות: • הערך האמתי לא ידוע • דוגמה: הסטודנט עדיין לא נבחן ולכן הציון הסופי בקורס לא ידוע • האטריבוט אינו בר-יישום (not applicable) לרשומה הספציפית • דוגמה: אין מבחן אמצע בקורס • רושמים לפעמים (null)

  9. סכמה במודל היחסים • לכל טבלה יש שם מתאים • יש נוהגים לתת שם בלשון יחיד (כמו COURSE). • לכל אטריבוט יש שם וטיפוס ("POINTS" הינו integer)

  10. אילוצים בסכמה • חלק חשוב בסכמה הינו אילוצים • אילוצים משקפים חוקים בתחום או מדיניות הארגון שעבורו מעצבים את בסיס הנתונים • דוגמאות האילוצים: • אף קורס לא יכול להעניק יותר מ-4 נקודות • לא יכולים להיות שני קורסים עם שם אחד באותה מחלקה • כל קורס שייך למחלקה • שני סוגי אילוצים האחרונים הינם מאד חשובים ונדבר אליהם בנפרד

  11. אילוצי מפתח מפתח, מפתח ראשי מפתח זר

  12. מפתח ומפתח ראשי • מפתח הינו קבוצה של אטריבוטים כזאת שנתינת ערכים לכל האטריבוטים בקבוצה מזהה את הרשומה באופן ייחודי • דוגמה: הקבוצה {Student ID}הינה מפתח • אנחנו נדבר בדרך קצרה ופחות פורמלית: "Student ID" הינו מפתח

  13. דוגמה של מפתח בן כמה אטריבוטים • מה הוא המפתח של טבלת הקורסים? במה תלויה התשובה? • אם קורס עם אותו שם יכול להימסר בשתי מחלקות אז... • אם כל קורס נמסר רק במחלקה אחת אז...

  14. מפתח לעומת מפתח ראשי • מה הם המפתחות בטבלת המחלקות: • תמיד בוחרים מפתח אחד בשם מפתח ראשי • מסמנים ע"י קו תחתי • בדוגמה שלנו זה "DEPT_ID" • אטריבוטים של מפתח ראשי לא יכולים לקבל ערך של NULL

  15. שמושים של מפתח ראשי • למפתח ראשי יש כמה שימושים חשובים: • בהינתן ערכים של אטריבוטים במפתח ראשי, DBMS יכולה למצוא את הרשומה המתאימה מאד מהר. • למשל: אם ידוע מס' סטודנט, אפשר מאד מהר לשלוף את כל המידע עבור סטודנט זה. • אפשר לקשר רשומות בשתי טבלאות על ידי מפתח ראשי. על זה נדבר בשקופית הבאה.

  16. מפתח זר • נשים לב איך שתי הטבלאות הבאות קשורות: • קורס מקושר למחלקה על ידי מפתח ראשי של מחלקה • למשל: C++ הינו קורס של מחלקת CS • אפשר בקלות לדעת את כל השאר דברים על מחלקת CS, כי DEPT_ID הינו מפתח ראשי של טבלת המחלקות • האטריבוטDEPT_ID בטבלת הקורסים הינו מפתח זר המצביע לטבלת המחלקות (טבלת אב) (טבלת בן)

  17. הערות חשובות על מפתח זר • חשוב: יש צורך להודיע ל-DBMS שאטריבוט או אטריבוטים מסוימים הינם בעצם מפתח זר המצביע לטבלה אחרת. • כי בלי זה ה-DBMS לא תבדוק אילוץ מפתח זר ויתאפשרו טעויות מסוג זה: D

  18. הערות חשובות על מפתח זר • אם מפתח ראשי בטבלת אב מורכב מכמה אטריבוטים, אז מפתח זר גם צריך להיות מורכב מכמה אטריבוטים במקביל

  19. הפרות של אילוץ מפתח זר • קיימים כמה סוגי הפרה של אילוץ מפתח זר. נסביר אותם דרך דוגמה: • בקשה להוסיף רשומה חדשה לטבלת ציונים ובה ערך של Student_ID שלא מופיע בטבלת סטודנטים. • בקשה לשנות ערך של Student_ID ברשומה קיימת בטבלת ציונים כך שהערך החדש לא מופיע בטבלת סטודנטים • בקשה למחוק סטודנט או לשנות ID של סטודנט בטבלת סטודנטים וקיימים ציונים עבור אותו סטודנט. • תוצאה: רשומה אחת או יותר בטבלת ציונים "תלויים באויר" (dangling” tuples") יטופל באחד הדרכיםהבאות... DBMS לא תרשה!

  20. דרך א': RESTRICT (למנוע שינוי) • אם נבחר בדרך זו: • ה-DBMS יסרב למחוק סטודנט אם יש ציונים עבורו • ה-DBMS יסרב לשנות ID של סטודנט אם יש ציונים עבורו

  21. דרך ב': CASCADE (אפקט האשד) • אם נבחר בדרך זו: • ה-DBMS ימחק את כל הציונים עבור סטודנט הנמחק • ה-DBMS ישנה ID של סטודנט בכול רשומות הציונים שלו • האופציה הזאת לא קיימת ב-ORACLE

  22. דרך ג': ) SET NULLלשים (NULL • אם נבחר בדרך זו: • ה-DBMS ישים Student_ID של NULL בכול רשומות הציונים של סטודנט הנמחק • ה-DBMS ישים Student_ID של NULL בכול רשומות הציונים של סטודנט שID- שלו השתנה • האופציה הזאת לא קיימת ב-ORACLE

  23. קשרים: יחידלרבים ורבים לרבים One-To-Many and Many-To-Many Relationships

  24. קשר יחיד לרבים • נתבונן שוב פעם על הקשר בין קורסים ומחלקות: • זהו קשר יחיד לרבים: בכל מחלקה יכולים להיות הרבה קורסים, אבל כל קורס שייך למחלקה אחת • היה מספיק להוסיף מפתח זר בצד של רבים

  25. קשר רבים לרבים • נתבונן על הקשר שבין סטודנטים לקורסים • כל סטודנט יכול ללמוד הרבה קורסים • בכל קורס לומדים הרבה סטודנטים • זהו קשר רבים לרבים • האם נוכל להביע את הקשר בטבלאות אלו עצמם? • כן, אבל נצטרך לשכפל הרבה מידע וזה תמיד לא טוב (על זה נדבר בעומק בהרצאה אחרת) • אנחנו צריכים ליצור טבלה מיוחדת בשביל הקשר • בבסיס נתונים של הדוגמה טבלה כזאת קיימת: ציונים! • בטבלת הציונים יש מפתח זר עבור סטודנט ומפתח זר עבור קורס. • בעצם, כל רשומה היא קשר בין סטודנט לקורס!

  26. עוד דוגמה של קשר רבים לרבים • נניח שדרוש בסיס נתונים לשמור נתונים על בקשות קבלה לישיבה גדולה: • עבור כל ישיבה שומרים את שם הישיבה, עיר, ומספר המקומות שנשארו • עבור כל תלמיד שומרים מס' זהות, שם, טלפון ולאילו ישיבות הוא רוצה להתקבל • אילו טבלאות ניצור בהנחה שיכולות להיות כמה ישיבות עם אותו שם בערים שונות, אבל לא באותה עיר? • תשובה: • {"Z_T"} הינו מפתח זר המצביע לטבלת TALMID • {"NAME_Y", "CITY_Y"} הינו מפתח זר המצביע לטבלת YESHIVA

  27. בסיסי נתונים לעומת גיליונות אלקטרוניים Databases versus Spreadsheets

  28. מתי משתמשים בגיליונות אלקטרוניים • היעודים של בסיסי נתונים (כמו ב-ORACLE) ושל גיליונות אלקטרוניים (כמו ב-EXCEL) הינם מאד שונים • חשוב לדעת לבחור את הכלי הנכון עבור המשימה שלפנינו • נשתמש בגיליונות אלקטרוניים כאשר: • יש לנו נתונים שנכנסים לאחת או כמה טבלאות בלי קשרים ביניהם • יש לנו מודל עם פרמטרים של איזו תופעה או תהליך ואנחנו רוצים לדעת מהר תשובה לשאילה מסוג: "מה יהיה אם נגדיל פרמטר פלוני?" • למשל: המכונה מיד אחרי טיפול מייצרת 1000 חלקים כל יום. כל חלק נמכר ב 3 ₪. אם לא מטפלים במכונה, הייצור יורד ב-50 חלקים ביום כל חודש. הטיפול עולה 20,000 ₪. נכון לעכשיו מבצעים טיפול פעם בחצי שנה. יש לנו רשימת רווחים ל-5 שנים אחרונות. איך ובכמה הרווחים ישתנו אם נטפל במכונה כל חודשיים?

  29. מתי משתמשים בבסיסי נתונים • נשתמש בבסיסי נתונים כאשר: • הנתונים מצריכים הרבה טבלאות עם קשרים ביניהם • נצטרך לעבד כמויות גדולות של נתונים • נצטרך לאפשר גישה לנתונים בו-זמנית למספר רב של משתמשים • נצטרך לבצע שאילתות מסובכות כדי לשלוף או לעדכן נתונים

More Related