Я работаю с онлайн-проектом по проверке викторины в Laravel. Я планировал создать структуру БД с почти всеми возможностями, но искал более оптимизированный способ.
Требование: необходимо добавить вопрос. Перед добавлением вопроса мне нужно следующее, для какого стандарта, для какого класса, для какого предмета, для какой главы, для какого топи c этот вопрос принадлежит.
Итак, это мой план:
Добавить класс -> здесь есть форма и таблица для добавления классов (1-й, 2-й, 3-й и т. Д.)
Добавить тему -> здесь есть форма и таблица ( Maths engli sh, химия, engli sh)
Add Chapters-> имеет форму и таблицу для конкретного c предмета, к которому принадлежат эти главы (один ко многим отношениям один предмет много глав)
добавить темы -> здесь есть форма и таблица, для указания c главы, к которой принадлежат эти темы (отношение один ко многим. Одна глава может иметь много тем)
Теперь мне нужно добавить вопрос. У меня есть форма вопроса, где форма имеет элементы управления, такие как вопрос о том, какой класс, какой предмет, какую главу, какой топи c, какой уровень.
мой EduationStandardtable
с полями
id standard_name
1 CBSE
2 ICSE
3 Matriculation
4 State board
my classDetailstable
с полями
id class_name
1 5th std
2 6th std
3 7th std
my SubjectDetails table
с полями
id sub_name
1 english
2 maths
3 physics
my ChapterDetails table
с полями
id subject_id ChapterName
1 1 Matrices
2 1 Integration
3 1 Differentiation
4 3 Electrostatics
5 3 Tranformation
6 3 Electricity
my TopicDetails table
с полями
id chapter_id Topic_id
1 1 Inverse of a Non-Singular
2 1 Elementary Transformations of a Matrix
3 1 Solving System of Linear Equations
4 4 Role of electrostatic
5 4 Electric flux
6 4 Polaraisation
Итак, я планировал, чтобы моя таблица вопросов была такой,
id
education_standard_id(fk)
class_id (fk)
subject_id (fk)
chapter_id (fk)
topic_id (fk)
level (easy,medium,hard)
question_number
question_description
question_image(optional)
optionA:
optionA_image:(optional)
optionB:
optionB_image:(optional)
optionC:
optionC_image:(optional)
optionD:
optionD_image:(optional)
correctanswer
explanation
explanation_image (optional)
explanation_pdf (optional)
explanation-video(optional)
Достаточно ли этого? Как еще можно оптимизировать это?
Здесь класс и предмет связаны между собой, означает, что в одном классе может быть много предметов, а в одном предмете может быть много классов.
у предмета может быть много глав, так один ко многим. В одной главе может быть много тем, поэтому от одной ко многим.
всего 5 форм adding-class, adding-subject, adding-chapter, adding-topic, adding-question
всего пять таблиц class-table, subject-table, chapter -table, topic-table, question-table
Один из моих друзей на другом форуме предложено так
classes ( id, name ) //slug or others if you want
subjects (id, name ) // slug or others if you want
chapters(id, name, subject_id) // this belongs to a subject so it's a "child"
topics (id, name, chapter_id) // topic is child of chapter
class_topic (id, class_id, topic_id) // this is the pivot table because each class studies a topic...
Example
$class_5 = ClassObject::find(5);
$topics = $class_5->topics()->get();
// iterate and display topic->name
Мое замешательство - формы. Я использую 5 форм для их добавления. Это правильно? Как еще я могу уменьшить формы. Я думаю, что все таблицы необходимы. Но правы ли они?