מסדי נתונים / מסד הנתונים הראשון שלך / הגדרת טבלאות וקישורם

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


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

עכשיו נבדוק את המידע אותו אנחנו רוצים לרכז במסד הנתונים (לכל מי ששכח - אנחנו בונים אתר לעסק החניות שיכניס לי מיליונים).

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



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

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

כרגע יש לנו שתי טבלאות: טבלת פגישות וטבלת לקוחות. שימו לב שלכל אחת מהן מפתח ראשי.



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

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

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



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

אתם רואים את החריגות, נכון? אז בואו נפריד בין גודל המכונית לתעריף.

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

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

אם נפריד את טבלת המכוניות לשתי טבלאות שונות: גודל מכונית ותעריף מכונית, נקבל משהו כזה:



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

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

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



עמוד הבא: עבודה עם אקסס >>




רקע
שעור 1
רקע
הכל אודות המידע
בדיקת כלים
אפליקציה לדוגמא
שעור 2
הקדמה
מסד נתונים יחסי
הגדרת טבלאות וקישורם >
עבודה עם אקסס
שעור 3
הקדמה
מערך דו-ממדי
VBScript עם ASP
עבודה עם טפסים
עוד על SQL
תפירת הטלאים
שעור 4
הקדמה
משתמשים בפקודת
Include

מפענחים עוד חלקים
מהקוד

מתיחת פנים