我正在爲一本雜誌的網絡應用程序工作,該應用程序將允許用戶在線登錄和續訂訂閱。這些訂閱是根據一系列規則進行更新的,我希望得到關於如何設置這些規則的一些想法/建議。如何在數據庫中建模數據和邏輯?
此Web應用程序與具有用戶數據的外部(第三方)系統接口。當用戶登錄時,Web應用程序從第三方系統獲取一串信息,其中包括一個稱爲「訂閱定義ID」的數字,該數字(表面上)表示訂閱者擁有的訂閱類型。這種訂閱類型可能會過期幾年,所以Web應用程序包含一組「訂單規範」(存儲在數據庫中),它由當前訂閱選項以及當前速率等信息組成(因此價格可以是向訂單上的用戶顯示)。
我目前的想法是創建一個預訂定義ID表,該表映射到給定預訂定義ID更新的訂單規範。例如,訂閱定義ID可能表示10年前的1年訂閱,當時價格爲39.99美元;在數據庫中,這將映射到目前的訂單規格,其當前價格爲59.99美元。
這在理論上工作得很好,但像往常一樣,有一個問題。當訂閱定義ID在當天重新建立時,它們並不總是唯一的。具體而言,取決於上下文,一個訂閱定義ID具有非常不同的行爲。此訂閱定義ID用於1年訂閱和1年打折禮品訂閱。因此,鑑於這種訂閱定義ID,許多事情都可能發生:
- 如果它是一個1年訂閱,他會使用更新(當前)1年訂閱。
- 如果這是1年的特價禮品訂購,並且訂戶沒有續訂任何其他訂閱,它將作爲(當前)1年全價禮品訂購續訂。
- 如果這是1年的打折禮品訂閱,訂閱者正在續訂其他訂閱,則它將續訂爲(當前)1年折扣禮品訂閱。
我不知道如何在數據庫中概括這一點,特別是因爲這種併發症只有一個記錄發生。我基本上需要一種方法來模擬上面的邏輯,它也可以用於不是特殊情況的記錄。我總是可以在代碼中做到這一點,但我不願意將所有這些業務邏輯放在代碼本身中(特別是在未來發生問題時,以及其他訂閱定義標識)。
建立數據和邏輯規則組合的最佳方式是什麼?
這基本上我最初的想法,但有一些... *醜陋*該進場,那就是,這種方法複雜的邏輯。 – mipadi 2011-01-27 17:31:38
在我的經驗,*醜陋*邏輯也可以分解成參數(即表),如果以正確的方式看着。這是一個非常大的話題,但在評論中討論太大。我的博客(在我的個人資料中列出)進入了很多。 – 2011-04-13 01:55:04