התייעצות איך לשמור תיעוד מי למד מה בתוכן מאוד דינמי, אבל מאוד מקובע
-
אקדים קצת עם מילון קצר לסדר לי את הראש ולתועלת העוזרים, ותודה מראש
חומר לימודי: מסכת משניות - מחולק לפרקים ומשניות, פרק גמרא- מחולק לדפים ועמודים.
יחידת לימוד: משנה, עמוד גמרא (עמוד א או ב)
תאריך לימוד: חודש עברי מסויים שבו הוא למד את היחידת לימוד
שנת הלימוד: שנה עברית שבה החודש שבו למד יחידת לימוד מתוך החומר הלימודי.
תלמיד: אחד מכ500 תלמידים שיש במוסד הנ״ל.אני צריך להציג מידע שנלמד במהלך שנה מסויימת, על ידי תלמיד מסויים, בחומר לימודי מסויים, בצורת טבלא גדולה, שבה יהיה רשום את כל החומר הלימודי, ואם הוא למד אותו בשנה הזאת אז התיבה תהיה מסומנת בצבע מסויים (לכל חודש נקבע צבע, וזה נצבע כצבע של החודש שבו הוא נלמד), ואם לא למד את היחידות לימוד הזאת עדיין, התיבה תהיה לבנה.
לצורך ההמחשה, כמו הטבלאות של ״טבלאות חזרה״ על הש״ס
כשיש את הטבלא הפתוחה, כשהיא מסומנת כבר עם שנה, חומר לימודי, ותלמיד, אני צריך לאפשר ללחוץ על חודש מסויים שאני רוצה לעדכן שלמדו בו, ואז כל יחידת לימוד שלוחצים עליה, נצבעת באותו צבע של החודש, וצריך להתעדכן אצלי לימוד של אותו יחידה, באותו חומר לימודי, באותו חודש, באותה שנה, באותו תלמיד.
אם הוא לא בחר חודש, או שהוא מסמן משהו שכבר מסומן, אני צריך לבטל סימון ולרשום אצלי שהוא לא למד את זה.
איך אני שומר את זה אצלי בdb, באיזה סוג מומלץ להשתמש?
אני חושב שבפרויקט הזה אני בכל מקרה אצטרך להשתמש עם sql (שאני יודע קצת) בשביל ניהול משתמשים, ועוד צרכים של הפרויקט,
איך אוכל לנהל בצורה טובה את החומרי לימוד, ובמיוחד את הלימוד בפועל של התלמידים?
הדבר הראשוני שחשוב לי זה איך לשמור בשרת, בsql? בredis וכו׳? לשמור כל שנה במקום נפרד, או לשמור את כולם באותו טבלא / מערך.
אשמח לכל עזרה בנושא
הדבר השני (ועליו לכאורה כבר אפתח נושא חדש, אם לא אסתדר) זה באיזה פלטפורמה אצטרך להשתמש באתר ואיך הכי נכון לעדכן את השרת בשינויים.
-
@צבי-ש
א. ברור שד"ב. כדי שהנתונים ישמרו. בטבלה יהיה שדות עבור מזהה התלמיד, תאריך לועזי, ואת יחידת הלימוד (שנת הלימוד כלול כבר בתאריך).
ב. אני הייתי עושה בשביל צד הקליינט מערך JSON כשבאובייקט יש את השדות הנ"ל.
ג. בנוגע לסדר את הטבלה בצד הקליינט, וכן לסנן את הנתונים בשרת לפי תאריך עברית, תשתמש עם hebcal.
ד. בשביל תצוגת המסכתות תעשה אובייקט שכולל את כל המסכתות / פרקים / משניות (או יותר פשוט - יחידות הלימוד), ושבפרימוורק צד הקליינט שאתה משתמש איתו תעשה לולאה על האובייקט כדי להציג את זה בצורה טבלאית. כל משבצת תקרא לפונקציה (והיא שולחת אליה כפרמטר את פרטי יחידת הלימוד) והפונקציה מחזירה את התאריך שנמצא לימוד כזה, וככל ויחידת לימוד זו נמצאת בJSON אז המשבצת הרלוונטית תהיה צבועה בצבע החודש שמופיע בתאריך (אתה לוכד את התאריך העברי ג"כ ע"י hebcal).בנ"ל אתה יכול לוודא שלא בוחרים פעמיים את אותו לימוד. פשוט אתה מגדיר שאי אפשר לשנות סימון למשבצת מסומנת.
בנוגע לשאלות:
תשמור את כל השנים באותו מערך, כל עוד יש לך את הסינונים (בצד השרת). אתה יכול להוסיף עוד פרמטר בטבלה שתגדיר שנת לימודים. -
@chagold כתב בהתייעצות איך לשמור תיעוד מי למד מה בתוכן מאוד דינמי, אבל מאוד מקובע:
א. ברור שד"ב. כדי שהנתונים ישמרו. בטבלה יהיה שדות עבור מזהה התלמיד, תאריך לועזי, ואת יחידת הלימוד (שנת הלימוד כלול כבר בתאריך).
תודה, עברתי על דבריך בעיון, עדיין נשארו לי מספר שאלות.
1 בצד שרת איך אני שומר את ה״מערך״ עם חומרי הלימוד, ובתוכו יחידות הלימוד, האם לזה אוכל גם להשתמש בsql? או שאצטרך מסד נתונים אחר? (זה צריך להיות עם אופציה להוסיף ולמחוק חומר לימודי מידי פעם בפעם)
2 שוב בצד שרת, באיזה מבנה אני שומר את הנתונים של כל תלמיד? בשורה עם כל הנתונים של התלמיד, אני מוסיף שדה "data" ושם מניח את הגייסון המלא?או שכוונתך היא בכל לימוד ליצור רשומה חדשה בטבלת ״לימודים״ וכשאני מייצא את הנתונים לקליינט, לאסוף משם את כל השורות?
-
@צבי-ש כתב בהתייעצות איך לשמור תיעוד מי למד מה בתוכן מאוד דינמי, אבל מאוד מקובע:
@chagold כתב בהתייעצות איך לשמור תיעוד מי למד מה בתוכן מאוד דינמי, אבל מאוד מקובע:
א. ברור שד"ב. כדי שהנתונים ישמרו. בטבלה יהיה שדות עבור מזהה התלמיד, תאריך לועזי, ואת יחידת הלימוד (שנת הלימוד כלול כבר בתאריך).
תודה, עברתי על דבריך בעיון, עדיין נשארו לי מספר שאלות.
1 בצד שרת איך אני שומר את ה״מערך״ עם חומרי הלימוד, ובתוכו יחידות הלימוד, האם לזה אוכל גם להשתמש בsql? או שאצטרך מסד נתונים אחר? (זה צריך להיות עם אופציה להוסיף ולמחוק חומר לימודי מידי פעם בפעם)
2 שוב בצד שרת, באיזה מבנה אני שומר את הנתונים של כל תלמיד? בשורה עם כל הנתונים של התלמיד, אני מוסיף שדה "data" ושם מניח את הגייסון המלא?או שכוונתך היא בכל לימוד ליצור רשומה חדשה בטבלת ״לימודים״ וכשאני מייצא את הנתונים לקליינט, לאסוף משם את כל השורות?
- בהתחלה לא הבנתי שאתה צריך להציג משניות / גמרות וכו'. אבל בכל מקרה התשובה היא כן. באותה טבלה של יחידות הלימוד, תעשה גם עמודה של סמסטר (שנה / עונה / + קבוצה ), שתוכל לסנן לפי זה, ובנוסף תעשה עוד עמודה שבה יהיה את התוכן שאתה צריך להציג. (נ.ב. איך שהצעתי עכשיו, ככל וחומר לימוד יחזור על עצמו בכיתות שונות, יצטרכו להעתיק אותו שוב בד"ב. אם אתה רוצה להימנע מזה יצטרכו לעשות קצת שונה ממה שהצעתי).
- כמו האופציה השניה. כי כיון שיש בטבלה של הלימוד גם עמודת מזהה התלמיד, א"כ כדי לקבל מידע על תלמיד מסויים עושים שאילתא שתסנן את הנתונים שבטבלת הלימוד לאותו תלמיד. משהו כזה
select * from learn WHERE id_pupil = 1234567;
רק שאת התוצאות אתה מחזיר לצד הקליינט בjson. כנ"ל.
-
@chagold כתב בהתייעצות איך לשמור תיעוד מי למד מה בתוכן מאוד דינמי, אבל מאוד מקובע:
@צבי-ש כתב בהתייעצות איך לשמור תיעוד מי למד מה בתוכן מאוד דינמי, אבל מאוד מקובע:
@chagold כתב בהתייעצות איך לשמור תיעוד מי למד מה בתוכן מאוד דינמי, אבל מאוד מקובע:
א. ברור שד"ב. כדי שהנתונים ישמרו. בטבלה יהיה שדות עבור מזהה התלמיד, תאריך לועזי, ואת יחידת הלימוד (שנת הלימוד כלול כבר בתאריך).
תודה, עברתי על דבריך בעיון, עדיין נשארו לי מספר שאלות.
1 בצד שרת איך אני שומר את ה״מערך״ עם חומרי הלימוד, ובתוכו יחידות הלימוד, האם לזה אוכל גם להשתמש בsql? או שאצטרך מסד נתונים אחר? (זה צריך להיות עם אופציה להוסיף ולמחוק חומר לימודי מידי פעם בפעם)
2 שוב בצד שרת, באיזה מבנה אני שומר את הנתונים של כל תלמיד? בשורה עם כל הנתונים של התלמיד, אני מוסיף שדה "data" ושם מניח את הגייסון המלא?או שכוונתך היא בכל לימוד ליצור רשומה חדשה בטבלת ״לימודים״ וכשאני מייצא את הנתונים לקליינט, לאסוף משם את כל השורות?
- בהתחלה לא הבנתי שאתה צריך להציג משניות / גמרות וכו'. אבל בכל מקרה התשובה היא כן. באותה טבלה של יחידות הלימוד, תעשה גם עמודה של סמסטר (שנה / עונה / + קבוצה ), שתוכל לסנן לפי זה, ובנוסף תעשה עוד עמודה שבה יהיה את התוכן שאתה צריך להציג. (נ.ב. איך שהצעתי עכשיו, ככל וחומר לימוד יחזור על עצמו בכיתות שונות, יצטרכו להעתיק אותו שוב בד"ב. אם אתה רוצה להימנע מזה יצטרכו לעשות קצת שונה ממה שהצעתי).
- כמו האופציה השניה. כי כיון שיש בטבלה של הלימוד גם עמודת מזהה התלמיד, א"כ כדי לקבל מידע על תלמיד מסויים עושים שאילתא שתסנן את הנתונים שבטבלת הלימוד לאותו תלמיד. משהו כזה
select * from learn WHERE id_pupil = 1234567;
רק שאת התוצאות אתה מחזיר לצד הקליינט בjson. כנ"ל.
תודה על התשובה,
כלומר, אני לא שומר לצד התלמיד את הלימודים שלו,
אלא יש טבלת תלמידים,
ויש טבלת לימודים , שבה נרשם שתלמיד עם ID מסויים, למד יחידת לימוד 8 מחומר לימוד 2 בסמסטר 1 ?
ואז אני אוסף את המידע הזה לפי היחידות לימוד שאני צריך, לפי התלמיד שאני צריך? -
כן, רק להבהיר:
יש 3 טבלאות.- תלמידים.
- יחידות לימוד. (והיא אמורה לכלול, או לא אמורה לכלול, את החומר לימוד. כמו שכתבתי לעיל).
- לימודים.
@צבי-ש כתב:
ויש טבלת לימודים , שבה נרשם שתלמיד עם ID מסויים, למד יחידת לימוד 8 מחומר לימוד 2 בסמסטר 1 ?
אם כמו שכתבתי לעיל שבאותה טבלה של יחידות הלימוד, תעשה גם עמודה של סמסטר (שנה / עונה / + קבוצה ), אתה לא צריך שבטבלת הלימודים יהיה המידע של הסמסטר (כי זה כבר מגיע מטבלת יחידות הלימוד), וכמו"כ אתה לא צריך את חומר הלימוד, כיון שזה ג"כ נמצא כבר בטבלת יחידות לימוד. אתה צריך רק 'שתלמיד עם ID מסויים, למד יחידת לימוד 8, בתאריך X').