2

データベース設計に関する提案が必要です。学費処理のためのデータベース設計

私は現在、学校のDBMSの設計に取り組んでいます。コースと試験の表を設計した後、今では料金モジュールに来ました。

これまで私が行ってきたのはこれです。

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 

トランザクションテーブルには、学生によってすべての支払いだけでなく、その学生のための課金すべての量を格納します: 私は以下のように説明されている4つのテーブルを作成しました。

私は、fee_typeに従って取引テーブルに学生に課金される金額を保管することを考えています。つまり、手数料がタイプWEEKLYの場合、1週間あたり1レコードが取引テーブルに自動的に追加され、その金額は口座振替(またはクレジット、何でも)としてマークされます。

希望します。

私はデータベースを設計する正しい道にいるのですか?

ご意見やご提案をいただければ幸いです。

+0

ありがとうございました投稿を読むことができます。私は、設計が正しいかどうか、そして設計をより良くするために何ができるかについて、設計に関するコメントを求めています。私は質問を更新するつもりです。 –

+0

こんにちは@BishnuPaudel、私も同じプロジェクトをやっています。学生料金管理のためのデザインを持っているデータベースを教えてください。それは私の謙虚な要求です。 –

答えて

0

あなたのデザインが正しい軌道に乗っているあなた

ビシュヌありがとうございました。コメントのカップル:

  • fees.fee_typeはおそらくfees.fee_type_idする必要があります - あなたは自然に参加命名法を使用したいと仮定します。代わりにtransaction.cr

  • transaction.drあなたは量の符号のための規則を確立し、ちょうど量が上でゼロのどちら側に基づいて、クレジットカードまたはデビットとして解釈される単一の金額フィールドを持つ必要があります。現在の設計では、金額をクレジットとデビットの両方にすることができます(これを禁止する制約がない限り)。

  • あなたのデザインには含まれないものが「未適用現金」です。現在のデザインでは、学生からの支払いは特定のfee_studentでなければなりません。生徒が先進的な入学をした場合、奨学金を受け取った場合、または複数の費用(授業料、ラボ、スポーツ)の小切手を1回書くだけの場合はどうなりますか?現在のモデルでは、その単一(または未適用)の支払いは追跡されません。学生からの支払いを受け入れ、特定の手数料に支払いを適用するために交差テーブル(現在のtransactionテーブル)を使用する取引テーブルが必要です。これにより、未払いの残高と未適用金額を得ることができます。どちらも現実の勘定科目の支払アプリケーションで一般的です。

+0

明確な説明のためにJoelに感謝します。私は本当に学生からの支払いを記録するための別のテーブルを持つという考えが好きでした。私はそれを撃つだろう。奨学金については、奨学金の詳細を保管する奨学金のテーブルを別に用意することを考えています。奨学金を受け取った時点で、fee_studentテーブルの割引欄は、その学生が受け取った割引のパーセンテージを保持するように更新されます。どのように聞こえる? CHEERS –

+0

@ BishnuPaudel - 奨学金のためのテーブルを持っているとよいでしょう。あなたの奨学金が料金の割引として与えられる場合、 'fee_student.discount'カラムを使うことは素晴らしい考えです。あなたは時々現金賞を持っている場合は、お支払いと同様に行うことができます。 –

0

fee_studentに支払期日の列を追加する必要があります。

学校に1万人の学生がいれば、どのようにすべての学生に有料の情報を追加するのですか?

関連する問題