如何设计支付数据库?

时间:2012-02-08 18:41:38

标签: mysql database-design

我正在写一个控制学校的程序。 它更像是会员订阅模式。 学生申请课程,并且必须按月收取费用,其余时间由学校日历定义。

根据每个案例,某些特定学生可以减少题词或月费。 学生订阅课程后,将是经常性付款, 学生可以支付部分款项。 此外,学生可以退出,永远不会回来。

我带来了类似桌子的东西:

STUDENT
+id
+name

COURSE
+id
+name
+inscription_fee
+monthly_fee

SCHEDULED_PAYMENTS
+id
+student_id
+description
+amount

-LEDGER
+id
+student_id
+course_id
+amount

但是当我想知道学生已经支付了什么,每月的费用到期等等时,我最终得到了长时间复杂的查询。

所以我问,这是设计付款数据库的正确方法吗?还是有更好的方法?

2 个答案:

答案 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指出的那样,确实没有正确的方法可以做到这一点,并且你在现场找到了很多长时间复杂的查询。所以你也可以习惯它。