PracticU

מה זה מסד נתונים רלציוני SQL

בלי כתוביותעם כתוביות
PracticU › קורס DBA אפליקטיבי - שפת SQL למתחילים › מה זה מסד נתונים רלציוני SQL
מילון מושגים:
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.
Oracle - חברה ומערכת ניהול מסדי נתונים יחסיים מהמובילות בעולם, נפוצה ביישומים ארגוניים גדולים.
SQLite - מסד נתונים יחסי קל משקל ששמור בקובץ בודד, נפוץ ביישומים מקומיים ובאפליקציות מובייל.
MongoDB - מסד נתונים מסוג NoSQL שמאחסן נתונים כמסמכים בפורמט דמוי JSON, בלי מבנה טבלאי קשיח.
Elasticsearch - מנוע חיפוש וניתוח מבוזר שמאחסן ומאנדקס כמויות גדולות של נתונים לחיפוש מהיר.
NoSQL - משפחת מסדי נתונים לא-יחסיים, המתאימים לנתונים גמישים ולהיקפים גדולים, כמו מסמכים או זוגות מפתח-ערך.
מפתח ראשי - עמודה או צירוף עמודות שמזהים באופן ייחודי כל שורה בטבלת מסד נתונים.
מפתח זר - עמודה בטבלה שמפנה למפתח הראשי בטבלה אחרת, ובכך יוצרת קשר בין הטבלאות.

מה זה מסד נתונים רלציוני SQL
פתיחת מודול על מסדי נתונים: מה זה מסד נתונים רלציוני, איך הטבלאות קשורות זו לזו, ואיך קשרים (relations) מגינים על שלמות המידע.
מושגי יסוד
1. מה זה דאטאבייס: תוכנה שמאחסנת ומנהלת כמות גדולה של נתונים. בגלישה לאתר, השרת בונה את הדף וממלא אותו במידע שהוא מקבל מהדאטאבייס, שיכול לשבת על שרת נפרד (Database Server) ויכול גם לשבת על אותו מחשב, אבל תמיד כתוכנה נפרדת.
2. רלציוני: המידע יושב בטבלאות, ובין הטבלאות יש קשרים שמייצגים איזה מידע שייך לאיזה. בדוגמה: טבלת תלמידים, טבלת קורסים וטבלה שאומרת איזה תלמיד לומד איזה קורס.
3. שפת SQL: Structured Query Language. בעזרתה האפליקציה שואלת את הדאטאבייס או משנה בו מידע, למשל להביא את התלמידים שעברו את המבחן האחרון, להוסיף ציון או למחוק טעות.
4. מוצרים: MySQL, Oracle Server, SQLite (קטן, ובדרך כלל בטלפונים), DB2 של IBM, Microsoft SQL Server ו-Microsoft Access. דאטאבייסים שאינם רלציוניים, כמו MongoDB, Cassandra ו-Elasticsearch, נקראים NoSQL, ואינם נלמדים במודול הזה.
טרמינולוגיה
1. טבלה, עמודה ושורה: עמודה היא שדה (field או property), ושורה היא רשומה (record).
2. מפתח ראשי (Primary Key): עמודה עם קוד ייחודי לכל שורה, שלפיה מחפשים, מעדכנים ומוחקים. לא מחפשים לפי שם, כי יכולים להיות שני אנשים עם אותו שם. ערך במפתח ראשי לא חוזר.
3. מפתח זר (Foreign Key): בטבלת הספרים יש עמודה של קוד הסופר, שמצביעה על המפתח הראשי בטבלת הסופרים. כך לא משכפלים את פרטי הסופר בכל ספר, שזה דבר שאסור לעשות בדאטאבייס.
4. Relation: קשר שמגדירים בין העמודות. בלעדיו אפשר להכניס ספר עם קוד סופר 8 גם אם לא קיים סופר כזה. עם הקשר, הדאטאבייס דוחה את ההוספה וזורק חריגה.
5. שלוש בדיקות של הקשר: מניעת הכנסת מידע שגוי, מניעת עדכון לערך שאינו קיים, ובדיקה בעת מחיקה. אם מוחקים סופר שיש לו ספרים, נשארים ספרים בלי סופר. לכן קובעים מראש אם למחוק אוטומטית את הספרים שלו או לא לאשר את המחיקה. ברוב המקרים לא מאשרים.
6. One-to-many: בצד המפתח הראשי כל ערך מופיע פעם אחת (מסומן 1), ובצד המפתח הזר אין הגבלה (אינסוף, many).
7. Table Design ו-Database Diagram: Table Design מציג רק את העמודות בלי המידע, ו-Database Diagram מציג את הטבלאות, העמודות והקשרים ביניהן, עם סמל מפתח וסמל אינסוף.
אחרי ההרצאה אפשר להסביר מה ההבדל בין מפתח ראשי למפתח זר, ולמה כדאי להגדיר Relation בין שתי טבלאות.
השיעור הבא בקורס: סוגי זיכרון בשרת SQL

פרקי ההרצאה: מה זה מסד נתונים רלציוני SQL

  1. 00:00

    מה זה דאטאבייס

  2. 00:40

    מיקום הדאטאבייס מול השרת

  3. 01:51

    מה זה relational database

  4. 02:46

    שפת SQL ותשאול מידע

  5. 03:38

    מוצרי דאטאבייס ו-NoSQL

  6. 05:09

    טרמינולוגיה בסיסית של טבלאות

  7. 06:05

    מפתח ראשי ומפתח זר

  8. 09:14

    הגדרת Relation ואכיפה

