Mysql 如何设计付款数据库?

Mysql 如何设计付款数据库?,mysql,database-design,Mysql,Database Design,我正在写一个程序来控制一所学校。 它更像是一个成员订阅模式。 学生申请一门课程,在学校日历规定的特定时间内,必须按月支付题词广告费 根据每个案例,某些特定学生的题字或月费可以降低。 一旦学生订阅了课程,这将是一笔经常性付款, 学生可以支付部分费用。 此外,学生可以退出,再也不会回来 我带来了类似以下表格的东西: STUDENT +id +name COURSE +id +name +inscription_fee +monthly_fee SCHEDULED_PAYMENTS +id +st

我正在写一个程序来控制一所学校。 它更像是一个成员订阅模式。 学生申请一门课程,在学校日历规定的特定时间内,必须按月支付题词广告费

根据每个案例,某些特定学生的题字或月费可以降低。 一旦学生订阅了课程,这将是一笔经常性付款, 学生可以支付部分费用。 此外,学生可以退出,再也不会回来

我带来了类似以下表格的东西:

STUDENT
+id
+name

COURSE
+id
+name
+inscription_fee
+monthly_fee

SCHEDULED_PAYMENTS
+id
+student_id
+description
+amount

-LEDGER
+id
+student_id
+course_id
+amount
但当我想知道一个学生付了多少钱,哪个月的学费到期了,等等的时候,我就遇到了一个漫长而复杂的问题


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

我把分类账和计划付款放在一张表中。付款到期时,将其添加,如果已付款,则将其标记为已付款。但正如@Marrgall所指出的那样,确实没有正确的方法来实现这一点,而且你会在这个领域中发现很多复杂的查询。所以你最好习惯它。

我想你所需要的只是你的学生表和课程表,然后是一个链接表,显示哪个学生正在学习什么课程

学生 +身份证+姓名

课程 +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 = ?