Smart-World Surf

יחידה 2: מודל הנתונים הרלציוני ותכנון מסדי נתונים

תכנון מסדי נתונים קונספטואלי ולוגי, שימוש במודל ישויות-קשר (ER) ונורמליזציה.

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

תהליך תכנון מסדי נתונים

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

  • תכנון קונספטואלי (Conceptual Design)

    בשלב זה אנו מנתחים את דרישות המערכת ויוצרים מודל ברמה גבוהה, בלתי תלוי בטכנולוגיה ספציפית. המודל הנפוץ ביותר בשלב זה הוא מודל הישויות-קשר (ER).

    מודל ישויות-קשר (ER): מודל גרפי המייצג את הישויות הרלוונטיות במערכת, את התכונות שלהן ואת הקשרים ביניהן.
  • תכנון לוגי (Logical Design)

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

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

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

מודל הישויות-קשר (ER) והמרתו למודל רלציוני

מודל ER הוא כלי עוצמתי לתכנון קונספטואלי. הוא מאפשר לנו לייצג את העולם האמיתי בצורה מובנית וברורה.

  • מרכיבי מודל ER

    ישות (Entity): אובייקט או מושג בעל קיום עצמאי ומשמעות במערכת (לדוגמה: סטודנט, קורס).
    תכונה (Attribute): מאפיין של ישות או קשר (לדוגמה: שם סטודנט, מספר קורס).
    קשר (Relationship): אסוציאציה בין שתי ישויות או יותר (לדוגמה: סטודנט נרשם ל קורס).
  • סוגי קשרים וריבוי (Cardinality)

    קשרים מתוארים באמצעות ריבוי, המציין כמה מופעים של ישות אחת יכולים להיות קשורים לכמה מופעים של ישות אחרת:

    • אחד לאחד (1:1): מופע אחד של ישות א' קשור למופע אחד לכל היותר של ישות ב'.
    • אחד לרבים (1:N): מופע אחד של ישות א' קשור למופעים רבים של ישות ב'.
    • רבים לרבים (M:N): מופעים רבים של ישות א' קשורים למופעים רבים של ישות ב'.
  • השתתפות (Participation)

    מציינת האם כל מופע של ישות חייב להשתתף בקשר (השתתפות מלאה) או יכול שלא להשתתף (השתתפות חלקית).

  • המרת מודל ER למודל רלציוני

    זהו שלב קריטי בתכנון הלוגי. כל ישות הופכת לטבלה, תכונות הופכות לעמודות, ומפתחות ראשיים וזרים מוגדרים כדי לשמר את הקשרים. קשרי M:N לרוב הופכים לטבלה נפרדת.

נורמליזציה: אופטימיזציה של סכימת מסד הנתונים

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

תלות פונקציונלית (Functional Dependency - FD): קשר בין תכונות שבו ערך של תכונה אחת (או קבוצת תכונות) קובע באופן ייחודי את הערך של תכונה אחרת (לדוגמה: מספר ת"ז -> שם פרטי).

צורה נורמלית ראשונה (1NF)

כל התכונות חייבות להיות אטומיות (בלתי ניתנות לחלוקה נוספת) ואין קבוצות חוזרות בטבלה.

צורה נורמלית שנייה (2NF)

חייבת להיות ב-1NF, וכל תכונה שאינה חלק ממפתח ראשי חייבת להיות תלויה פונקציונלית במפתח הראשי כולו (ולא רק בחלק ממנו).

צורה נורמלית שלישית (3NF)

חייבת להיות ב-2NF, ואין תלויות טרנזיטיביות (כלומר, תכונה שאינה מפתח לא תלויה בתכונה שאינה מפתח אחרת).

צורה נורמלית של בויס-קוד (BCNF)

צורה חזקה יותר מ-3NF. לכל תלות פונקציונלית X -> Y, X חייב להיות מפתח-על (superkey).

נורמליזציה בבחינה: שאלות נורמליזציה הן תמיד מרכיב מרכזי בבחינות. נדרשת הבנה מעמיקה של הגדרות צורות הנורמליות ויכולת לזהות תלויות פונקציונליות, לפרק טבלאות ולנמק את הפירוק. שימו לב במיוחד למעבר מ-3NF ל-BCNF ולשמירה על תלויות ועל פירוק ללא איבוד מידע.

שאלות לדיון

  • נתחו את תהליך תכנון מסד נתונים עבור מערכת לניהול ספרייה, החל מהשלב הקונספטואלי ועד לשלב הלוגי. אילו ישויות, תכונות וקשרים מרכזיים הייתם מזהים?
  • בהינתן טבלה עם הסכימה R(A, B, C, D, E) וקבוצת התלויות הפונקציונליות {A -> B, BC -> D, A -> C, D -> E}, קבעו מהו המפתח הראשי של הטבלה.
  • האם הטבלה R מהשאלה הקודמת נמצאת ב-3NF? אם לא, פרקו אותה לצורות נורמליות גבוהות יותר (עד BCNF) והסבירו כל שלב בפירוק.

נקודות לתשובת מודל

  • תכנון ספרייה: זיהוי ישויות (ספר, קורא, השאלה, סופר), תכונות רלוונטיות (כותר, שם קורא, תאריך השאלה), וקשרים (ספר נכתב ע"י סופר - M:N, קורא משאיל ספר - M:N). המרה לטבלאות רלציוניות תוך טיפול בקשרי M:N באמצעות טבלאות ביניים.
  • מפתח ראשי: יש למצוא את הסגור של כל קבוצת תכונות פוטנציאלית. במקרה זה, A+ = {A, B, C, D, E}, ולכן A הוא מפתח ראשי (ומפתח-על).
  • נורמליזציה:
    • הטבלה ב-1NF (בהנחה שכל התכונות אטומיות).
    • בדיקת 2NF: מכיוון שהמפתח הראשי הוא תכונה בודדת (A), אין תלויות חלקיות, ולכן הטבלה ב-2NF.
    • בדיקת 3NF: יש תלות טרנזיטיבית A -> C ו-C -> D (דרך BC -> D, אם נניח ש-C קובע את D באופן חלקי). כמו כן, A -> D ו-D -> E, מה שיוצר תלות טרנזיטיבית A -> E. יש לפרק את R לטבלאות R1(A, B, C) ו-R2(C, D, E), או R1(A, B, C), R2(C, D), R3(D, E).
    • בדיקת BCNF: לאחר הפירוק ל-3NF, יש לבדוק שוב שכל צד שמאל של FD הוא מפתח-על בטבלה המתאימה. לדוגמה, אם פרקנו ל-R1(A, B, C) עם A -> B, A -> C, אז A הוא מפתח-על ב-R1. אם פרקנו ל-R2(C, D) עם BC -> D (או C -> D אם נניח ש-C מספיק), יש לוודא ש-C או BC הוא מפתח-על ב-R2.
מצאתם טעות או שחסר משהו?
→ הקודמת
מבוא למערכות נתונים
הבאה ←
שפת SQL ואלגברה רלציונית