תמלול ההרצאה: מה זה מסד נתונים רלציוני SQL

הטקסט המלא של הדקות הראשונות בהרצאה «מה זה מסד נתונים רלציוני SQL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:16

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

  3. 00:33

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

  4. 00:51

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

  5. 01:20

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

  6. 01:35

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

  7. 01:48

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

  8. 02:03

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

  9. 02:17

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

  10. 02:26

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

  11. 02:46

    הקודים האלה שייכים לתלמידים. והקודים האלה שייכים לקורסים, אז קיים איזשהו ריליישן ביניהם, וזאת הסיבה שמסד נתונים כזה נקרא relational database.

  12. 02:57

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

  13. 03:11

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

  14. 03:38

    איזה שהם מוצרים ידועים, אולי שמעתם על relational database, MySQL, דאטאבייס מאוד מאוד פופולרי, חינמי כזה, יכול להחזיק כמות גדולה של נתונים, Oracle, או נקרא יותר נכון Oracle Server של חברת Oracle, SQLite הוא דאטאבייס מאוד מצומצם וקטן בהתאם למילה Lite ומיועד בשביל מוביילים,

  15. 04:03

    הוא נמצא בתוך טלפונים סלולריים לרוב, הוא לא חייב אבל לרוב בתוך מוביילים, לרבי, עוד איזשהו דאטאבייס קטן שהיא כ-DB2 של חברת IBM, אולי שמעתם על MSSQL שמו המלא Microsoft SQL Server של חברת מייקרוסופט, אולי שמעתם על Microsoft Access זה גם דאטאבייס שהיה פעם פופולרי, ויש עוד כמובן המון המון מוצרים אחרים.

  16. 04:24

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

  17. 04:40

    relational database ודאטאבייסים כאלה נקראים no sql database מפני ששפת sql לא עובדת עליהם ברשימה הזאת אנחנו לא רואים אותם כי פה אנחנו רואים רק relational database אבל אולי שמעתם על מונגו db מונגו db הוא no sql database אולי שמעתם על קסנדרה אלסטיק search אלו הם דאטאבייסים אחרים אנחנו לא מתייחסים אליהם כרגע במודול הזה, וזה חומר קצת יותר אדוונס.

  18. 05:09

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

  19. 05:20

    מה אנחנו רואים פה? אנחנו רואים פה טבלה שמכילה כנראה סופרים, Outdoors Table. אנחנו רואים שיש לנו קוד לכל סופר, שם פרטי, שם משפחה, אימייל, כמובן יכולים להיות פה עוד דברים.

  20. 05:32

    הלאה, הנה עמודה, זאת עמודה, יש לנו כאן את השדה הזה זה בעצם השדה פילד נקרא או פרופרטי first name last name וכולי אבל כל זאת עמודה יש לנו שורה row או המידע של השורה נקרא רקורד בעברית רשומה זה המידע הזה שנמצא פה יש לנו תא מודד אנחנו רואים שיש לנו כאן מזהה ייחודי ID לכל שורה העמודה הזאת שמכילה את הקודים

  21. 06:02

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

  22. 06:22

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

  23. 06:38

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

  24. 06:49

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

  25. 07:00

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

  26. 07:16

    אנחנו רואים שסופר בעל קוד שלוש כתב את Node.js is fun. אותו סופר בעל קוד שלוש כתב גם את JavaScript is cool. ככה אנחנו יכולים לדעת מי שייך אלינו שנמצא בטבלה אחרת, הרי לא הגיוני לקחת את כל הערכים של הסופר ולדחוף אותם.

  27. 07:33

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

  28. 07:48

    Foreign Key מייצגת מידע שנמצא בטבלה אחרת. הנה שתי הטבלאות אחת ליד השנייה הנה טבלת הסופרים הנה טבלת הספרים מפתח ראשי של טבלת מפתח ראשי של טבלת הספרים ומפתח הזר שנמצא בטבלת הספרים ומצביע על המפתח הראשי הזה.

  29. 08:11

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

  30. 08:33

    המפתח הזה, כמו שראינו. עכשיו מגיע בעצם שאלה. אני בא לי להוסיף עוד ספר פה, איזשהו ספר חדש אני רוצה להוסיף. נניח php is a cool language, לא שאני חושב שphp is a cool language, אבל נניח שאני מוסיף פה ספר חדש php is a cool language, ויש לי איזה מחיר, 20 שקל, יש לו 80 דפים.

  31. 08:56

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

  32. 09:12

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

  33. 09:29

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

  34. 09:42

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

  35. 09:52

    אם אנחנו נוסיף את אותו ספר פוחז PHP is called language עם קוד שמונה הדאטאבייס יגיד לי רגע רגע רגע יש לי פה ריליישן בוא נראה רגע אם פה יש קוד שמונה אין אז הוא לא יאשר להכניס את הספר ויזרוק לנו חריגה לא יאשר

לקורס המלא: קורס SQL ו‑DBA אפליקטיבי

ההרצאה הקודמת: התקנה של SQL על וונדוס 10

ההרצאה הבאה: סוגי זיכרון בשרת SQL

הרצאות קשורות מקורסים אחרים

  • מסד נתונים SQL ב-AZURE - חלק 1
  • מה זה מסד נתונים ?
  • מסד נתונים של Metasploit
  • מסד נתונים NoSQL - MongoDB

קורסים נוספים במסלול

  • קורס NoSQL - MongoDB
  • קורס SSIS
  • קורס BI - ניתוח מסדי נתונים - Qlik Sense
  • קורס Power BI