1. 程式人生 > >java mysql 訂單表設計

java mysql 訂單表設計

        最近由於系統日益複雜的需求系統中各種型別訂單越來越多,原來的這些訂單表已經不能滿足當下的需求,以可擴充套件為目標打算對這些訂單表進行重構,本文只涉及基礎版的設計,對於高併發、分散式等暫不考慮。

        之前的系統訂單按不同業務有不同的訂單表,比如洗車訂單表、噴漆訂單表、內飾清洗訂單表等。在網上找了一些訂單的設計方案,也跟朋友討論了一下幾個設計方案的情況得出如下幾個結果。

方案一:

保持原來的結構不變,每增加一種新的業務需求,就建立對應的訂單表,然後將所有訂單表合併為一個檢視,查詢的操作都在檢視進行。

利:資料庫不需要大的變動,不會影響現有的程式和資料,穩定性比較好

弊:訂單資料的增刪改比較麻煩,設計系統的時候會比較複雜,也容易出錯。每增加一個業務需求,就需要新增新的訂單表,然後加入到檢視中去,還要開發對應的程式,非常不推薦。

方案二:

既然都是要改,那就不考慮大改還是小改了。分析這幾種訂單,然後將通用的欄位拿出來作為訂單基礎表(比如訂單號、訂單狀態、使用者id、訂單型別、價格、時間等訂單表共有的,訂單的增刪改都在這個表上進行),然後將每個訂單獨有的一些欄位再建立訂單明細表(明細表一般不涉及刪除和修改),明細表分別對應各自的業務需求。

利:訂單資料比較清晰,增刪改只需操作訂單基礎表,系統設計會比較精簡,擴充套件性較高

弊:新增一個業務需求,可能需要新增對應的訂單明細表,程式中也要新增一部分操作。另外可能就是維護這些訂單明細表稍微麻煩點。

方案三:

說到方案三不得不說一下mysql5.7的一個新特性json列,就是mysql可以將一列作為json型別儲存資料。那這樣的話我們可以將方案二中訂單明細表都作為一個json列存入訂單基礎表中,這樣所有的訂單資訊都存在訂單基礎表,一個表就可以完成不同業務的訂單。

利:新增業務需求,訂單表和程式基本不需要什麼太大的變動,不需要維護這些訂單明細表。

弊:首要使用json列必須是mysql5.7以上的版本,然後json列的資料操作起來感覺有點麻煩,不友好,所以json列的資料最好只查詢用。

另外json列可以用字串替換,直接用字串存json列,但是這樣資料操作起來還不如json,只是理論上可行。暫時想到這麼幾種方案,具體使用哪種需要根據自己系統的需求,不要硬套,因為我這些是根據我的系統需求做的,只是提供幾種思路,僅供參考。

相關推薦

java mysql 訂單設計

        最近由於系統日益複雜的需求系統中各種型別訂單越來越多,原來的這些訂單表已經不能滿足當下的需求,以可擴充套件為目標打算對這些訂單表進行重構,本文只涉及基礎版的設計,對於高併發、分散式等暫不考慮。         之前的系統訂單按不同業務有不同的訂單表,比如洗車

mysql訂單如何設計

請各位牛人指教,一個困擾我很久的訂單表設計問題 旅遊電商訂單表設計問題問題描述:網站提供酒店,機票,旅遊線路等等...多種產品的預定。使用者可以同時預定多個產品,怎麼把這麼多不同型別的產品糅合到一個訂單記錄中也就是一個訂單號。??????????????因為這些產品的每個訂單屬性都不一樣。一個訂單

EF Code First MySql 主從設計的一些需要註意的內容

