資料庫中動態列的幾種設計思路

2021-10-10 04:56:09 字數 1084 閱讀 8171

在需求開發的時候,可能會碰到一種場景,在需求中,涉及的某具體業務中,屬性是動態的,在條件允許的情況下,可以使用窮舉法對所有可能情況進行屬性分析,然後進行分類,最終可以形成一套可以解決的方案。這通常是理想情況,leader和客戶通常不會給這個時間。下面簡單說明一下,這種需求的一般解決方案。

一、使用資料庫ddl進行動態建立。

優點, 1:使用簡單,sql管理即可實現。

缺點,顯而易見,

1:不同情況都會動態增加字段,表容易**

2:在已存在資料的表中修改字段,容易鎖表,影響效能。

二、使用資料庫預留字段。

優點,1:與資料庫無關性,對業務侵入小

缺點,1:擴充套件性差,超越了預留字段還有新字段,怎麼處理?

2:可讀性差,一般預留的字段都是attr1,attr2等字段,影響了字段的可讀性。

3:效能低,為相容絕大多數資料型別,一般預留欄位會採用較長的文字資料型別進行儲存,比較影響資料庫效能。

三、使用資料庫中的json資料型別

優點,1:使用簡單,絕大多數程式語言都支援json操作,方便快捷。

2:對於mysql或者pg資料庫,已原生支援json欄位,可以基於json進行擴充套件查詢。

3、json使用key:value形式儲存資料,可避免字段可讀性差的問題,通過規範命名提高可讀性。

4、擴充套件性高,增加或者刪除某欄位,實現簡單,直接移除key即可,不涉及表效能。

缺點,1:json欄位查詢操作,與普通欄位稍有差異,有一定複雜度。

2:json欄位的索引效能有待提高。

四、使用nosql

優點,1:採用mongodb等json資料庫,可以快速擴充套件。

2:專業資料儲存,查詢等效能可針對優化,效能高

缺點,1:需要一定學習成本。

綜上,第一種和第二種,無非必要,強烈不建議採用這種方案。第三種方案在中小專案中能應對絕大多數需求,如果儲存的資料比較多,同時效能要求比較高,可以採用第四種或者

三、四兩種相結合。

您的專案中,會採用什麼辦法來解決這種需求呢?歡迎關注交流。

關聯式資料庫中的幾種設計正規化

第一正規化 1nf 資料庫表中的字段都是單一屬性的,不可再分。這個單一屬性由基本型別構成,包括整型 實數 字元型 邏輯型 日期型等。定義 如果乙個關係模式r的所有屬性都是不可分的基本資料項,則r屬於1nf。例如,下面的資料庫表是符合第一正規化的 欄位1 欄位2 欄位3 欄位4 而這樣的資料庫表是不符...

防止資料庫操作出錯的幾種思路

如 積分發放 1 扣除發放者積分 2 增加接受者積分 可能存在問題是步驟1執行後,由於某種原因導致步驟2沒有執行。一般有以下幾種方法 1 軟處理 先假設扣除積分 設定乙個狀態 等確定增加接受者積分後,再根據狀態扣除積分。2 根據操作重要性排序優先處理 優先保證重要性的操作先完成,確定完成後再執行下一...

資料庫表設計 基本思路

好的資料結構會影響速度。好的資料庫表設計會影響資料庫操作效率。特別是資料多的時候,如果表的結構不好的話操作的時候條件 where後的內容 會變的非常複雜。sql是關聯式資料庫中用到的一種語言。所以,為了簡化sql,表的關係 內部和外部 要盡量設計的合理。下面有幾個可以參照的步驟 1 找出那個表要描述...