首页 > 解决方案 > 在线测验考试数据库模式结构表关系使用laravel

问题描述

我正在使用 Laravel 的在线测验考试项目。我已经计划了一个几乎有可能的数据库结构,但正在寻找更优化的方式。

要求:需要添加问题。在添加问题之前,我需要以下内容,哪个标准,哪个班级,哪个主题,哪个章节,这个问题属于哪个主题。

所以这是我的计划:

添加类 - > 这有一个表格和一个表来添加类(第一标准,第二标准,第三标准......等等)

添加主题 -> 这有一个表格和一个表格(数学英语,化学,英语)

添加章节-> 有一个表格和表格,对于这些章节所属的特定主题(一对多关系一个主题很多章节)

添加主题->这有一个表格和表格,对于这些主题所属的特定章节(一对多关系。一章可以有多个主题)

现在我需要添加问题。我有一个问题表单,其中表单具有控件,例如询问哪个课程,哪个主题,哪个章节,哪个主题,哪个级别。

EduationStandardtable的字段

id  standard_name
1   CBSE
2   ICSE
3   Matriculation
4   State board

classDetailstable的字段

id  class_name
1   5th std
2   6th std
3   7th std

SubjectDetails table的字段

id  sub_name
1   english
2   maths
3   physics

ChapterDetails table的字段

id  subject_id      ChapterName
1   1               Matrices
2   1               Integration
3   1               Differentiation
4   3               Electrostatics
5   3               Tranformation
6   3               Electricity

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)

这够了吗?我还能如何优化它。

这里,class和subject是相关的,意味着一个class可以有很多subject,一个subject可以有很多class。

一个主题可以有很多章节,所以是一对多的。一章可以有很多主题,所以一对多。

所以总共有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 种表格来添加这些表格。这是正确的吗?我还能如何减少表格。我认为所有的表都是必需的。但这些是否正确?

标签: mysqldatabaselaraveleloquentdatabase-relations

解决方案


推荐阅读