更新時間:2021-01-27 17:39:14 來源:動力節點 瀏覽1243次
MySQL是一種關系型數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。歸根結底,我們主要還是和MySQL表打交道的,MySQL表結構設計也就顯得尤為重要了。
1.選擇合適的存儲引擎
在表結構設計中,首先我們就要選擇一個合適的存儲引擎,我們在之前的文章《談談MySQL存儲引擎》就簡述了每個存儲引擎的區別,在選擇存儲引擎時,我們應該根據自己的業務場景來選型存儲引擎,如:需要OLTP(在線事務處理)的應用,就應該選擇InnoDB存儲引擎,如果僅僅用作存儲數據,允許數據不一致,數據倉庫等場景時,可用MyISAM存儲引擎,如果你不知道如何選擇,那么使用InnoDB存儲引擎就對了。
2.選擇合適的字符集 這里之前也說過一次了,主要是為了保存emoji表情,例如: 微信昵稱,就有很多帶有emoji表情的,這里我們使用utf8mb4字符集,千萬不要使用blob類型來存儲。
3.選擇合適的數據類型
這里指的是數據列的數據類型,在選擇合適的數據類型時,我們應滿足以下條件:
盡量選擇小,簡單的數據類型。
保持可讀性。
盡量避免Null
我們盡可能選擇小的數據類型,這樣會有很多好處,比如服務端處理效率,傳輸等都會快些。這里給出幾個常見的數據類型設計:
狀態類型用 tinyint,例如 性別等。
時間日期使用datetime,timesamp類型,我比較喜歡使用datetime類型,(可讀性高些)。
盡量不要使用text和blob數據類型,特別是blob。
4.添加合適的索引
建議在創建時間上都加上索引,索引提供指向存儲在表的指定列中的數據值的指針,然后根據您指定的排序順序對這些指針排序。數據庫使用索引以找到特定值,然后順指針找到包含該值的行。這樣可以使對應于表的SQL語句執行得更快,可快速訪問數據庫表中的特定信息。
5.添加注釋
添加注釋,這是非常重要的,其中包括表注釋,字段注釋。主要是為了后期表結構的維護,我相信你對著數據表中那么多字段,如果沒有注釋的話,你是很難一下子明白是什么意思的,即使你是該表結構的設計者,十天半個月過去后,你還記得嗎?
6.設計邏輯刪除
這個字段主要用作業務上的邏輯刪除,在現在數據為金的時代,數據不建議做物理刪除。原因有以下幾點:
可恢復,物理刪除一旦刪除,即不可恢復。
邏輯刪除數據可用數據分析等。
例如:
deleted tinyint not null default 1;
7.使用外鍵約束
外鍵約束用來保證數據完整性的,這一點我很贊同,但是我不建議在數據庫表中加外鍵約束,因為在數據表中添加外鍵約束,會影響性能,例如: 每一次修改數據時,都要在另外的一張表中執行查詢。我的建議是:在應用層,也就是代碼層面,來維持外鍵關系。
以上就是我們對MySQL表結構設計的解析,我們在使用MySQL數據庫創建表時,一定要做好表結構的設計工作,設計出結構嚴謹邏輯順暢的表,也能夠使MySQL對表中數據的處理更加迅速,準確。在本站的MySQL教程中,有對MySQL表的各種介紹,在看完之后,相信我們對MySQL表結構設計會有更深的理解。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習