עזרה בתכנון DB

davidx

New member
עזרה בתכנון DB

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

s h i m s h o n

New member
התשובה כרגיל - תלוי

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

davidx

New member
תשובות לשאלות

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

roavi

New member
לא מבין מה הבעיה??

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

roavi

New member
עוד כמה המלצות>>

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