資料庫建表設計規範

2021-09-03 08:06:40 字數 2123 閱讀 2023

mysql 的字符集支援涉及兩個方面:字符集(character set)和排序方式(collection)

對字符集的支援可以細化到四個層次:伺服器(server)、資料庫(database)、資料表(table)、連線(connection)。

連線mysql 可通過如下命令檢視字符集的詳情:

對資料庫的命名必須遵循如下規則:

(1)為字母、數字、下劃線的組合,盡量避免使用數字。

(2)不得使用關鍵字

(3)字母遵循英文簡稱或簡寫模式

(4)名稱盡量與業務或企業文化相關

對錶名稱的命名必須遵循易懂,簡單,無二義性原則。

(1)為字母或字母與數字的組合,總字元數不得超過64個

(2)禁止使用關鍵字

(3)分割槽表允許使用下劃線

(4)表明遵循駝峰或下劃線命名規則

(5)表名應與業務關聯

對字段的命名必須遵循易懂,簡單的原則

(1)為字母或字母與數字的組合,總字元數不得超過64個

(2)禁止使用關鍵字

(3)字母遵循英文簡稱、簡寫方式

(4)表明遵循駝峰或下劃線命名規則

(5)下劃線方式

(6)引用字段必須採用「被引用表名」+「被引用字段」的格式。

字段型別的選擇遵循能占用乙個位元組絕不占用兩個位元組的原則,因此在設計表結構時需要預估字段值的範圍

(1)整數

對於自增字段,如果記錄經常用做物理刪除或記錄數可能會超過21億個,則必須用bigint,預設使用unsigned型別。

標識狀態、型別、種類時一律用tinyint .依據域範圍合理選擇smallint、mediumint。

(2)小數

float:4位元組單精度浮點數值

double:8位元組雙精度浮點數值

(1)char(n)

佔n個位元組,1<=n<=255,適用於值的範圍較為固定時,例如ip、url、phonenum等

(2)varchar(m)

varchar(m) 佔l個位元組,1<=l<=65535 ,其中最大能儲存n個字元,1<=n<=21845

如果字串列的最大長度比平均長度大很多且更新不頻繁,則建議使用varchar(m)

char(1) 與 varchar(1) 的區別為:雖然它們都只能用來儲存單個字元,但是varchar 要比 char 多占用乙個儲存位置,這主要是因為在使用varchar 資料型別時,會多用乙個位元組來儲存長度資訊

enum 佔1、2個位元組,具體取決於列舉值的數量,最大為65535。

enum適合取值較少,且不經常變更的字段,例如***,state,type等。

text 和 blob 型別都是為儲存較大的資料而設計的字串型別,分別採用字元和二進位制的方式儲存。下面主要介紹幾種不同的型別。

(1)tinyblob、tinytext:允許最大儲存255個字元。

(2)blob 、text:能儲存64000個位元組

(3)mediumblob、mediumtext:限制在16mb內

(4)longblob、longtext:儲存容量可超過4gb

需要注意blob 型別儲存的是二進位制資料,沒有排序規則和字符集,而text 型別有字符集和排序規則。

datetime 佔8個位元組,範圍1001-2023年(和時區無關)

timestamp 佔4個位元組,範圍為2023年1月1日 - 2023年(和時區有關)。如果在多個時區儲存或訪問資料,則會出現不同結果。

(1)第一正規化:屬性原子化,乙個字段不要包含多個屬性

(2)第二正規化:主鍵依賴,可以根據主鍵的唯一性確定其他屬性

(3)第三正規化:屬性不依賴於其他非主屬性

資料庫設計規範

使用明確 統一的標明和列名,例如 school,schoolcourse,courceid。資料表名使用單數而不是複數,例如 studentcourse,而不是studentcourses。資料表名不要使用空格。資料表名不要使用不必要的字首或者字尾,例如使用school,而不是tblschool,或...

資料庫設計規範

csm簡寫會方便很多 就不要用member id,一致性方便大家理解 system.currenttimemillis 進行儲存text查詢是會產生臨時磁碟檔案,效能差進行擷取儲存型別 占用位元組 範圍tinyint 1 128 127 smallint 2 32768 32767 mediumin...

資料庫設計規範

1 基本需求 某學校設計學生教學管理系統。學生實體包括學號 姓名 性別 生日 民族 籍貫 簡歷 登記照,每名學生選擇乙個主修專業,專業包括專業編號和名稱,乙個專業可以屬於 乙個學院,乙個學院可以有若干個專業。學院資訊要儲存學院號 學院名 院長。教學管理還要管理課程表和學生成績。課程表包括課程號 課程...