我正在写一个控制学校的程序。 它更像是会员订阅模式。 学生申请课程,并且必须按月收取费用,其余时间由学校日历定义。
根据每个案例,某些特定学生可以减少题词或月费。 学生订阅课程后,将是经常性付款, 学生可以支付部分款项。 此外,学生可以退出,永远不会回来。
我带来了类似桌子的东西:
STUDENT
+id
+name
COURSE
+id
+name
+inscription_fee
+monthly_fee
SCHEDULED_PAYMENTS
+id
+student_id
+description
+amount
-LEDGER
+id
+student_id
+course_id
+amount
但是当我想知道学生已经支付了什么,每月的费用到期等等时,我最终得到了长时间复杂的查询。
所以我问,这是设计付款数据库的正确方法吗?还是有更好的方法?
答案 0 :(得分:0)
我认为你所需要的只是你的学生表和你的课程表,然后在两者之间用一个链接表来显示哪个学生正在学习哪门课程
学生 + id,+ name
场 + id,+ name,+ fee,+ monthly_fee
Student_course + student_id数据 + COURSE_ID
然后
select *
FROM student
JOIN student_course on student.id = student_course.student_id
JOIN course on course.id = student_course.coruse_id
where student.name = ?
然后,您每个班级都有月费和费用
答案 1 :(得分:-1)
我将分类帐和预定付款设为1个表格。付款到期时添加,如果付款,则将其标记为已付款。但正如@Marrgall指出的那样,确实没有正确的方法可以做到这一点,并且你在现场找到了很多长时间复杂的查询。所以你也可以习惯它。