col 可能 出錯 程序包管理器 required upd 數據庫 details l數據庫 假如有下面兩張表 public class Main { public int Id{get;set;} public string Name{get;set}; pub

MySQL高效能設計規範

良好的邏輯設計和物理設計是高效能的基石, 應該根據系統將要執行的查詢語句來設計schema, 這往往需要權衡各種因素。 一、選擇優化的資料型別 MySQL支援的資料型別非常多, 選擇正確的資料型別對於獲得高效能至關重要。 更小的通常更好 更小的資料型別通常更快,

MySQL資料庫設計規範

用盡量少的儲存空間來儲存一個欄位的資料;例如:能使用int就不要使用varchar、char,能用varchar(16)就不要使用varchar(255);預設情況下,InnoDB引擎單一欄位索引的長度最大為767位元組,當使用UTF-8字符集,每一個字元使用3位元組儲存,在text或者varchar型別的欄

Mysql 獲取設計查詢語句

efault rac maximum fault inf dev is_null pan 默認 SELECT COLUMN_NAME 列名, COLUMN_TYPE 數據類型, DATA_TYPE 字段類型, CHARACTER_MAXIMUM_LENGT

mysql資料庫設計和優化

一 mysql資料庫表設計原則 1,資料庫命名原則:英文字母,多個單詞間用下劃線'_',單詞儘量簡潔、見名知意 2,資料庫表命名原則:英文字母,多個單詞間用下劃線'_',單詞儘量簡潔、見名知意 3,資料庫表字段型別:儘量用int型,固定長度用char,使用varchar的

Java開源生鮮電商平臺-訂單設計(源碼可下載)

支付 bsp 後退 們的 ava time 狀態 表的設計 str Java開源生鮮電商平臺-訂單表的設計(源碼可下載) 場景分析說明: 買家(餐館)用戶,通過APP進行選菜,放入購物車,然後下單,最終支付的流程,我們稱為下單過程。 買家可以在張三家買茄子,李四家買蘿蔔,王

Java學習總結(十六)——MySQL數據庫(中)分組,嵌套,連接查詢及外鍵與關系設計

MySQL數據庫 分組查詢 連接查詢 子查詢 外鍵與關系表設計 一.分組查詢 1.語法:group by 分組字段1[,分組字段2,.........] [having 分組後的篩選條件]2.註意:分組字段應該與select後的查詢字段一致,否則查詢結果無意義3.分組查詢經常會與聚合函

轉一篇MYSQL文章《數據庫設計,沒有最好只有最適合》

其他 eqv 新的 fmt 記錄 ces 末尾 base64 過程 http://mp.weixin.qq.com/s/a8klpzM5iam0_JYSw7-U4g 我們在設計數據庫的時候,是否會突破常規,找到最適合自己需求的設計方案,下面來舉個例子: 常用的鄰接表設計

Java Web項目實戰記錄(數據庫設計

borde 信息管理 基本 relation 都是 系統設計 width 進行 方便 又是忙到這個點 雖然累,但是看著自己的項目在一點一點的成長,心裏滿滿的成就感>_< 今天上了一下午的cep(職場社交禮儀規劃課程),是不是職場就像cep老師說的那麽的勾心鬥角呢

基於ExtJs6前臺,SpringMVC-Spring-Mybatis,resteasy,mysql無限極設計,實現樹狀展示數據(treepanel)

public clas -s 分享 rmi time pan stp listen 先從後臺講起 1.表的設計   parent_id就是另外一條記錄的id,無限極表設計可以參考 http://m.blog.csdn.net/Rookie_Or_Veteran/art

MySQL數據庫設計

mys 新建用戶 管理員 接口實現 nbsp 接口 type 類型 pos 一: 設計表: user: ID, PWD, name, type archiveRecord: referdate

MySQL基礎入門學習【9】無限級分類設計

父親 連接 參照物 insert gpo 平板電視 生活電器 type mysql 比如: 圖書/小說、文學.../四大名著、戲曲.../... 理論上可以設計很多張表; 但是隨著分類逐步增多,這些表的數目不可能無限擴展; 所以對於無限級分類表一般我們采用如下形式(通過自身

代寫數據庫設計、代寫SQL語句、代做數據庫項目、代做MySQL數據庫

日期 學分 HR edit 腳本 cat eth 數據庫 業務 代寫數據庫表設計、代寫SQL語句、代做數據庫項目、代做MySQL數據庫一、實訓目的通過綜合實訓進一步鞏固和深化學生的數據庫管理和開發的基本知識和技能,使學生掌握基本的SQL腳本編寫規範、養成良好的數據庫操作習慣

數據庫——訂單中有不同類型的商品,設計

不同 pro 經濟 需求 獨立 商家 當前 部分 區分 具體需求,做一個類似購物平臺,該平臺中有多個商家,提供多種銷售如酒水,虛擬商品(送花),座位預訂等。 現在有兩方面的問題,一個在訂單方面,是將不同的商品放在不同的訂單表中,還是放在同一的一個訂單表中。平臺中有多個商家,

【數據庫】Mysql中主鍵的幾種設計組合的實際應用效果

研究 開始時間 action 設計 int rand 業務主鍵 primary 同時 寫在前面 前前後後忙忙碌碌,度過了新工作的三個月。博客許久未新,似乎對忙碌沒有一點點防備。總結下來三個月不斷的磨礪自己,努力從獨樂樂轉變到眾樂樂,體會到不一樣的是,連辦公

實現類似微信聊天功能的mysql設計

前言: 最近設計了一套聊天功能,此功能支援人對人聊天、傳送圖片、檢視聊天記錄、按時間展示聊天列表、最後一條聊天資料及未讀訊息數 下面分享一下表結構及實現邏輯:   表結構: 1、聊天主表 id(主鍵id) u

java程式碼實現MySQL資料庫千萬條資料去重

  準備工作: 1.資料庫表:datatest5 2.欄位: id 主鍵自增,val 重複值欄位併為val建立索引 3.設定innodb緩衝池大小 show variables like "%_buffer%"; SET GLOBAL innod

java匯出mysql資料的結構生成word文件

使用sql查詢表的結構是比較簡單,其實這裡難就是難在匯出結構到word文件中。。。,使用poi-tl程式碼也簡單 一、首先jdbc工具類,這個不多說了 public class SqlUtils { private static String url = "jdbc:mysql://lo