logo


פרק 7: המודל MySQL

בסיס הנתונים שלכם ב MySQL: צעד שני

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

תיאור הטבלה billing

שם שדה

סוד השדה

האם יכול לקבל ערך NULL?

ClientName text לא
ClientEmail text לא
Invoice integer לא
Total real לא
Paid boolean כן

כעת, כדי לבנות למעשה מבנים אלו בMySQL אנו צריכים להמציא פקודת SQL שתגדיר את המבנה הנ"ל.

CREATE TABLE billing
(ClientName CHAR(255) NOT NULL,
ClientEmail CHAR(255) NOT NULL,
Invoice INTEGER NOT NULL,
Total DECIMAL(6,2) NOT NULL,
Paid TINYINT NULL,
INDEX IDX_INVOICE (Invoice)
) 

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

לבסוף, ניצור מפתח (index) מהשדה "invoice" - הפיכת השדה למפתח, תוכל להאיץ שאילתות עתידיות, אם שאילתות אלו מכילות שדה זה, וזאת במחיר הגדלת גודל בסיס הנתונים. יצירת מפתח עבור רוב שדות השאילתה שלכם עשויה להיות רעיון לא רע, אולם נושא הביצועים הוא עניין שיתבהר רק עם הניסיון.

כעת אנו מוכנים לשלוח את פקודת ה SQL הזו לשרת ה MySQL, וכן ליצור את המבנה עבור billing. נשתמש בלקוח האינטרקטיבי mysql, שתוכל להריץ מתוך mysql/bin/mysql הנמצא בספריה בה התקנת את MySQL. לקוח זה מציע סביבת עבודה מבוססת שורת פקודה (command line environment):

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 3.22.20

Type 'help' for help.

mysql>

מורה ללקוח להשתמש בבסיס הנתונים Clients:

mysql> \u Clients

וכעת הכנס את פקודת ה SQL להכנת המבנה:

mysql> create table billing (ClientName CHAR(255) NOT NULL,ClientEmail CHAR(255) 
NOT NULL,Invoice INTEGER NOT NULL,Total DECIMAL(6,2) NOT NULL,Paid TINYINT NULL
,INDEX IDX_INVOICE (Invoice))

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

mysql> \g
Query OK, 0 rows affected (0.06 sec)

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

mysql> CREATE TABLE invoices 
(Invoice INTEGER NOT NULL,Hours DECIMAL(8,2) NOT NULL,
Rate DECIMAL(6,2) NOT NULL,INDEX IDX_INVOICE (Invoice))
mysql> \g
Query OK, 0 rows affected (0.06 sec)

שני מבני הטבלה שלנו נמצאים במקום, ונוכל סוף כל סוף להגיע לעיקר, להכניס את הנתונים לתוך הטבלאות.

:MySQL בסיס הנתונים שלכם ב
תוכן עניינים
צעד שלישי :MySQL בסיס הנתונים שלכם ב

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