我在Web應用程序,它取代紙質表格申請的課程創建/修改/刪除工作,我需要幫助的最好的數據庫設計實踐,用於存儲要求項目。數據庫設計,創建/修改/刪除申請表
注意
數據庫僅僅是請求的數據。一旦請求獲得批准,數據必須手動輸入到不同的系統中。 (我們在此沒有控制)
它得到批准之前,申請可能被修改多次,我們需要每個請求
我們需要跟蹤狀態爲每個請求
- 的修訂歷史記錄
有30多個問題,以創建(有多少項目需要修改依賴)課程
有3-30 +問題,修改課程
有5個問題,刪除課程
我的方法1
在這種方法中,我會存儲所有數據,創建/修改/在RequestDetail
表中刪除。由於每個RequestDetail
可以有多個項目,例如CourseMode
(例如在線,面 - 面),有與每個相關聯的RequestDetail
一些表。
下表是一個例子: 當用戶請求創建課程(RequestID:1
),有兩個版本(標題和費用變化),直到它被批准。但對於修改及刪除所有列NULL
。
當用戶請求修改CourseFee(RequestID:2
)時,用戶輸入新的費用和修改原因,創建和刪除的其餘列爲NULL
。
當用戶請求刪除課程時(RequestID:3
),用戶輸入刪除的原因,其餘列爲NULL
。
由於這些數據的目的,更像是一個數據倉庫,這會是簡單,易於處理?但表需要允許幾乎所有領域空值(用於創建,大多數領域都需要)。
我的方法2
在這種方法中,要求修改的處理方式與第一種方法一樣,但創建修訂和刪除單獨的表。但是這種方法看起來多餘而且不乾淨。
個人而言,我更喜歡第一種方法,但什麼是最好的數據庫設計實踐是在這種情況下?有什麼我忽略了,或者我需要小心嗎?
是的,'FormTypeID'是告訴它是哪種類型的請求。如果「FormTypeID」是「刪除」,那麼該行將會有許多空值,因爲大多數字段與刪除課程無關。不要爲「修改原因」和「刪除原因」創建單獨的列。謝謝。 – kabichan 2015-04-02 23:02:25