# מערך שיעור: עיצוב בסיס נתונים📋 מערך מרצה

משך: 2.5 שעות אקדמיות (113 דקות).

מטרת השיעור: הסטודנטים יתכננו סכמת DB מנורמלת עם PK/FK נכונים, לפני שנוגעים ב-EF Core כלל.

בסוף השיעור הסטודנטים צריכים: לזהות כפילות נתונים ולפרק אותה לטבלאות מנורמלות, להסביר PK/FK/CASCADE, ולדעת מתי Index משתלם.

דגש קריטי: זהו שיעור עיצוב לפני קוד — עודדו חשיבה על נייר/דיאגרמה לפני SQL, לא רק "כתבו CREATE TABLE".

---

## מהלך השיעור

| חלק בשיעור | משך | הערות ודגשים |
| --- | --- | --- |
| פתיחה וחיבור | 5 דקות | הראו טבלה לא-מנורמלת עם כפילות שם/מייל |
| הבעיה: סתירות עדכון | 15 דקות | עדכון במקום אחד, לא באחרים — נתונים סותרים |
| הרעיון: נורמליזציה + PK/FK | 30 דקות | פירוק לטבלאות, ER Diagram |
| ON DELETE CASCADE | 15 דקות | דיון: מתי רצוי, מתי לא |
| Index | 20 דקות | trade-off מהירות קריאה מול כתיבה |
| תרגול מודרך | 28 דקות | תרגיל 1+2 |

---

## דגשים להעברת השיעור

- זהו שיעור התיאוריה החשוב ביותר ביחידת ה-DB — אם הסטודנטים מבינים נורמליזציה ו-FK כאן, EF Core (השיעור הבא) יהיה הרבה יותר קל, כי הוא רק "ממפה" את מה שתוכנן כאן.
- דוגמת "עדכון מייל בכמה מקומות" היא ההוכחה הקונקרטית ביותר לנזק שנורמליזציה מונעת — הדגימו אותה בפועל אם אפשר (2 UPDATE שונים על אותו תלמיד, תוצאה סותרת).
- ON DELETE CASCADE ראוי לדיון פתוח, לא רק הסבר — יש כאן שיקול דעת עסקי אמיתי (מחיקת מחבר: למחוק פוסטים שלו, או לא?).

---

## מושגים

**ER Model** — תרשים ישויות וקשרים.
**Primary Key (PK)** — מזהה שורה ייחודי.
**Foreign Key (FK)** — עמודה שמצביעה ל-PK בטבלה אחרת.
**Normalization** — כל עובדה מאוחסנת פעם אחת.
**Index** — מאיץ חיפוש, מאט כתיבה.

---

## תרגיל חשיבה

**שאלת פתיחה:** "אם מוחקים מחבר בלוג, מה צריך לקרות לפוסטים שלו — למחוק אותם, לחסום את המחיקה, או להשאיר אותם עם 'מחבר לא ידוע'? מה ההשלכות של כל אפשרות?"

**מהלך:** תנו לסטודנטים לדון בזוגות — אין תשובה "נכונה" אחת, זו החלטת עיצוב עסקית. הובילו לכך ששלוש האפשרויות קיימות בפועל ב-SQL: `ON DELETE CASCADE` (מחיקה), `ON DELETE RESTRICT`/ברירת מחדל (חסימה), `ON DELETE SET NULL` (השארה עם FK ריק).

**מה המרצה מראה בסוף:** הריצו שלושה תרחישי מחיקה שונים (עם שלושת סוגי ה-CASCADE) על אותה סכמה, והראו את התוצאה השונה בכל אחד — הפיכת הדיון התיאורטי להתנהגות ממשית וניתנת-לבדיקה.
