יסודות עיצוב מסדי נתונים

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

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

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

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

במאמר זה

מספר מונחי מסד נתונים שעליך לדעת

מהו עיצוב טוב של מסד נתונים?

תהליך העיצוב

קביעת המטרה של מסד הנתונים שלך

חיפוש וארגון של המידע הנדרש

חלוקת המידע לטבלאות

הפיכת פריטי מידע לעמודות

ציון מפתחות ראשיים

יצירת קשרי גומלין בין טבלאות

כוונון העיצוב

החלת הכללים על נורמליזציה


מספר מונחי מסד נתונים שעליך לדעת

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

תמונה שמתארת שלוש טבלאות בגליונות נתונים

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

לראש הדף

מהו עיצוב טוב של מסד נתונים?

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

עיצוב טוב של מסד נתונים, לפיכך, הוא אחד אשר:

  • מחלק את המידע לטבלאות מבוססות-נושא כדי לצמצם נתונים מיותרים.

  • Access מספק המידע הנדרש כדי לצרף את המידע בטבלאות יחד לפי הצורך.

  • מסייע תומך ולאחר מכן ודא את מידת הדיוק ותקינות של המידע שלך.

  • המתאימה לצרכים שלך עיבוד נתונים ודיווח.

לראש הדף

תהליך העיצוב

תהליך העיצוב כולל השלבים הבאים:

  • קביעת המטרה של מסד הנתונים שלך   

    פעולה זו מסייעת לך להתכונן השלבים הנותרים.

  • איתור וארגון של המידע הנדרש   

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

  • חלוקת המידע לטבלאות   

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

  • הפיכת פריטי מידע לעמודות   

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

  • ציון מפתחות ראשיים   

    בחר מפתח ראשי של טבלה. המפתח הראשי הוא עמודה הנמצא בשימוש כדי לזהות באופן ייחודי לכל שורה. דוגמה עשוי להיות מזהה מוצר ' או ' מזהה הזמנה '.

  • הגדרת קשרי גומלין בין טבלאות   

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

  • כוונון העיצוב   

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

  • להחיל כללי נורמליזציה   

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

לראש הדף

קביעת המטרה של מסד הנתונים שלך

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

לראש הדף

חיפוש וארגון של המידע הנדרש

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

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

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

אדם המדמיין דוח של מלאי מוצרים

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

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

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

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

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

לאחר איסוף מידע זה, אתה מוכן לשלב הבא.

לראש הדף

חלוקת המידע לטבלאות

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

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

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

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

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

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

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

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

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

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

לראש הדף

הפיכת פריטי מידע לעמודות

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

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

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

הרשימה הבאה מציגה כמה עצות עבור קביעת העמודות.

  • אל תכלול נתונים מחושבים   

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

  • לאחסן מידע בחלקיו לוגיים   

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

תמונה המראה פריטי מידע במהלך תהליך העיצוב

לאחר כוונון עמודות הנתונים בכל טבלה, אתה מוכן לבחור את המפתח הראשי של כל טבלה.

לראש הדף

ציון מפתחות ראשיים

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

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

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

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

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

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

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

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

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

עבור מוצר מכירות מסד הנתונים, באפשרותך ליצור עמודת מספור אוטומטי עבור כל אחת מהטבלאות שישמש כמפתח ראשי: ProductID עבור הטבלה מוצרים, OrderID עבור ההזמנות טבלה, CustomerID בטבלה Customers וקוד ספק עבור טבלת הספקים.

תמונה המראה פריטי מידע במהלך תהליך העיצוב


לראש הדף

יצירת קשרי גומלין בין טבלאות

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

טופס ההזמנות

1. המידע בטופס זה מגיע מהטבלה Customers...

2... הטבלה employees .the...

3... .the הטבלה orders...

4... טבלת מוצרים .the...

5. … ומנהל הטבלה Order Details.

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

לראש הדף

יצירת קשר גומלין של יחיד-לרבים

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

התפיסה של יחיד לרבים

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

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

תמונה המראה פריטי מידע במהלך תהליך העיצוב

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

לראש הדף

יצירת קשר גומלין של רבים-לרבים

שקול את קשרי הגומלין בין טבלת המוצרים לבין הטבלה Orders.

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

