
הטקסט המלא של הדקות הראשונות בהרצאה «נרמול מסד נתונים - והפרדה לטבלאות» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים בקורס פיתוח AI. אנחנו בשיעור מספר 6. בשיעור הקודם דיברנו על הקשרים בין הטבלאות ואיך הם באים לידי ביטוי במסדות השונים.
פורנקי מפתח זר מייבא ייצוג לפריימרי פי מטבלה אחרת כמו בקסטומר ואורדרס. בטבלת אורדרס יש לי קסטומר אידי שהוא פורנקי מייצג את הפריימרי פי של הקסטומר אידי בטבלת קסטומר.
אני רוצה להעמיק בזה קצת יותר ולנסות לשאול למה בעצם אנחנו צריכים לעשות את ההפרדה בין שתי טבלאות שלמעשה אם תחשבו על זה יכולתי להכניס את שתיהן לטבלה אחת בוא נתמקד באמת בקסטומר ואורדר נכון יש היגיון בלהפריד את קסטומר ואורדר אבל זה גם טיפה מסבך אותם אנחנו צריכים לעשות שתי טבלאות ולנהל קשר ביניהם זה טיפה לא נוח
אם נסתכל על אורדר ורואה שם קסטומר איי-די שזה המספר של הלקוח לקרוא ולראות את כל הפרטים של הלקוח כבר בהזמנה בוא בואו נדמה איך זה היה נראה אם היינו מכניסים את זה לטבלה אחת.
בעצם טבלת הזמנות, נניח שהאמת הייתה מחוברת עם ה-Customer לטבלה אחת, היה לי פה, כתוב את זה בעברית, מספר הזמנה, תאפסודות שיש לי בטבלת הזמנות, תאריך הזמנה וכו' וכו', ואז במקום ה-Customer
ID המזהה עבור טבלה אחרת, הייתי מכניס פה את, נגיד גם את מספר הלקוח לצורך העניין, אבל גם את שם הלקוח ואת המדינה שלו, טלפון וכו'.
מה בעצם הבעיה בזה? אתה ממלא קצת דאטה, אתה לוקח קצת תשואה, זה אולי מספר אחת, תאריך היה 5 שנים כרגע, מספר הלקוח 34, ללקוח קוראים משה לוי, הוא מישראל, ואתה יכול שלא לוקח שתיים קלות או משהו.
מה הבעיה? זה מאוד הגיוני, מספר הזמן, נתוני ההזמנה ונתוני הלקוח. אז יש שתי בעיות בזה, שתי בעיות מאוד מאוד חשובות, שזאת הסיבה שנמנעים לחלוטין מלאחד ישויות שונות בטבלה אחת.
סיבה אחת היא סיבה אפשר להגיד טכנית של מקום על הדיסק אוקיי כי בעצם כל טבלה נשמרת לנו עם כל הנתונים שלה ודאטאפס זה דבר שהולך ומתפתח וצובר הרבה מקום על הדיסק.
חשבו שאם משה לוי יעשה עוד הזמנה במספר 2 ינבוי משה לוי הוא יצטרך לאחסן שוב ושוב את הפרטים שלו ישראל ואת הטלפון זה לוקח הרבה יותר מקום על הדיסק מאשר סתם לשמוק פה את 34 ובטבלה השנייה של הלקוחות משה לוי בעצם מופיע כזה כאילו הוא רק פעם אחת זה הרבה יותר יעיל מבחינת מקום על הדיסק לשמור בטבלת ההדמנות
רק את המספר אם צריך לחזור עליו שוב ושוב אבל זה רק מספר הוא דופס הרבה פחות מקום לדיסק ואת כל הנתונים הטקסואליים שמרחיבים על 100 פני המקום לשמור בטבלה אחרת שכאמור מופיעים שם ברשומה אחת בלבד ויש סיבה יותר מהותית שעושים את זה והסיבה היא שבעצם אם אנחנו ננהל את זה ככה ביחד ייצורנו
בעיות קשות מאוד בהבנת הנתונים ותחקור שלהם וגם התחזוקה שלנו נתחיל בנושא התחזוקה נניח שמשה לוי שינה מספר טלפון אוקיי הוא מתקשר אלינו אפילו לקוח טוב אמר תקשיבו שיניתי את הטלפון אני לקוח קבוע שלכם חשוב לי כדי לעדכנו במערכות שלכם את המספר הטלפון בסדר אז מה הטלפון החדש שלך זה הטלפון רגע אבל הוא מופיע בעוד רשומה אני צריך עכשיו
להעתיק את זה לכל הרשומות שהוא נמצא בהן אז אני בא לפה ואני בא לפה ולמעשה אני צריך גם לעדכן את זה לאורך כל הדרך בעוד הזמנות מכיוון שלא בהכרח כולם ברצף הוא קנה בתאריך הזה אבל אחרי זה הוא קנה הרבה זמן גם פה וגם פה בקיצור מאוד מאוד קשה לתחזק דאטאבס בצורה כזו שאני צריך ללכת ולחפש אחרי
כל הרשומות שמשה לוי נמצא בהם כל הזמנות שלו ולעדכן את הפרטים שלו אז זה מייצר תחזוקה וגם מבחינת התחקור של המקונים אם נחשוב על איכות של שתי טבלאות אחרות של ההזמנה ושורות ההזמנה בוא נדמה איזה מספר הזמנה נעשה פה תאריך הזמנה ונכניס פה עכשיו מאפיינים משורות ההזמנה כמו שאמרנו מדברים כאילו הם באותה טבלה אז יש לי
שורה קוד פריט נגיד כמות בסדר בכל שורה אפשר לקנות פריטים בכמות מסוימת הזמנה מספר אחת תאריך מסוים שורה מספר אחת של אותה הזמנה קנו את פריט 56 בכמות אחת אותה הזמנה שימו לב אותו תאריך מן הסתם אקסל שינה לי את זה אבל זה גם אותו תאריך בדיוק שורה מספר 2 ופריט 33 הוא קנה.
עכשיו אני עוסק פה בעצם, החסרתי מאפיין נוסף של ההזמנה שזה סכום כולל של ההזמנה. והסכום של ההזמנה נניח היה על 850. אני מדגיש סכום הכולל של ההזמנה, לא סכום של כל שורה בשורה שאולי אנחנו מנהלים אותו בנפרד.
אני חייב להניח שזה מוצע להציג את זה כתאריך ולא נכח את זה, נשים את זה על מיקום אחר, כרגע סכום הכולל של ההזמנה. אמרנו 850 אבל מה קורה בשורה הבאה בעצם יש פה בעיה 850 זה לא הסכום של השורה הזו אוקיי אנחנו אמרנו זה הסכום הכולל של כל ההזמנה אוקיי אז אני אשאיר גם פה 850 בעייתי אתם לא חושבים כי אם אני עושה עכשיו סך הכל ההזמנה נרצה
לי 1700 850 זה לא סכום ההזמנה 1700 זה הסכום הכולל של ההזמנה אז אתם מבינים את הבעיה בעצם כשאנחנו מנהלים נתונים בישויות שונות ורמות שונות של נתונים באותה טבלה