[英]How to design application settings table in database
我想要創建數據庫表,我可以在其中存儲應用程序設置。 兩種表格設計哪個更好:
兩者中哪一個更適合存儲應用程序設置?
最好的祝願
使用第二種方法。 顯然,它具有更大的可擴展性。 當您需要添加更多選項時,您將不需要添加其他列。
如果這些選項非常有限且固定,並且都具有不同的數據類型,那么我只會提倡第一種方法。 這是兩者之間差異很大的區域-如果您將數字和字符列混合在一起,那么第二個選項實際上別無選擇,只能將它們全部存儲為VARCHAR
。 但是,對於行數非常有限並且不受大量INSERT
和UPDATE
約束的設置表,這可能不是一個大問題。
您不希望將第二種方法用於需要高度可訪問性的常規表(不存儲大多數靜態應用程序設置),或者將其用於計算(例如,您經常需要使用類型轉換值來對其進行操作)。
對於不經常訪問或修改的靜態數據,第二種方法效果很好。
這實際上取決於這些值的更改頻率以及這些類型的更改程度:
例如,如果您具有多種類型的有限數量的設置,則水平布局會更好,因為您可以指定每種類型。 但是每次您要添加一個新表時,都需要更改表。
相反,如果您有許多不同的類型,並且人們對設置有許多不同的安排,也許您甚至知道將來還會有新的設置,那么第二個列表會更好。 但麻煩的是,您將對每個值都使用varchar(nnn)類型,因此數據庫無法為您提供很多幫助。
選項 1 是“更好”,直到有很多設置(即:幾十個、數百個)。 如果有“很多設置”,可能有更好的方法 model 它們。
舉個例子,也許這些信息甚至不屬於這個系統,可以被推送到它自己的獨立系統,該系統為所有應用程序管理這種數據。
再舉一個例子,也許其中一些設置實際上可能與您系統中的其他東西有關,甚至可能是您尚未引入的概念; IE:也許該數據因季節或公司而異,您還沒有考慮過 model 這些類型。
我會在真正需要的情況下保留選項 2(即:您有數千個值要寫入)。 是的,它非常靈活,但它也失去了很多語義,並且總體上是你的數據 model 的失敗。(它實際上是數據庫和/或 ORM 使用的退化,應該非常謹慎地選擇。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.