在數據庫中存儲任何數據(包括演示數據)沒有任何問題。如果它能幫助你產生有效的結果,同時減少代碼,那麼這是一個好習慣。你需要確保的是你不要混合你的表示邏輯和你的數據庫邏輯。
您可以通過將表示層的數據封裝在elementInfo
對象的屬性中(例如)來確保分隔這些問題。
既然是你所談論的CSS類,這演示數據應保持在業務數據分開。因此,雖然可以將演示數據和業務數據存儲在數據庫中,但將它們存儲在同一個表中是不可接受的。
更新重新:評論不,您不應該添加PresentationClassRecord的Id作爲業務對象上的FK。我對下面的db做了一個示例。我打電話給您的業務對象DummyTable
,其餘的遵循規範。最相關的部分是StatusPresentationAssignmentTable
-----------------------------------------------
DummyTable
-----------------------------------------------
Id Name SomeOtherDataField StatusId
PK int varchar int FK int
-----------------------------------------------
StatusTable
-----------------------------------------------
Id Name ModifiedDate
PK int varchar datetime
-----------------------------------------------
PresentationTable
-----------------------------------------------
Id PresentationType Value
PK int varchar
sample data:
43 CssClass prettyBackground
-----------------------------------------------
StatusPresentationAssignmentTable
-----------------------------------------------
StatusId PresentationId
FK int FK int
現在用兩個簡單的加入條款,您能得到的演示數據,它是完全從業務數據分離。您的腳本可以執行諸如檢查虛擬狀態是否具有任何演示文稿分配的操作。如果確實如此,它將查看PresentationType,獲取適當的函數將演示數據應用於演示文稿,然後執行它。 (您需要爲每個PresentationType擁有一個函數,該函數知道如何處理該值 - 可以使用類似function applyPresentationValue(presentationElement, presentationType, presentationValue)
的東西封裝該函數,該函數調用不同的函數applyCssClass(presentationElement, value)
,如果該值爲presentationType == "CssClass"
)。
我把它的 「應用CSS類」 你的意思是應用類_attribute_? ;) – 2011-04-28 17:43:21
公約可以配置嗎?我只需爲狀態表中的每條記錄創建一個「status_」CSS類...只需應用一些標準字符串修改即可刪除不適合CSS類名稱的空格和其他字符。 –
Schwartzie
2011-04-28 17:45:24
你是否想過要添加許多不同的狀態?如果您允許用戶自定義狀態以及它們的外觀,那麼您不會存儲類信息 - 因爲它們不能添加類。您可能正在存儲特定的自定義選項,如背景顏色或字體顏色。通常地位是明確的,不應該有太大的變化。一個簡單的函數,如GetStatusClass(statusValue),返回適當的類應該不會有太大變化。 – Prescott 2011-04-28 17:47:46