en-UShe-IL
You are here:  Blog > new Forums FAQ > Forums FAQ 349
Register   |  Login

Minimize Data Definition Language (DDL) and Data Manipulation Language (DML)

את השאילתות נהוג לחלק לשתי קטגוריות: שאילתות מבנה אלמנטים (DDL) ושאילתות טיפול בנתונים (DML).

בקישור הבא ניתן לקרוא על נושא זה מעט יותר. כאן אנסה להסביר מושגים אלו בכמה משפטים קצרים ובעיקר להסביר את הסיבה שבכל פורום מקצועי תתבקשו תמיד לצרף לשאלות DML+DDL. אז מה בדיוק רוצים מכם?

שאילתות מבנה אלמנטים(DDL)

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

שאילתות טיפול בנתונים (DML)

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


הקשר לפורומים והצורך בצירוף DDL לכל שאלה:

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

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

לדוגמה: אם רוצים לשאול שאלה הקשורה לטבלה נוכל לתאר את הטבלה שיש לנו במסד הנתונים במספר דרכים:

תיאור במלים

טבלה MyTable כוללת שדות: ID מסוג INT ו Name מסוג CHAR ו Date מסוג תאריך.

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

תיאור בשרטוט

תיאור בעזרת שרטוט פותר את הבעיה של הבנת המבנה של האלמנטים השונים והרבה יותר ברור אבל עדיין משאיר אותנו את הבעיה שמי ששואל את השאלה מטיל עבודה מיותרת על מי שמגיע לעזור לו וחבל

שאילתת DDL

create table MyTable (
[ID] int,
[Name] char(10),
[Date] datetime
)


במקום להרבות במלים כל מה שצריך זה לצרף שאילתה שמייצרת את האלמנטים הקשורים לשאלה.

הקשר לפורומים והצורך בצירוף DML לכל שאלה:

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

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

לסיכום נושא שאילתות בפורומים:

  • כל מדריך או שאלה טובה מתחילים בהקדמה הכוללת רקע של מה צריך המשתמש על מנת לעבוד עם המדריך כגון DML+DDL. על מנת לחסוך לנו זמן בכתיבת מדריכים ודוגמאות מייקרוסופט מספקחים מספר בסיסי נתונים לדוגמה אשר נהוג לעשות בהם שימוש במדריכים מתוך הנחה שלכל מפתח יש את מסדי הנתונים הנ"ל או שהוא יכול להוריד אותם באינטרנט. בכך חוסך כותב המדריך את הצורך בכתיבת DML+DDL והוא יכול להתמקד במדריך עצמו.
  • DML+DDL הם הקדמה לכל שאלה הקשורה למבנה נתונים מסויים או לנתונים מסויימים והצורך לקבל תוצאות בהתאם
  • DML+DDL מאפשרים למי שרוצה לעזור להתמקד בעזרה ופתרון הבעיה ולא להשקיע זמן מיותרבבנייה של טבלאות או הכנסת נתונים לדוגמה.

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