mysql - 在线测验考试数据库模式结构表关系使用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 种表格来添加这些表格。这是正确的吗?我还能如何减少表格。我认为所有的表都是必需的。但这些是否正确?
解决方案
推荐阅读
- python - 无法使用 pip 安装任何软件包我收到此错误 ImportError: cannot import name 'appdirs'
- c# - Serialize C# objects to a JSON to a server
- ios - Can I distribute an iOS app over-the-air from an individual account?
- lotus-notes - 从莲花脚本中的收件箱移动后如何删除文档?
- javascript - 使用 JS 确定范围滑块背景宽度
- reactjs - React/TypeScript .map over array not rendering dropdown option
- android - Activity won't start and initilazing Array Adapter syntax doesn't work
- c - Char doesn't show in .dat file in C
- reactjs - Best way to handle loading, success and error in redux
- docker - How to add console app in docker compose?