Mysql 如何使用必备数据库创建学生主题
我正在尝试为主题先决条件创建数据库。这是我的当前表 “学生” “主题信息” 这是用于连接的连接表 现在两个 “学生科目” 示例:如果studentID 1235仍然没有使用正在编程1的主题id 1,则用户无法添加正在编程2的主题id 5,因为它是编程1的先决条件Mysql 如何使用必备数据库创建学生主题,mysql,sql,database,vb.net,phpmyadmin,Mysql,Sql,Database,Vb.net,Phpmyadmin,我正在尝试为主题先决条件创建数据库。这是我的当前表 “学生” “主题信息” 这是用于连接的连接表 现在两个 “学生科目” 示例:如果studentID 1235仍然没有使用正在编程1的主题id 1,则用户无法添加正在编程2的主题id 5,因为它是编程1的先决条件 我不知道我的桌子是否正确。如果正确,我如何设计该数据库?我不知道如何将先决条件连接到主题和学生id。非常感谢。首先,您需要使用以下代码(MySQL 8+)递归查找指定主题的所有先决条件(父项): () 然后,通过检查该学生是否拥有从上一
我不知道我的桌子是否正确。如果正确,我如何设计该数据库?我不知道如何将先决条件连接到主题和学生id。非常感谢。首先,您需要使用以下代码(MySQL 8+)递归查找指定主题的所有先决条件(父项): () 然后,通过检查该学生是否拥有从上一次查询中获得的所有科目,您可以决定是否允许用户将科目分配给该学生 更新: 如果以下查询不存在,则可以将主题添加到学生。您可以通过
(如果存在)
或通过以下方式执行:
您的数据结构很好。您只需要根据手头的具体任务进行正确的连接。您的数据结构看起来还不错。您需要做的唯一一件事是,在将记录添加到student_subject表之前,您需要检查必备主题是否存在条目(如果适用)@rohitshetty如果用户b插入该行,而用户a正在检查我在我的帖子中更新我的数据库,会发生什么情况。如果用户试图注册subjectid=5编程2,而subjectid=1编程1仍然未注册。但是如果主体ID=1上的已注册者=1,则用户可以注册主体编程2。我需要使用if语句来获得我想要的陈述吗?非常感谢。我不知道我的问题是否令人困惑。
-----------------------
|studentID | FullName |
-----------------------
|1234 | John |
|1235 | Michael |
|1236 | Bryce |
-----------------------------------------
|subject_id| subject_name | pre_id |
-----------------------------------------
| 1 | Programming 1 | NULL |
| 2 | Networking | NULL |
| 3 | Algorithm | NULL |
| 4 | Physical Educ | NULL |
| 5 | Programming 2 | 1 |
------------------------------------------------
| student_id | subject_id | Grade | Enrolled |
------------------------------------------------
| 1235 | 1 | 0 | 0 |
| 1235 | 2 | 0 | 0 |
| 1235 | 3 | 0 | 0 |
| 1234 | 1 | 0 | 0 |
set @newSubjectToAdd = 5;
with recursive cte (subject_id,subject_name,pre_id) as
(
Select subject_id,subject_name,pre_id
from subject_bsit
where subject_id = @newSubjectToAdd
union all
Select sb.subject_id,sb.subject_name,sb.pre_id
from subject_bsit sb
inner join cte
on sb.subject_id = cte.pre_id
)
Select pre_id from cte
where pre_id is not null
order by subject_id
Select pre_id from cte
where pre_id is not null
and pre_id not in
(select subject_id from student_subject
where student_id = 1235
and enrolled = 1)