Database design 学费处理数据库设计

Database design 学费处理数据库设计,database-design,relational-database,rdbms,database-schema,Database Design,Relational Database,Rdbms,Database Schema,我需要关于数据库设计的建议 我目前正在为一所学校设计一个数据库管理系统。在设计了课程和考试表之后,现在我来到了费用模块 以下是我迄今为止所做的工作。 我创建了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 (

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

我目前正在为一所学校设计一个数据库管理系统。在设计了课程和考试表之后,现在我来到了费用模块

以下是我迄今为止所做的工作。 我创建了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
交易表将存储学生的所有付款以及为该学生收取的所有金额

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

希望它有意义

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

非常感谢您的意见和建议

多谢各位


比什努

你的设计是正确的。有几点意见:

  • fees.fee\u type
    可能应该是
    fees.fee\u type\u id
    ——假设您想使用自然连接术语

  • transaction.cr
    transaction.dr
    不同,您应该为金额的符号建立一个约定,并且只需要一个金额字段,该字段根据金额在零的哪一侧解释为贷记或借记。您当前的设计允许金额同时为贷记和借记(除非您有一个禁止这样做的限制)

  • 您的设计无法容纳的一件事是“未使用的现金”。在您当前的设计中,学生的付款必须针对特定的
    费用\u学生
    。如果学生预付定金,获得奖学金,或者只是开一张支票支付多项费用(学费、实验费、体育费),该怎么办?在当前模型中,您不会跟踪单个(或未应用的)付款。您应该有一个接受学生付款的交易表,然后使用交叉表(您当前的
    交易
    表)将付款应用于特定费用。这允许您拥有未付余额和未使用的金额,这两种情况在现实世界的应付账款应用程序中都很常见


我认为您还应该在学费表中添加学费到期日一栏


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

非常感谢阅读此帖子。我只是想问一下对设计的意见,如果设计是正确的,可以做些什么使设计更好。我将更新这个问题。嗨@BishnuPaudel,我也在做同一个项目,你能给我一个你为学生费用管理设计的数据库吗。这是我谦虚的请求。我在同一个项目上。请分享您的设计谢谢Joel的清晰解释。我真的很喜欢有一个单独的表格来记录学生的付款。我要试一试。关于奖学金,我正在考虑为奖学金设立一个单独的表格,用于存储奖学金的详细信息。收到奖学金后,fee_学生表中的折扣栏将更新,以保留该学生收到的折扣百分比。听起来怎么样?CHEERS@BishnuPaudel-最好有一张奖学金桌。如果您的奖学金是作为学费折扣发放的,那么使用
fee\u student.discount
列是一个好主意。如果你有时有现金奖励,那么你可以像付款一样进行。你能告诉我数据库的设计,并详细说明未申请的现金和交集表吗。我不明白it@Sras你可以问一些关于堆栈溢出的问题,在那里你可以从许多知识渊博的人那里得到帮助。你说向10000名学生添加付费信息是什么意思