
Students, Courses), והמפתח הראשי הוא שם הטבלה ביחיד עם הסיומת ID, למשל StudentID. ב-MSSQL נהוג לכתוב מילים מחוברות עם אות גדולה בתחילת כל מילה, בלי קו תחתון.guid.int, מסמנים Set Primary Key (בכפתור או במקש ימני), ולא מסמנים Allow Nulls. ב-Properties של העמודה מגדירים Identity Specification, Is Identity ל-yes. Identity Seed הוא המספר שמתחילים ממנו ו-Identity Increment הוא הגודל של כל צעד. ברוב המקרים משאירים 1 ו-1. אם Seed הוא 10 ו-Increment הוא 5, הרשומות יקבלו 10, 15, 20.FirstName ו-LastName מסוג nvarchar. ה-n מאפשר גם עברית, וה-var נותן אורך דינמי כך שמחרוזת קצרה לא תתפוס רווחים מיותרים. תלמיד חייב שם, ולכן לא מאפשרים Null. Email הוא nvarchar(150) שמותר בו Null, כי תלמיד יכול שלא לתת אימייל.Students ברבים. כדי לראות את הטבלה ב-Object Explorer צריך Refresh. כדי לחזור לעיצוב: מקש ימני על הטבלה ו-Design.Select Top 1000 Rows מציג מידע בלי אפשרות לשנות, ו-Edit Top 200 Rows מאפשר גם לערוך. בדוגמה הוכנסו שלושה תלמידים (Bart, Lisa ו-Homer Simpson), וה-ID נוצר אוטומטית ולא ניתן לשנות אותו ידנית.CourseID כמפתח ראשי אוטומטי, Name מסוג nvarchar שחייב להיות מלא, ו-Hours מסוג tinyint, שגם הוא חובה. הוכנסו קורסים כמו HTML for beginners ב-12 שעות, CSS is fun ב-20 שעות, JavaScript for Experts ב-40 שעות ו-The Amazing C-Sharp ב-50 שעות.Name, כי לא ברור באיזה סדר השם הפרטי ושם המשפחה, ואי אפשר לחפש לפי כל אחד מהם. מפרידים ל-FirstName ו-LastName, ולפעמים גם MiddleName. לדברים כמו מוצרים וקורסים אפשר Name.הטקסט המלא של הדקות הראשונות בהרצאה «יצירת טבלת בסיס ב-SQL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז אחרי שקיבלנו תמונה טובה לגבי טיפוסי הנתונים בואו נבנה את הטבלה הראשונה שלנו ואנחנו רוצים לבנות טבלת תלמידים. עכשיו אנחנו יודעים שבכל טבלה צריך שיהיה לנו עמודה שמהווה מפתח ראשי פריימרי קי זאת בעצם העמודה הראשונה שכדאי לבנות בכל טבלה מה בעצם המוסכמה שכדאי ללכת איתה טבלאות לרוב השמות שלהם הם ברבים אם
אני בונה טבלת תלמידים אני אקרא לה סטיודנטס ברבים ולא סטיודנט יחיד כי היא מכילה הרבה סטודנטים. אם אני רוצה לבנות טבלה שמתארת חתולים, אז אני אקרא לה קיטנז ברבים ולא קיטן ביחיד.
אז אם הטבלה הזאת מתארת תלמידים, העמודה שמחזיקה את המפתח תמיד תהיה שם הטבלה ביחיד, סטיודנט ביחיד, עם סיומת ID, מפני שזה קוד של תלמיד בודד.
אפשר להגדיר ID בצורה כזאת, ברוב המקרים ב-MSSQL אנחנו מתחילים את העמודות ואת הטבלאות בעוד גדולה. מילים מחוברות, לא נהוג להשתמש ב-underline.
ID בצורה כזאת, אלא אם כן אני כותב ID ועוד איזה משהו. מפתח ראשי בצורה כזאת, סטיודנט. שם הטבלה שהיא הולכת להיות סטיודנטס ברבים, כאשר זה אמור להיות ביחיד עם הסיומת ID. מה סוג הנתונים?
אם אנחנו מגדירים מפתח ראשי יש לנו בעצם שתי אפשרויות. אפשרות אחת זה שאנחנו מספקים את הערך למפתח הראשי, נניח שאנחנו רוצים שהמפתח הראשי יהיה תעודת הזהות של התלמיד.
מן הסתם, הדאטאבייס לא יודע מהי תעודת הזהות של התלמיד, שכן, שהנפיקו לו במשרד הפנים, הוא לא יכול לייצר לי את זה. זה משהו שהייתי מביא לבד אם הייתי רוצה שתעודת הזהות תהיה מפתח ראשי.
לדוגמה, מספר רכב. מספר רכב זה ייחודי, כמובן, טבלת רכבים, ויכול להיות שמספר רכב, אני אומר, אני רוצה שמספר הרכב יהיה המפתח הראשי שלי.
אז אני בעצם צריך לספק אותו. הדאטאבייס לא יודע מה מספר הרכב של בוא נניח עובד. אבל לא מומלץ שתעודת זהות של בן אדם או של תלמיד תהיה מפתח ראשי. לא מומלץ שמספר רכב יהיה מפתח ראשי.
למה? כי מפתחות ראשיים הולכים להיות משוכפלים בכל מיני טבלאות אחרות כמפתחות זרים, כ-foreign key. ואני לא רוצה שתעודת הזהות, שזה גם משהו קצת חסוי, יתחיל להיות משוכפל בכל מיני טבלאות.
זה גם יכול לתפוס לי נפח מיותר, יש לה תשעה תווים בישראל, ואני צריך רק קוד פשוט, לא צריך תשעה תווים, יותר מדי מנופח בזיכרון, וגם זה לא כזה סקיור ומסורבל, לא נהוג לבצע את זה. מה שכן נהוג זה שהדאטאבייס ייצר לי קוד עבור המפתח הראשי.
אני לא רוצה לטפל בזה, אני רוצה להכניס ערך ושהדאטאבייס ייצר לי. יש שתי שיטות, שיטה אחת שהדאטאבייס ייצר ערך מספרי, ושיטה אחת שהדאטאבייס ייצר ערך מכרוזתי.
המכרוזת זה ה-guid שראינו בסרטון על הדאטה טייפס. אבל נגיע לשם, אנחנו עוד לא שם. ברוב המקרים מפתח ראשי, אנחנו רוצים שהדאטאבייס ייצר כערך מספרי.
לכן, מה שאנחנו מגדירים כאן זה אינטג'ר, הנה הוא. מה שאנחנו רוצים זה להגדיר את העמודה הזאת כמפתח ראשי אז יש לנו כאן את האייקון הזה set primary key או שאפשר מקש ימני אותו דבר set primary key הנה אנחנו רואים פה סימן קטן קטן קטן כזה של מפתח אבל עדיין לא אמרנו לדאטה בייס לייצר מספר
אוטומטי וזה מתבצע בפרופרטיב של העמודה אנחנו הולכים לפה בואו נסדר את זה רק אלפבתית יותר נוח לפעמים אנחנו רואים פה את הדאטה טייפ אינט יש לנו אפשרות להגדיר default value זה לא המצב default value זה כאשר אני לא מכניס שום דבר מה ה-default value שיהיה.
עבור מפתח ראשי חייב להיות ערך, והנה זה פה. identity specification is identity, אני מחליף אותו ל-true, ל-yes. ויש לנו כאן seed, זה מאיפה, מאיזה מספר אנחנו רוצים שהוא יתחיל, ו-increment זה כמה אנחנו רוצים שהוא יגדל כל פעם שהדאטאבס ייצר מספר חדש.
אם הייתי אומר לו 10 ותגדל ב-5 אז המספר הראשון שהדאטאבס ייצר לנו יהיה 10. אם אנחנו נכניס רשומה נוספת, תלמיד חדש אז ה-ID שלו יהיה 15, תלמיד חדש יהיה 20 וכדומה.
ברוב המקרים משאירים את זה 1-1. זאת אומרת 1, 2, 3, 4 תג'נרט לי כל פעם מספור אוטומטי רץ ועולה ב-1. הגדרנו כרגע את המפתח הראשי.
יש לנו פה עוד עמודה על ה-onals, האם אני מחייב שיכניסו ערך או האם וואלה ברגע שמכניסים לי תלמיד חדש לא חייבים לתת לי את הערך כמובן אם זה מפתח ראשי אסור לסמן עלה או נעל אז בואו נראה מה עוד יש לנו בטבלת התלמידים בוא נניח first name זה כמובן לא יהיה מספר זה יהיה מחרוזת אז אני אגדיר אותו כn var char 50 למה n כי אני רוצה גם שיהיה אפשרות להכניס בעברית למה var
כי אני רוצה את זה בגודל דינמי. אם יכניסו מחרוזת בעלת שתי תווים, שיהיה לי רק שני תווים ולא 48 רווחים נוספים. ולמה 50? כי וואלה, נראה לי שלא הגיוני שיעברו את זה.
האמת, 50 נראה לי יותר מדי. אולי עבור שם פרטי, בוא נגדיר, לא יודע, שלושי. לא נראה לי שמישהו יעבור את השלושי. האם אני רוצה שאפשר לא להכניס ערך על העונה?
לא, אני לא רוצה. תלמיד במכללה, לא הגיוני שהוא יירשם לי במכללה ויגיד, לא בא לי לתת לכם את השם הפרטי שלי, אין דבר כזה.
אז אני לא מסמן עלה אונל. בואו נגדיר last name nvarchar,