logo


פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקסס

מבוא לבסיסי נתונים

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

Loganberry Inc. 50.00
Smart Corp. 450.00
Arlene Von Smitten 500.00
Sanford & Son 75.00
B. Gates 25000.00
Fanny Farmer 55.50

אם קראת מאמר כלשהו בנושא של בסיסי נתונים, ללא ספק נתקלת במונח "מודל יחסי" ("relational database") שהוא בדיוק מה שבנינו למעלה. בסיסי נתונים יחסיים הם הנפוצים ביותר והצפויים ביותר שתרצה לאחזר מתוך עמוד רשת. כל חבילות התוכנה העיקריות העוסקות בבסיסי נתונים, כולל Microsoft Access, FileMaker Pro, Oracle, Informix, וכו' מותאמים ליצירה וניהול של בסיסי נתונים יחסיים.

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

billing: דוגמה לטבלה
ClientName ClientEmail Invoice Total Paid
Loganberry Inc. logan@pluc.net 099050101 50.00 Yes
Smart Corp. smarties@pants.net 099050102 450.00  
Arlene Von Smitten arly@frau.net 099060101 500.00 Yes
Sanford & Son rfoxx@pickup.com 099060102 75.00  
B. Gates bill@me.com 099060103 25000.00  
Fanny Farmer ffarmer@sausagelinks.net 099070101 55.50 Yes

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

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

"בבקשה ציין את שמות כל הלקוחות וכתובת הדואר האלקטרוני שלהם" "בבקשה ציין את שמות כל הלקוחות שחויבו בלפחות 500$" "בבקשה ציין את שמות כל הלקוחות וכתובת הדואר האלקטרוני שלהם, שלא שילמו"

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

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

 

invoices: דוגמה לטבלה בבסיס נתונים
Invoice Hours Rate
099050101 1 50
099050102 9 50
099060101 12.5 40
099060102 1 75
099060103 50 500
099070101 3.7 15

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

"בבקשה ציין את כל החשבוניות שבהם עבדתי לפחות 10 שעות" "בבקשה ציין את כל החשבוניות שבהם גביתי לפחות 50$ לשעה" "בבקשה ציין את שמות כל הלקוחות שלא שילמו שבשבילם עבדתי לפחות 10 שעות" "בבקשה ציין את השמות והדואר האלקטרוני של כל הלקוחות שעבורם גביתי לפחות 70$ לשעה"

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

שאתם צריכים לדעת: פרק 6 להשתעשע עם בסיסי נתונים מקוונים: אקסס Perl ה
תוכן עניינים
SeQuel :בסיסי נתונים ןן

אודות
תוכן עניינים
פרק 1: ה Perl שאתם צריכים לדעת
פרק 2: קישור Perl לעמודי הרשת
פרק 3: שמירת מצב
פרק 4: HTML בחטף ותבניות (Templates) רשת
פרק 5: עיבוד וניתוח של עמודי רשת
פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקסס
מבוא לבסיסי נתונים  
בסיסי נתונים SeQuel :II  
הכנת Microsoft Access  
DBI ו DBD מודולי בסיס הנתונים של Perl  
שאילתה פשוטה  
איך לבצע שאילתה  
היכן אנו עומדים  
פרק 7: המודל MySQL
פרק 8: להשתעשע בבסיסי נתונים - GUFE - החזית הכללית והשימושית
פרק 9: המילניום - ניהול זמן ותאריך
פרק 10: ניהול רשימות והאשים (Hashs)
פרק 11: הפניה להפניה
פרק 12: הכרות עם mod_perl