2015-09-03 2 views
-2

Я не знаю, было ли это потому, что я слишком долго думал об этом, и мое мышление только что замерло, но я зациклился на логической дилемме. У меня есть проект, который заключается в том, чтобы создать (своего рода) план подготовки домашних студентов для студентов в колледже. Именно так я намереваюсь работать (я объясню проблему позже).Создание Планировщика с использованием PHP и MySQL

Для целей проекта (если это возможно) одна таблица будет необходимо:

  • Вы идете на веб-страницу, где вы представлены с экрана входа в систему.
  • Если вы администратор, у вас есть возможность добавлять пользователей и добавлять их в классы.
  • Если вы учитель, вам будет представлена ​​страница с кнопкой, позволяющей создавать домашнюю работу, просматривать незавершенные и просматривать все заданные задачи.
  • Если вы студент, вам будет представлена ​​страница с показом домашних заданий, которые еще предстоит выполнить, и кнопку, чтобы направить вас к тем, которые вы уже выполнили.

Проблема (ы) для меня:

  • Как я могу создать его в базе данных, так что, когда учитель щелчки добавить домашнее задание, добавляет необходимый студент (ы), что он будет отображаться в задачах учеников. Я знаю, что могу что-то создать, чтобы, когда учитель нажимает «задание задачи» или что-то еще, переменные загружаются в соответствующие места в базе данных. Но это действительно запутанная часть для меня. Где находятся соответствующие места для хранения этой информации в базе данных? Учитывая, что мне нужно, чтобы заданная задача была загружена в КАЖДЫЙ выбранный ученик. Учитель должен иметь запись о том, кто выбрал, что они выполнили задание, а кто нет.
  • Экран входа, который, когда вы нажимаете логин, вы остаетесь в системе?

Вещи, которые я уже выработанные:

  • админ стороне. Как добавить пользователей, установить их как учителей/студентов/админов, дать им пароли и т. Д.

Мне очень нужна помощь, потому что я обычно не такой, это не что-то слишком сложное. Пожалуйста, если у кого-нибудь есть идеи, чтобы немного подтолкнуть меня, я бы очень признателен! : D

+0

Похоже, что основной проблемой является дизайн базы данных. Я бы начал с составления диаграммы отношений сущностей (ERD) с отношениями 1: 1, 1: многие и многие: многие отношения между вещами. Вы обнаружите, что огромный объяснитель, как все это будет работать. – halfer

+0

«Мне нужно, чтобы задание было загружено в КАЖДЫЙ выбранный ученик» - ага! Это звучит как много: много отношений: задача может быть задана многим студентам, а у ученика может быть много задач. Вам также нужна таблица мостов: 'student',' task' и 'student_task'. Последняя таблица обычно имеет только два внешних ключа: 'student_id' и' task_id', хотя она также может содержать метаданные (например, когда задача была назначена ученику, были ли они выполнены, комментарии учителя и т. Д.). – halfer

+0

О да, как говорит Уильям, решение с одним столом будет катастрофой здесь. Используйте правильный реляционный подход. – halfer

ответ

1

Это можно сделать с помощью одного стола, но это было бы ужасно неэффективно и сложно.

Как минимум я предлагаю таблицу для каждого класса, домашнего задания и студентов. Лично я бы также отделил HomeworkAssigned в другую таблицу, но это зависит от уровня детализации, который будет введен для задания домашней работы.

Затем вы можете добавить учащихся в таблицу учеников, которая будет ссылаться на класс. Например. («Mark», «Class A»), где Class A существует в таблице Classes. Если учащиеся могут принадлежать более чем одному классу, вы можете расширить эту взаимосвязь и ввести строку в новую таблицу ClassesAsssigned для каждого класса, к которому принадлежит студент. Например. («Mark», «Class A»), («Mark», «Class B») («Judy», Class A »), где Mark и Judy существуют в таблице Students, а классы A и B существуют в таблице Classes ,

Если домашняя работа может быть назначена классам, таблица домашней работы может затем ссылаться на класс, который затем вы можете запросить у учеников этого класса, который говорит вам, какие ученики должны выполнять домашнюю работу.

Если вам нужно только добавить домашнюю работу непосредственно к ученикам, тогда домашняя таблица может вместо этого обратиться к учащимся напрямую.

Если вам нужно обоим, я бы создал 2 таблицы домашних заданий, которые ссылаются на соответствующий класс или ученик. Вы просто должны помнить, что обе таблицы должны быть запрошены при поиске всей домашней работы, которую студент имеет.

Это будет означать, что при назначении домашней работы классу одна строка добавляется в домашнюю таблицу workclass и когда домашняя работа добавляется к ученикам непосредственно в домашнюю домашнюю таблицуStudent, добавляется строка для каждого ученика, которому присваивается домашняя работа.

Примечание. Больше таблиц может обеспечить лучшую ссылочную целостность и уменьшить общие дублированные данные. Он также позволяет запросам интеллектуального соединения находить отношения в данных, которые могут быть трудно увидеть при объединении несвязанных данных в одну таблицу.

Смежные вопросы