2012-02-08 47 views
-1

我正在編寫一個程序來控制一所學校。 這更像是一個會員訂閱模式。 學生申請課程,在學校日曆規定的特定時間的剩餘時間內,必須付月費費用。如何設計支付數據庫?

根據每種情況,對於某些特定的學生,可以減少題詞或月費。 一旦學生訂閱課程,這將是一筆經常性付款, 學生可以進行部分付款。 此外,學生可以退出,永遠不會回來。

我來的東西,如表這樣的:

STUDENT 
+id 
+name 

COURSE 
+id 
+name 
+inscription_fee 
+monthly_fee 

SCHEDULED_PAYMENTS 
+id 
+student_id 
+description 
+amount 

-LEDGER 
+id 
+student_id 
+course_id 
+amount 

但我結束了長期複雜的查詢時,我想知道學生所繳納,至極月租費是由於等

所以我問,這是設計支付數據庫的正確方法嗎?或者,還有更好的方法?

+2

有很少,如果有的話,一個「正確的方式」。 – 2012-02-08 18:43:18

+0

有許多正確的方法,但你不能測試這些,所以你的目標應該是,首先,不要做錯誤的方式。 – 2012-02-08 19:27:58

+0

是否存儲計算值,並標記錯誤的方式? – mcanedo 2012-02-08 21:10:35

回答

-1

我會將分類賬和計劃付款作爲1個表。當付款到期時,將其添加,如果已付款,則將其標記爲已付款。但正如@Marrgall所指出的那樣,真的沒有正確的方法去做,而且你會在現場發現很多複雜的查詢。所以你也可以使用它。

+0

標示爲已付款的良好做法,?而不是計算應付金額與已付金額之間的差額? – mcanedo 2012-02-08 21:09:49

+0

那麼當我說標記付費時,我更多地說你會在那裏更新它,而不是在單獨的分類帳中。如果您保留分類帳,我會將其與預定付款關聯起來,以瞭解付款的實施情況,無需將其鏈接到學生和課程,但該課程應按計劃付款進行關聯。 – thenetimp 2012-02-08 21:15:30

0

我認爲,所有你需要的是你的學生表,你的課程表,然後在兩者之間的連接表顯示哪個學生走什麼樣的道路

學生 +號,+名

課程 +號,+姓名+費用+ MONTHLY_FEE

Student_course + student_id數據 + COURSE_ID

然後

select * 
FROM student 
JOIN student_course on student.id = student_course.student_id 
JOIN course on course.id = student_course.coruse_id 
where student.name = ? 

然後你有兩種月費和手續費,每類學生