מהו מסד נתונים?
מסד נתונים הוא מערכת לאחסון נתונים, המורכבת מטבלאות (Tables). כל טבלה מאחסנת מידע מסוים, כמו שאלות או משתמשים.
לכל טבלה יש שדות (Fields) המגדירים את המידע הנשמר בה, כמו ״שם משתמש״ או ״תוכן השאלה״. כל שורה בטבלה היא רשומה (Record) המכילה את הנתונים המלאים של פריט אחד.
הפרויקט דורש מסד נתונים מנורמל, הכולל לפחות ארבע טבלאות וטבלת קשר אחת.
דוגמה לטבלה
| שם | כיתה | טלפון | כתובת |
|---|---|---|---|
| חנה כהן | ט׳ 1 | 0512345678 | השושנים 2 |
| שרה לוי | י״א 3 | 0587654321 | הפרחים 14 |
השדות בטבלה: שם, כיתה, טלפון וכתובת.
בטבלה יש שתי רשומות. כל שורה מייצגת רשומה: הרשומה הראשונה מכילה את הפרטים של חנה כהן, והשנייה את הפרטים של שרה לוי.
מפתחות ומאפיינים בטבלאות
- מפתח ראשי (Primary Key): שדה שמזהה באופן ייחודי כל שורה בטבלה. הוא חייב להיות ייחודי לכל רשומה ואסור לו להיות ריק (NULL).
- מספור רץ (Auto-Increment): תכונה המייצרת מספר ייחודי באופן אוטומטי עבור כל רשומה חדשה. המשתמש לא צריך להקליד את המספר הזה בזמן ההתחברות או בזמן הכנסת נתונים; המערכת עושה זאת באופן אוטומטי. היתרון הוא הבטחה שכל רשומה תקבל מספר מזהה שונה ללא התערבות ידנית.
- ייחודיות (Unique): מאפיין המבטיח שערכו של שדה מסוים יהיה ייחודי בתוך הטבלה כולה. בניגוד למפתח ראשי, שדה ייחודי יכול להיות ריק (NULL).
- מפתח זר (Foreign Key): שדה בטבלה אחת שמקשר אותה לטבלה אחרת באמצעות המפתח הראשי שלה. הוא יוצר קשר בין הנתונים בשתי הטבלאות.
טיפוסי נתונים וערכים
לכל עמודה בטבלה יש סוג נתונים שקובע איזה סוג של מידע היא יכולה לאחסן:
- INT: מספרים שלמים.
- VARCHAR: טקסט באורך משתנה.
- NVARCHAR: טקסט התומך בשפות שונות, כמו עברית, ומאפשר הכנסת ערכים בעברית. זהו הטיפוס המומלץ לטקסט.
- BIT: ערך בוליאני (1 לאמת, 0 לשקר).
- DATETIME: לתאריך ושעה.
אפשרות Null וברירת מחדל
- NULL: מאפשר לשדה להישאר ריק.
- NOT NULL: דורש מהשדה להיות מלא.
- ברירת מחדל (DEFAULT): ערך שייכנס לשדה באופן אוטומטי אם לא יוזן ערך אחר.
תרגיל לתכנון מסד נתונים - עבודת בית
על מנת לתכנן את מסד הנתונים של הפרויקט, יש לבצע את השלבים הבאים:
- זיהוי ישויות: רשמו את כל סוגי הנתונים הנדרשים לפרויקט (לדוגמה: משתמשים, שאלות, קטגוריות). כל סוג כזה יהיה טבלה.
- תכנון טבלאות:
- לכל טבלה, רשמו את שמה ואת כל השדות שהיא תכיל.
- ציינו את המפתח הראשי (Primary Key) עבור כל טבלה - שדה שמזהה באופן ייחודי כל רשומה.
- הגדרת טבלת קשר:
- זהו קשר בין שתי ישויות שדורש טבלת קשר (למשל, הקשר בין משתמשים לשאלות שבהן ענו).
- תכננו טבלת קשר שתקשר בין הטבלאות ותאחסן נתונים ייחודיים לקשר זה (לדוגמה, הניקוד של כל שחקן על כל שאלה).
דוגמה: משחק טריוויה
טבלאות: משתמשים, נושאים, שאלות, תשובות משתמשים. טבלת ״תשובות משתמשים״ היא טבלת הקשר בין משתמשים, שאלות ותשובות.