עושים קצת סדר בנתונים
מסד הנתונים שלנו מאחסן את המידע על גבי טבלאות. בדיוק כמו כל טבלה רגילה טבלאות אלו מכילות עמודות שונות. כל עמודה יכולה להכיל סוגים שונים של מידע.
סוגי המידע העיקריים של עמודות בשרתי MySQL הם:
- INT – עמודות המכילות מספרים שלמים בלבד. אחד השימושים העיקריים של סוג זה הוא בעמודות ה-ID אשר נותנות מספר מזהה לכל רשומה במסד הנתונים. ניתן לקרוא על סוגים נוספים בעמוד הבא
- VARCHAR – עמודות המכילות מחרוזות בעלי אורך מסוים. נוהגים להשתמש בסוג זה כאשר אנו רוצים לקלוט מידע כמו שמות של משתמשים, כתובות מייל וכו' אשר אינו עולה על אורך מסויים.
- TEXT – עמודות המכילות מחרוזות ארוכות כמו קטעי טקסט, מאמרים וכו' .
- DATE – עמודות המכילות תאריכים. נוהגים להשתמש בעמודות אלו למשל בטבלאות המכילות תגובות (Comments) כאשר אנו רוצים לדעת את התאריך שבו הגיב המשתמש. ניתן לקרוא על סוגים נוספים בעמוד הבא.
סוגי העמודות הנ"ל הן העיקריות בסביבת MySQL. בכל טבלה נהוג לתת לעמודה הראשונה את השם Id עם הסוג INT. עמודה זו נותנת בעצם מספר ייחודי לכל רשומה ורשומה כך שנוכל להתייחס אליהן בקלות. אחת מן התכונות המיוחדות שאנו מעניקים לעמודה זו היא היכולת לעלות ב-1 עם כל רשומה. נלמדה עליה בהמשך.
קשרי גומלין בין טבלאות
בכדי לממש את הפוטנציאל הטמון ב-SQL עלינו להבין כיצד טבלאות מאפשרות לנו לאחסן מידע ולשלוף אותו. לכן, בכדי לעצב מסד נתונים בצורה טובה עלינו לגרום לכך שכל מידע יוצג פעם אחת בלבד. למשל, אם היינו רוצים ליצור טבלה שבה משתמשים יוכלו להזמין מוצרים כיצד היינו עושים זאת?
קשר גומלין של יחיד-ליחיד (One To One)
לכל רשומה בטבלה שלנו יהיה רשומה תואמת בטבלה המקושרת אליה. במקרה שלנו לכל משתמש/לקוח (User) יהיה רשומה המצביעה על הזמנה (Order). כך שבעצם כל משתמש יוכל לבצע רק הזמנה אחת ולא יותר. ניתן להסתכל על קשר זה בצורה הבאה:
זוכרים את ה-ID שציינו? לכאן בדיוק נכנס השימוש שלו. בכדישרשומה בטבלת ה-User תוכל להצביע על רשומה בטבלת ה-Order עליה להכיל עמודה המכיל את ה-ID המתאים של אותו ה-Order. שני הטבלאות שלנו היו נראות פחות או יותר כך:
הערה: הטבלאות הנ"ל אינן משקפות דוגמאות אמיתיות ולא מציגות את הדרך הנכונה לאחסן את המידע שצויין. |
שימו לב שעמודת ה-Order_ID בכל רשומה מצביעה על ההזמנה המתאימה בטבלה הימנית. לקשר זה יש חיסרון ענקי: כל משתמש יכול ליצור רק הזמנה אחת ולא יותר. זאת מפני שקיימת רק עמודה אחת שיכולה להצביע על רשומה אחת בטבלת ההזמנות.
בנוסף, היינו יכולים לבנות את הטבלה בצורה כזו שלא היינו צריכים טבלה נוספת והיא הייתה נראית כך:
כך לא היינו צריכים אפילו צריכים לחפש רשומות בטבלה המקושרת.