לנושאים של שתי הטבלאות — הזמנות ומוצרים — יש קשרי גומלין של רבים-לרבים. פעולה זו מציגה בעיה. כדי להבין את הבעיה, דמיין מה היה קורה אם ניסית ליצור את קשר הגומלין בין שתי הטבלאות על-ידי הוספת השדה Product ID הטבלה Orders. אם ברצונך יותר ממוצר אחד בכל הזמנה, עליך יותר מרשומה אחת בטבלה orders בכל הזמנה. ניתן לחזור על מידע ההזמנה עבור כל שורה הקשורה להזמנה בודדת — והתוצאה היתה עיצוב בלתי יעיל שעלול להוביל לנתונים בלתי מדויקים. תיתקל באותה הבעיה אם תמקם את שדה מזהה ההזמנה בטבלת המוצרים — בדרך כלל יש לך יותר מרשומה אחת בטבלה Products עבור כל מוצר. כיצד תוכל לפתור בעיה זו?

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

קשרי גומלין של רבים לרבים

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

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

  • הטבלה Orders ועל הטבלה Order Details יש קשר גומלין של יחיד-לרבים. כל הזמנה יכולה לכלול פריט שורה יותר מרשומה אחת, אך כל פריט שורה מחובר להזמנה אחת בלבד.

  • טבלת המוצרים לבין הטבלה Order Details יש קשר גומלין של אחד-לרבים. כל מוצר יכול להיות משויך פריטי שורה רבים, אך כל פריט שורה מתייחס למוצר אחד בלבד.

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

לאחר ההכללה של טבלת פרטי ההזמנה, רשימת הטבלאות והשדות עשוי להיראות כך:

תמונה המראה פריטי מידע במהלך תהליך העיצוב


לראש הדף

יצירת קשר גומלין של יחיד ליחיד

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

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

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

  • אם שתי הטבלאות בעלות נושאים שונים מפתחות ראשיים שונים, בחר אחת מהטבלאות (אחת מהשתיים) והוסף את המפתח הראשי שלה בטבלה האחרת כמפתח זר.

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

לראש הדף

כוונון העיצוב

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

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

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

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

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

  • האם אתה מזין שוב ושוב מידע כפול באחת הטבלאות שלך? אם כן, קרוב לוודאי שעליך לחלק את הטבלה שתי טבלאות בעלות קשר גומלין של יחיד-לרבים.

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

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

  • האם כל עמודה מכילה עובדה אודות נושא הטבלה? אם עמודה מכילה מידע אודות נושא הטבלה, היא שייכת לטבלה אחרת.

  • האם כל קשרי הגומלין בין הטבלאות המיוצג על-ידי שדות משותפים או על-ידי טבלה שלישית? קשרי גומלין של יחיד ליחיד ולרבים דורשים עמודות משותפות. קשרי גומלין של רבים-לרבים דורשים טבלה שלישית.

כוונון של טבלת המוצרים

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

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

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

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

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

  • Product ID

  • Name

  • מוצר1

  • Name1

  • מוצר2

  • Name2

  • מוצר3

  • Name3

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

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

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

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

לראש הדף

החלת הכללים על נורמליזציה

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

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

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

צורה נורמלית ראשונה

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

צורה נורמלית שנייה

צורה נורמלית שנייה דורש כי כל עמודה שאינה מהווה מפתח תהיה תלויה במלואה במפתח הראשי כולו, ולא רק חלק ממפתח. כלל זה חל כשיש לך מפתח ראשי המורכב יותר מעמודה אחת. לדוגמה, נניח שיש לך טבלה המכילה את העמודות הבאות, שבו Order ID ו- Product ID מהוות את המפתח הראשי:

  • מזהה הזמנה (מפתח ראשי)

  • מזהה מוצר (מפתח ראשי)

  • שם מוצר

עיצוב זה מפר את הצורה הנורמלית השנייה, מכיוון שהשם מוצר תלוי Product ID, אך לא ב- Order ID, כך שהיא אינה תלויה במפתח הראשי כולו. עליך להסיר את שם מוצר מהטבלה. היא שייכת לטבלה אחרת (מוצרים).

צורה נורמלית שלישית

צורה נורמלית שלישית דורש לא רק שבכל עמודה שאינה מהווה מפתח תהיה תלויה במפתח הראשי כולו, אך כי עמודות שאינו מפתח לא יהיו תלויות זה לזה.

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

  • ProductID (מפתח ראשי)

  • Name

  • SRP

  • הנחה

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

לראש הדף

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

הרחב את הכישורים שלך
סייר בהדרכה
קבל תכונות חדשות לפני כולם
הצטרף למשתתפי Office Insider

האם מידע זה היה שימושי?

תודה על המשוב!

תודה על המשוב! נראה שכדאי לקשר אותך לאחד מנציגי התמיכה של Office.

×