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

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