我想知道人們是如何處理以下情形(這是假設跨越的想法)...最佳實踐檢索「硬」值從關係數據庫
TABLE A (Orders): OrderId, StatusId
等(在狀態表的外鍵)TABLE B (Statuses): StatusId, Name,
等
表B必須存在(IOW,我不能只是創建狀態例如枚舉),因爲訂單狀態列表需要是動態的業務需求和習慣改變,你在y中有方法我們的程序如GetAllOrders()
,GetAllStatuses()
,GetOrderByStatus(int statusId)
等。但是,似乎您不斷需要訪問「硬編碼」狀態。例如,首次創建訂單時,狀態爲「新建」,您需要將其設置爲該狀態,無需用戶干預。也許你有一個GetUnfilledOrders報告,它可以返回所有正在「處理」的訂單,而不需要用戶選擇他們正在查找的狀態,因爲報告的名稱意味着他們想要的。我希望你明白這個主意。
我在這些情況下一直在做的是創建一個設置,如DefaultNewOrderStatus (int)
並將其設置爲我想用於新訂單的狀態的編號或StatusesForUnfilledOrdersReport (int[])
並再次設置要使用的狀態列表。我的想法是,如果我們的狀態「體系結構」發生變化,我可以即時更改這些設置。問題是需要使用的「硬編碼」值的數量似乎增加(也許現在我需要一個默認狀態來設置已完成的訂單,或用於顯示「打開」訂單UI視圖的狀態列表,等等)以及它一起,處理它們的設置數量也是如此。
我非常有興趣知道其他人如何處理這些情況?
首先硬編碼狀態值(作爲枚舉)有什麼問題? – usr
在這種假想的情況下,正如我所指出的,訂單「狀態」需要是「流動的」,以便隨着業務實踐或需求的變化可以對其進行修改。 (也許有人認爲「新訂單」確實應該是「最近收到的」,或者我們需要添加「延期交貨」狀態)。使用硬編碼的枚舉,每次需要更改時都必須重新編譯和部署該程序。 –
@ScottHarris「Hard Values」的標題與「Fluid」相反 – Paparazzi