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に従ってトランザクションテーブルに保存することを考えています。つまり、料金がWEEKLYタイプの場合、週に1つのレコードがトランザクションテーブルに自動的に追加され、金額は借方(または貸方など)としてマークされます。

それが理にかなっていることを願っています。

私はデータベースを設計する正しい道を進んでいますか?

あなたのコメントや提案は大歓迎です。

ありがとうございました

ビシュヌ

4

2 に答える 2

1

あなたのデザインは正しい方向に進んでいます。コメントのカップル:

  • fees.fee_typefees.fee_type_id自然な結合の命名法を使用したい場合は、おそらく次のようになります。

  • 代わりに、金額の符号の規則を確立し、金額がゼロのどちら側にあるかに基づいて貸方または借方として解釈される単一の金額フィールドを用意する必要がtransaction.crあります。transaction.dr現在の設計では、金額を貸方と借方の両方にすることができます(これを禁止する制約がない限り)。

  • あなたのデザインが受け入れられないものの1つは、「未適用の現金」です。現在の設計では、学生からの支払いは特定のに対して行われる必要がありますfee_student。学生が前金を預けたり、奨学金を受け取ったり、複数の料金(授業料、ラボ、スポーツ)について1つの小切手を書くだけの場合はどうなりますか?現在のモデルでは、その単一の(または適用されていない)支払いを追跡しません。学生からの支払いを受け入れるトランザクションテーブルが必要です。次に、交差テーブル(現在のtransactionテーブル)を使用して、特定の料金に支払いを適用します。これにより、未払いの残高と未適用の金額を設定できます。どちらも、実際の買掛金アプリケーションでは一般的です。

于 2012-04-16T12:35:49.050 に答える
0

また、fee_studentに料金の期日の列を追加する必要があると思います。

学校に1万人の生徒がいる場合、すべての生徒の有料情報をどのように追加しますか????

于 2015-08-11T15:05:21.800 に答える