首页 文章

学费处理的数据库设计

提问于
浏览
4

我需要有关数据库设计的建议 .

我目前正在为一所学校设计DBMS . 在设计了课程和考试表之后,现在我来了费用模块 .

这是我到目前为止所做的 . 我创建了4个表,如下所示:

fee_type
-------------
fee_type_id PRIMARY KEY

fee_type    TYPE OF FEE (MONTHLY, WEEKLY,ANNUAL,ONE TIME)

fees
-------------
fees_id PRIMARY KEY

fee_heading  (eg. TUITION FEE,LAB FEE, HOSTEL FEE,SPORTS FEE)

amount       (CURRENT CHARGE OF THE FEE, could change with time)   

class_id     (GRADE ID, GARDE 4, GARDE 5, GRADE 6)

fee_type    TYPE OF FEE (MONTHLY, WEEKLY,ANNUAL,ONE TIME)

archived     (FEE HEADING ARCHIVED FOR USE)

fee_student
-------------
fee_id     (RELATED fee_id (FK))

student_id (RELATED student_id(FK))

effective_from (DATE FROM WHEN THE FEE APPLIES TO THE STUDENT)

amount  (CHARGE AT THE TIME OF FEE ASSIGNMENT (applicable to particular student))

discount (DISCOUNT HONORED TO STUDENT IF ANY)

status (ACTIVE OR INACTIVE)

transaction
---------------
id PRIMARY KEY

date (date and time when transaction takes place)

fee_id (PAYMENT FOR)

student_id ({TO BE} PAID BY)

amount ( AMOUNT PAID/APPLIED)

description

cr ( yes or no)

dr (yes or no)

remarks

交易表将存储学生的所有付款以及该学生的所有费用 .

我正在考虑根据fee_type存储在交易表中向学生收取的金额 . 这意味着,如果费用是每周类型,则每周一条记录将自动添加到交易表中,金额将被标记为借方(或贷方,无论如何) .

希望它有意义 .

我是在正确的道路上设计数据库吗?

非常感谢您的意见和建议 .

谢谢

比什努

2 回答

  • 0

    您的设计走在正确的轨道上 . 几条评论:

    • fees.fee_type 应该是 fees.fee_type_id - 假设您要使用自然连接命名法 .

    • 而不是 transaction.crtransaction.dr ,您应该为金额的符号 Build 一个约定,并且只有一个金额字段,根据金额在零的哪一边被解释为贷方或借方 . 您当前的设计允许金额为贷方和借方(除非您有禁止此限制的约束) .

    • 您的设计无法容纳的一件事是 "unapplied cash" . 在您当前的设计中,学生的付款必须是特定的 fee_student . 如果学生预付定金,获得奖学金或只是为多项费用(学费,实验室,体育)写一张支票怎么办?在当前模型中,您不会跟踪单个(或未应用)付款 . 您应该有一个接受学生付款的交易表,然后使用交叉表(您当前的 transaction 表)将付款应用于特定费用 . 这使您可以获得未付余额和未应用的金额 - 这两种金额在现实世界的应付账款申请中都很常见 .

  • 0

    我认为您还应该在fee_student中添加截止日期列 .

    如果学校有1万名学生,您将如何为所有学生添加付费信息?

相关问题