2

我需要关于数据库设计的建议。学费处理数据库设计

我目前正在设计一个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在事务表向学生收取金额。这意味着,如果费用属于每周类型,则每周一笔记录将自动添加到交易表中,并将金额标记为借记(或贷记,无论如何)。

希望它是有道理的。

我正在设计数据库的正确路径吗?

您的意见和建议将不胜感激。

谢谢

比什努

+0

非常感谢您阅读这篇文章。如果设计是正确的,我只是要求对设计发表评论,并且可以做些什么来使设计更好。我要更新这个问题。 – 2012-04-16 05:43:17

+0

嗨@BishnuPaudel,我也在一个项目上工作,你能否给我提供一个你为学生管理设计的数据库。这是我谦卑的要求。 – 2015-09-19 19:17:09

回答

0

你的设计是正确的轨道上。一对夫妇的意见:

  • fees.fee_type大概应该是fees.fee_type_id - 假设你想使用自然连接命名。

  • 代替transaction.crtransaction.dr你应该建立在量的符号惯例,只是有这是基于其零侧面解释为信用卡或借记单量场量上。您目前的设计允许一定数量的信用卡和借记卡(除非您有一个限制禁止这一点)。

  • 您的设计不适应的一件事是“未应用现金”。在您目前的设计中,学生的付款必须是针对特定的fee_student。如果学生进行预付定金,获得奖学金,或者只是为多种费用(学费,实验室,体育)写一张支票,该怎么办?在您当前的模型中,您不会跟踪该单一(或未应用)付款。您应该有一个交易表,接受来自学生的付款,然后使用交汇表(您当前的transaction表)将付款应用于特定费用。这使您可以拥有未付余额和未付款金额 - 两者在实际应付账款应用程序中都很常见。

+0

非常感谢Joel的解释。我真的很喜欢有一个单独的表来记录学生付款的想法。我会给它一个镜头。关于奖学金,我正在考虑设立一个单独的奖学金表格来存储有关奖学金的细节。在收到奖学金后,fee_student表中的折扣栏将更新,以保持该学生收到的折扣百分比。它听起来如何? CHEERS – 2012-04-16 23:06:11

+0

@BishnuPaudel - 拥有奖学金表是一件好事。如果您的奖学金被授予折扣费用,那么使用'fee_student.discount'栏是一个好主意。如果你有时有现金奖励,那么你可以做类似于付款。 – 2012-04-17 01:44:07

0

我想你还应该在fee_student中加入到期日费用栏。

如果学校有10000学生,你将如何添加支付信息,面向全体学生????