簡體   English   中英

如何在數據庫中設計應用程序設置表

[英]How to design application settings table in database

我想要創建數據庫表,我可以在其中存儲應用程序設置。 兩種表格設計哪個更好:

  1. 將設置存儲在一列和一行中作為鍵 - 如下所示:

在此處輸入圖像描述

  1. 僅將設置存儲在兩行中 - 如下所示:

在此處輸入圖像描述

兩者中哪一個更適合存儲應用程序設置?

最好的祝願

使用第二種方法。 顯然,它具有更大的可擴展性。 當您需要添加更多選項時,您將不需要添加其他列。

如果這些選項非常有限且固定,並且都具有不同的數據類型,那么我只會提倡第一種方法。 這是兩者之間差異很大的區域-如果您將數字和字符列混合在一起,那么第二個選項實際上別無選擇,只能將它們全部存儲為VARCHAR 但是,對於行數非常有限並且不受大量INSERTUPDATE約束的設置表,這可能不是一個大問題。

您不希望將第二種方法用於需要高度可訪問性的常規表(不存儲大多數靜態應用程序設置),或者將其用於計算(例如,您經常需要使用類型轉換值來對其進行操作)。

對於不經常訪問或修改的靜態數據,第二種方法效果很好。

這實際上取決於這些值的更改頻率以及這些類型的更改程度:

例如,如果您具有多種類型的有限數量的設置,則水平布局會更好,因為您可以指定每種類型。 但是每次您要添加一個新表時,都需要更改表。

相反,如果您有許多不同的類型,並且人們對設置有許多不同的安排,也許您甚至知道將來還會有新的設置,那么第二個列表會更好。 但麻煩的是,您將對每個值都使用varchar(nnn)類型,因此數據庫無法為您提供很多幫助。

選項 1 是“更好”,直到有很多設置(即:幾十個、數百個)。 如果“很多設置”,可能有更好的方法 model 它們。

舉個例子,也許這些信息甚至不屬於這個系統,可以被推送到它自己的獨立系統,該系統為所有應用程序管理這種數據。

再舉一個例子,也許其中一些設置實際上可能與您系統中的其他東西有關,甚至可能是您尚未引入的概念; IE:也許該數據因季節或公司而異,您還沒有考慮過 model 這些類型。

我會在真正需要的情況下保留選項 2(即:您有數千個值要寫入)。 是的,它非常靈活,但它也失去了很多語義,並且總體上是你的數據 model 的失敗。(它實際上是數據庫和/或 ORM 使用的退化,應該非常謹慎地選擇。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM