PracticU

נרמול מסד נתונים - והפרדה לטבלאות

בלי כתוביותעם כתוביות
PracticU › קורס BI - ניתוח מסדי נתונים - Qlik Sense › נרמול מסד נתונים - והפרדה לטבלאות
מילון מושגים:
מסד נתונים - אוסף מאורגן של נתונים המאוחסן כך שאפשר לשמור, לחפש, לעדכן ולשלוף אותו ביעילות, לרוב באמצעות שפת שאילתות.
טבלה - מבנה במסד נתונים שמאחסן נתונים בשורות ועמודות. כל שורה היא רשומה וכל עמודה היא שדה.

נרמול מסד נתונים - והפרדה לטבלאות
השיעור מסביר מדוע מפרידים את הנתונים לטבלאות נפרדות, ומה הכלל שנקרא נרמול (Normalization) של מסד הנתונים.
למה לא לאחד הכול לטבלה אחת
נניח שטבלת ההזמנות כוללת גם את שם הלקוח, המדינה והטלפון שלו. הבעיות:
1. בזבוז מקום: לקוח שמבצע הזמנות רבות, הפרטים שלו נשמרים שוב ושוב.
2. תחזוקה קשה: אם לקוח משנה מספר טלפון, צריך לעדכן אותו בכל ההזמנות שלו, גם הישנות.
3. כפילויות בחישוב: בדוגמה, סכום כולל של הזמנה 850 מופיע בכל שורה שלה. סיכום השורות נותן 1,700, שגוי, כי הסכום הכולל מופיע לכל שורה.
הפתרון: נרמול
כל ישות נשמרת בטבלה נפרדת: לקוחות, הזמנות, שורות הזמנה, מוצרים וספקים. הטבלאות מקושרות זו לזו במפתחות זרים, ולא בהעתקת נתונים. כך כל נתון נמצא במקום אחד בלבד.
דוגמה: בית קולנוע
אותו עיקרון חל על בית קולנוע: סרטים, מועדי הקרנה, אולמות, כרטיסים וצוות נשמרים בטבלאות נפרדות. מועד הקרנה מצביע על הסרט ועל האולם, ולא מכיל את הפרטים שלהם. כרטיס שייך להקרנה מסוימת, והצוות מקושר לכרטיס שטיפל בו.
בכל מערכת, לא משנה במה עוסקת החברה, מחזיקים כל ישות בטבלה משלה ומחברים ביניהן בקשרים. בהמשך נלמד על סוגי הקשרים: אחד לרבים, אחד לאחד ורבים לרבים.
השיעור הבא בקורס: חיבור מסד נתונים ל-Qlik Sense

פרקי ההרצאה: נרמול מסד נתונים - והפרדה לטבלאות

  1. 00:00

    חזרה: הקשרים בין הטבלאות והמפתח הזר

  2. 00:40

    למה להפריד בין לקוחות להזמנות

  3. 01:13

    דוגמה: כל הפרטים בטבלה אחת

  4. 02:24

    בעיה ראשונה: כפילות ותפוסת דיסק

  5. 03:18

    תחזוקה: עדכון טלפון של לקוח בכל הרשומות

  6. 04:32

    שורות הזמנה והכפילות בתוך אותה טבלה

  7. 05:24

    סכום כולל של הזמנה לעומת סכום שורה

  8. 06:05

    למה נתונים מרמות שונות לא שייכים לטבלה אחת

תמלול ההרצאה: נרמול מסד נתונים - והפרדה לטבלאות

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

  1. 00:02

    שלום וברוכים הבאים בקורס פיתוח AI. אנחנו בשיעור מספר 6. בשיעור הקודם דיברנו על הקשרים בין הטבלאות ואיך הם באים לידי ביטוי במסדות השונים.

  2. 00:14

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

  3. 00:30

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

  4. 00:54

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

  5. 01:08

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

  6. 01:27

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

  7. 01:42

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

  8. 02:04

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

  9. 02:21

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

  10. 02:36

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

  11. 02:58

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

  12. 03:20

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

  13. 03:47

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

  14. 04:08

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

  15. 04:32

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

  16. 05:24

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

  17. 05:47

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

  18. 06:22

    לי 1700 850 זה לא סכום ההזמנה 1700 זה הסכום הכולל של ההזמנה אז אתם מבינים את הבעיה בעצם כשאנחנו מנהלים נתונים בישויות שונות ורמות שונות של נתונים באותה טבלה

לקורס המלא: קורס BI אונליין עם Qlik Sense

ההרצאה הקודמת: מפתח זר בטבלה

ההרצאה הבאה: חיבור מסד נתונים ל-Qlik Sense

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

  • מה זה מסד נתונים ?
  • מסד נתונים של Metasploit
  • מה זה מסד נתונים רלציוני SQL
  • מסד נתונים NoSQL - MongoDB

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

  • קורס DBA אפליקטיבי - שפת SQL למתחילים
  • קורס NoSQL - MongoDB
  • קורס SSIS
  • קורס Power BI