מהי סכמת ERD?
סכמת ERD (Entity Relationship Diagram) היא תרשים חזותי המייצג את מבנה המידע של מערכת נתונים,
לרוב לצורך תכנון בסיסי נתונים רלציוניים.
התרשים מתאר את היישויות (Entities), את המאפיינים (Attributes) שלהן, ואת הקשרים (Relationships) ביניהן.
ERD הוא כלי עזר קריטי בתכנון מוקדם של מערכות מידע, בהנדסת תוכנה, וביישום מערכות ERP, CRM,
או כל מערכת מידע מורכבת.
שלבי בניית סכמת ERD
זיהוי ישויות (Entities)
ישות היא אובייקט או מושג שניתן לאחסן עליו מידע.
דוגמאות: לקוח, מוצר, הזמנה, משתמש.
ישויות מחולקות לרוב לשני סוגים:
ישויות חזקות (Strong entities) – קיימות בפני עצמן.
ישויות חלשות (Weak entities) – תלויות בישות אחרת.
הגדרת מאפיינים (Attributes)
כל ישות מכילה שדות מידע.
סוגי מאפיינים:
מפתח ראשי (Primary Key): מזהה ייחודי (לדוגמה: CustomerID)
מאפיינים רגילים: שם, כתובת, תאריך לידה
מאפיינים מרוכבים: שם מלא = שם פרטי + שם משפחה
מאפיינים נגזרים: לדוגמה: גיל (מחושב מ־תאריך לידה)
מאפיינים מרובי ערכים: לדוגמה: טלפונים (יותר מערך אחד)
זיהוי קשרים (Relationships)
קשרים בין ישויות מבטאים אינטראקציה ביניהן.
קשרים כוללים את סוג הקרדינליות:
1:1 (אחד לאחד)
1:N (אחד לרבים)
M:N (רבים לרבים)
דוגמה: לקוח יכול לבצע הרבה הזמנות, אבל כל הזמנה שייכת רק ללקוח אחד → 1:N
קביעת אילוצים (Constraints)
אילוצי שלמות: האם שדה מסוים הוא חובה?
אילוצי זרות: Foreign Keys
אילוצי ייחוד: UNIQUE
ייצוג גרפי
ישויות: לרוב מוצגות כמלבנים
מאפיינים: מוצגים כאליפסות
קשרים: מוצגים כמעויינים
קווים מחברים ומספרים מראים את הקרדינליות
עקרונות של סכמת ERD
שימוש בנורמליזציה (Normalization)
פירוק ישויות כדי למנוע כפילויות.
מעבר בין צורות נורמליות (1NF, 2NF, 3NF וכו’).
קשרים עצמיים (Recursive Relationships)
קשר שבו ישות מקושרת לעצמה (לדוגמה: עובד מדווח לעובד אחר).
היררכיות וירושה (Inheritance)
ישות כללית ויישויות ספציפיות: אמצעי תשלום ← כרטיס אשראי, מזומן
ישויות אסוציאטיביות (Associative Entities)
פתרון לקשרים רבים-רבים: יצירת טבלת גישור (למשל הזמנה_מוצר)
כלים מומלצים לבניית ERD
| כלי | תיאור | קוד פתוח / מסחרי |
| dbdiagram.io | כלי מקוון פשוט ונוח | חינמי |
| Lucidchart | כלי עיצוב דיאגרמות עם יכולות ERD | מסחרי |
| MySQL Workbench | תומך ביצירת סכמות ERD מחיבור למסד נתונים | חינמי |
| draw.io / diagrams.net | כלי כללי לשרטוט ERD ידני | חינמי |
| ER/Studio / Toad Data Modeler | כלים מתקדמים לארגונים | מסחרי |
שאלות ותשובות בנושא יישום ERD
מה ההבדל בין ישות חלשה לבין טבלת קשר?
ישות חלשה תלויה בקיומה של ישות חזקה (למשל פרטי הזמנה תלויים ב־הזמנה).
טבלת קשר (junction table) נועדה לקשר בין שני ישויות עצמאיות בקשר M:N (למשל סטודנט_קורס).
מתי נשתמש ב־Surrogate Key במקום מפתח טבעי?
כאשר המפתח הטבעי מורכב מדי (למשל ת”ז, או צירוף שדות) או עשוי להשתנות.
Surrogate Key (כמו מזהה רץ) מבטיח פשטות, עקביות ויעילות בשאילתות.
כיצד ניתן לייצג קשר M:N בדיאגרמת ERD?
יוצרים ישות נוספת (Associative Entity) שמכילה את המפתחות הזרים של שתי הישויות המחוברות
והיא הופכת בעצמה לישות עם מפתח ראשי מורכב.
מהם הסיכונים במודל עם קשרים רבים-רבים לא מטופלים?
חוסר יכולת לייצג קשר כזה במסד נתונים רלציוני, בעיות שלמות נתונים, וקושי ביצירת שאילתות מורכבות.
כיצד ERD משתלב במחזור חיי פיתוח תוכנה?
ERD מופיע בשלב האפיון וניתוח המערכת (Requirement Analysis), לפני כתיבת קוד בפועל.
הוא משמש גם כבסיס ליצירת סכמת בסיס הנתונים וכתיבת קוד ORM או SQL.
מה היתרון של שימוש בכלים אוטומטיים ליצירת ERD מתוך בסיס נתונים קיים?
חסכון בזמן, התאמה מדויקת למציאות, זיהוי בעיות מבנה קיימות, יכולת הפוך-מהנדס (reverse engineering) למערכות Legacy.

