האם אתה מוכן להתחיל ליצור מסדי נתונים וטבלאות עם ה- שפת שאילתות מובנית? במאמר זה נחקור את תהליך יצירת הטבלאות באופן ידני באמצעות הפקודות CREATE DATABASE ו- CREATE TABLE. אם אתה חדש ב- SQL, ייתכן שתרצה לבדוק כמה יסודות SQL ראשון.
דרישות עסקיות
לפני שנשב ליד המקלדת, עלינו לוודא שיש לנו הבנה מוצקה של דרישות הלקוח. מה הדרך הטובה ביותר להשיג תובנה זו? מדברים עם הלקוח, כמובן! לאחר שישבנו עם מנהל משאבי האנוש של XYZ, נודע לנו שהם חברת מכירות יישומונים ומעוניינים בעיקר במעקב אחר מידע על אנשי המכירות שלהם.
תאגיד XYZ מחלק את כוח המכירות שלה לאזורים המזרחיים והמערביים, שכל אחד מהם מחולק לשטחים רבים המכוסים על ידי נציגי מכירות בודדים. מחלקת משאבי אנוש מעוניינת לעקוב אחר השטח המכוסה על ידי כל עובד וכן על מידע השכר של כל עובד ומבנה הפיקוח עליו. כדי לעמוד בדרישות אלה, תכננו מסד נתונים המורכב משלוש טבלאות, המוצגות בתוכנה תרשים יחסים-יחסים בעמוד זה.
בחירת פלטפורמת מסד נתונים
החלטנו להשתמש ב- מערכת ניהול מסדי נתונים (או DBMS) הבנוי על שפת השאילתות המובנית (SQL). לכן, כל הפקודות שלנו ליצירת מסד נתונים וטבלאות צריכות להיכתב עם ANSI SQL רגיל.
כהטבה נוספת, שימוש ב- SQL תואם ANSI יבטיח כי פקודות אלה יעבדו על כל DBMS התומך בתקן SQL, כולל Oracle ו- Microsoft SQL Server. אם עדיין לא בחרת פלטפורמה למסד הנתונים שלך, אפשרויות תוכנת מסד נתונים מדריכות אותך בתהליך הבחירה.
יצירת מסד הנתונים
הצעד הראשון שלנו הוא ליצור את בסיס הנתונים עצמו. מערכות רבות לניהול מסדי נתונים מציעות סדרה של אפשרויות להתאמה אישית של פרמטרי מסד נתונים בשלב זה, אך מסד הנתונים שלנו מאפשר רק ליצור פשוט מסד נתונים. כמו בכל הפקודות שלנו, ייתכן שתרצה לעיין בתיעוד עבור ה- DBMS שלך כדי לקבוע אם פרמטרים מתקדמים הנתמכים על ידי המערכת הספציפית שלך עונים על צרכיך. בוא נשתמש בפקודה CREATE DATABASE כדי להגדיר את מסד הנתונים שלנו:
צור אנשי צוות נתונים
שים לב במיוחד לרישיות השימוש בדוגמה שלמעלה. נהוג בקרב מתכנתים SQL להשתמש בכל האותיות באותיות רישיות עבור מילות מפתח SQL כגון "CREATE" ו- "DATABASE" תוך שימוש בכל האותיות הקטנות עבור שמות שהוגדרו על ידי המשתמש כמו מסד הנתונים "כוח אדם" שֵׁם. מוסכמות אלה מאפשרות קריאה קלה.
כעת לאחר שתכננו ויצרנו את מסד הנתונים שלנו, אנו מוכנים להתחיל ביצירת שלושת הטבלאות המשמשות לאחסון נתוני כוח האדם של XYZ Corporation.
יצירת השולחן הראשון שלנו
הטבלה הראשונה שלנו כוללת נתונים אישיים לכל עובד בחברה שלנו. עלינו לכלול את שם העובד, המשכורת, תעודת הזהות והמנהל של כל עובד. נוהג טוב בתכנון להפריד בין שמות משפחה ושמות פרטיים לשדות נפרדים כדי לפשט את חיפוש ומיון הנתונים בעתיד. כמו כן, נעקוב אחר מנהל כל עובד על ידי הכנסת התייחסות לתעודת העובד של המנהל בכל רישום עובד. בואו נסתכל תחילה על שולחן העובדים הרצוי.
המאפיין ReportsTo מאחסן את מזהה המנהל עבור כל עובד. מתוך רשומות המדגם המוצגות, אנו יכולים לקבוע כי סו סקמפי הוא המנהל של טום קנדל ושל ג'ון סמית. עם זאת, במאגר המידע אין מידע על המנהלת של סו, כפי שצוין בערך NULL בשורה שלה.
כעת אנו יכולים להשתמש ב- SQL כדי ליצור את הטבלה במסד הנתונים האישי שלנו. לפני שנעשה זאת, בואו נוודא שאנחנו נמצאים במסד הנתונים הנכון על ידי הנפקת פקודת USE:
אנשי שימוש;
לחלופין, "אנשי DATABASE;" הפקודה תבצע את אותה פונקציה. כעת אנו יכולים להסתכל על פקודת SQL המשמשת ליצירת טבלת העובדים שלנו:
צור עובדי שולחן
(עובד INTEGER לא אפס,
שם משפחה VARCHAR (25) לא אפס,
שם פרטי VARCHAR (25) לא אפס,
מדווח ל- INTEGER NULL);
כמו בדוגמה שלעיל, שים לב כי מוסכמת התכנות קובעת כי אנו משתמשים בכל האותיות הראשיות עבור מילות מפתח SQL ואותיות קטנות עבור עמודות וטבלאות בשם המשתמש. הפקודה שלמעלה אולי נראית מבלבלת בהתחלה, אך למעשה יש מבנה פשוט מאחוריה. הנה תצוגה כללית שעשויה לנקות קצת דברים:
צור TABLE שם_טבלה
(אפשרויות סוג נתונים של attribute_name,
...,
אפשרויות סוג תכונה_שם);
מאפיינים וסוגי נתונים
בדוגמה הקודמת, שם הטבלה הוא עובדים ואנחנו כוללים ארבעה תכונות: עובד, שם משפחה, שם פרטי ודוחות. סוג הנתונים מציין את סוג המידע שאנו רוצים לאחסן בכל שדה. מזהה העובד הוא מספר שלם פשוט, לכן נשתמש בסוג הנתונים INTEGER הן בשדה עובד והן בשדה דוחות. שמות העובדים יהיו מחרוזות תווים באורך משתנה ואנחנו לא מצפים מאף עובד שיש שם פרטי או משפחה ארוך מ- 25 תווים. לכן נשתמש בסוג VARCHAR (25) עבור שדות אלה.
ערכי NULL
אנו יכולים גם לציין את אחד מהם NULL או NOT NULL בשדה האפשרויות של הצהרה CREATE. זה פשוט אומר לבסיס הנתונים אם ערכי NULL (או ריקים) מותרים למאפיין זה בעת הוספת שורות למסד הנתונים. בדוגמה שלנו, מחלקת משאבי אנוש דורשת לאחסן תעודת עובד ושם מלא לכל עובד. עם זאת, לא לכל עובד יש מנהל (המנכ"ל מדווח לאף אחד!) ולכן אנו מאפשרים רישומי NULL בתחום זה. שים לב ש- NULL הוא ערך ברירת המחדל והשמטה של אפשרות זו תאפשר במשתמע ערכי NULL לתכונה.
בניית השולחנות הנותרים
עכשיו בואו נסתכל על טבלת השטחים. ממבט מהיר על נתונים אלה נראה כי עלינו לאחסן מספר שלם ושני מחרוזות באורך משתנה. כמו בדוגמה הקודמת שלנו, איננו מצפים שמזהה האזור יכלול יותר מ -25 תווים. עם זאת, לחלק מהשטחים שלנו יש שמות ארוכים יותר, לכן נרחיב את האורך המותר של התכונה הזו ל -40 תווים.
בואו נסתכל על ה- SQL המתאים:
צור טריטוריות טבלה
(טריטוריה INTEGER לא NULL,
טריטוריה תיאור VARCHAR (40) לא אפס,
אזור VARCHAR (25) לא אפס);
לבסוף נשתמש בטבלת EmployeeTerritories לאחסון היחסים בין עובדים לטריטוריות. מידע מפורט על כל עובד וטריטוריה נשמר בשתי הטבלאות הקודמות שלנו. לכן, עלינו לאחסן רק את שני מספרי הזיהוי השלמים בטבלה זו. אם נצטרך להרחיב מידע זה נוכל להשתמש ב- JOIN בפקודות בחירת הנתונים שלנו כדי לקבל מידע ממספר טבלאות.
שיטה זו לאחסון נתונים מפחיתה יתירות במאגר המידע שלנו ומבטיחה שימוש אופטימלי בשטח בכונני האחסון שלנו. אנו נכסה את הפקודה JOIN לעומק בהדרכה עתידית. הנה קוד ה- SQL ליישום הטבלה הסופית שלנו:
צור שולחנות עובדים
(עובד INTEGER לא אפס,
טריטוריד INTEGER NOT NULL);
מנגנון SQL מספק לשנות את מבנה מסד הנתונים לאחר היצירה
אם אתה נבון במיוחד היום, אולי שמת לב ש"הטחנו "בטעות את אחת מדרישות התכנון בעת יישום טבלאות מסדי הנתונים שלנו. מנהל משאבי אנוש של תאגיד XYZ ביקש שמאגר המידע יעקוב אחר מידע על שכר העובדים, והזנחנו לספק זאת בטבלאות בסיס הנתונים שיצרנו.
עם זאת, הכל לא אבוד. אנו יכולים להשתמש בפקודה ALTER TABLE כדי להוסיף תכונה זו למסד הנתונים הקיים שלנו. אנו רוצים לאחסן את המשכורת כערך שלם. התחביר דומה למדי לזה של הפקודה CREATE TABLE, הנה:
עובדי ALTER TABLE
הוסף משכורת INTEGER NULL;
שימו לב שציינו שערכי NULL מותרים למאפיין זה. ברוב המקרים, אין אפשרות בעת הוספת עמודה לטבלה קיימת. זאת בשל העובדה שהטבלה כבר מכילה שורות ללא ערך למאפיין זה. לכן, ה- DBMS מכניס אוטומטית ערך NULL למילוי הריק.