2012-02-03 10 views
0

私は学生管理システムを作成しています。私は3つのテーブル、学生、手数料、student_feeを持っています。料金表には手数料が含まれ、student_feeにはstudent.studentidとfee.feeid学生が料金を支払うたびにstudentid、feeid、およびpaid_dateがstudent_feeテーブルに挿入されます。手数料は翌年に増額することができます。どうすれば払い戻し手数料の古い記録を失うことなく、アカウントに問題を生じさせることができますかMySQLで古い料金を失うことなく

+0

この質問とそのタイトルを書き換えてください。あなたが直面している問題は何であり、何が望ましい結果であるかは明確ではありません。 – gioele

答えて

2

の代わりに別途全体の履歴テーブルをやって、ちょうど支払額ためstudent_fee_paidテーブルにカラムを追加...あなたはまだ学生の全体の歴史のために直接それから問い合わせることができますそして、それは元...全て一つに歴史的価値を持つことになります。

そうでない場合は
Student Fee_ID DatePaid FeeAmount 
X   1  1/1/2009 $25 
X   1  1/1/2010 $25 
X   1  1/1/2011 $30 
X   1  1/1/2012 $35 

あなたは30種類の手数料を持っている場合は、それだけで...大きなタスクに成長し、そして料金体系の量は、いくつかのために変わりますが、すべてではありません。それから何が...あなたは、現在の料金金額が何であっても、あなたの「料金」テーブルを維持することができますが、その金額を即座に捺印することができます。レートが年中に変わった場合でも、もう1つのトラブル/履歴の考慮事項...そうでなければ最小限のデータストレージ量が心配しないでください。

+0

これは良いアイデアです、+1 – AndyMcKenna

+0

ありがとう、解決済み – Kold

1

料金支払いテーブルの履歴を作成します。 StudentID、FeeID、DatePaid、AmountPaid

またはEffective Feeテーブルの日付。

+0

効果的な料金表:詳細を教えてください... – Kold

+0

料金の有効日を設定する方法についてもっと詳しく説明できますか?私はどちらがより良いアプローチかこれに関するチュートリアルのリンクになるか知りたいです – Kold

+0

それはあなたが費用にEffectiveDate列を追加することです。手数料を変更するたびに、テーブルを更新することはありません。新しい手数料と有効期限の新しいレコードを挿入するだけです。その後、ある日に料金がどのようになったのかを確認したい場合は、問題の日付よりも早い有効日付のレコードを取得するだけです。それはその用途を持っていますが、おそらくあなたにとって最高のものではありません。 – AndyMcKenna

関連する問題