資料表物理設計精彩講解

2021-08-15 09:47:05 字數 2047 閱讀 6279

物理設計

定義資料庫、表及字段的命名規範

1、命名遵守可讀性

2、表意性原則

3、長名原則

選擇合適的儲存引擎

通常情況下,請選用innodb做為儲存引擎。

innodb主鍵需要考慮:

(1)主鍵應盡可能的小—提公升索引效率

(2)主鍵應該是順序增長得—增加資料的插入效率,減少隨機io生成。

(3)innodb的主鍵和業務主鍵可以不同

表中的字段選擇合適的資料型別

當乙個列可以選擇多種資料型別時,應該優先數字型別,其次是日期或二進位制型別,最後是字元型別。對於相同級別的資料型別,應該優先選擇占用空間小的資料型別

——–>如何選擇正確的整數型別

值得提下,有的程式設計師設定為int為2寬度,以為是只佔2寬度,其實是沒有任何意義的,還是占有4個位元組

——–>如何選擇正確的實數型別

若是財務則需要非常精確的型別decimal,其他考慮使用float和double型別

如何選擇varchar和char型別

1、varchar用於儲存變長字串,只占用必須的儲存空間

2、列的最大長度小於255則占用乙個額外位元組用於記錄字串長度

3、列的最大長度大於255則要占用兩個額外位元組用於記錄字串長度

varchar長度的選擇

1、使用最小的符合需求的長度

2、盡量避免在正式環境下修改長度,因為會引起鎖表,對業務影響會很大。

varchar適用場景

1、字元列的最大長度比平均長度大很多

2、字串列很少被更新

3、使用了多位元組字元儲存字串

char特點

1、char型別是定長

2、字串儲存在char型別的列中會刪除末尾的空格

3、char型別最大寬度為255

char場景

儲存的長度近似(md5、身份證)

適合短字串(男\女–char(1)比vchar好,在utf8為例,char需要3個位元組,而vchar則需要4個位元組)

經常更新的字串(減少儲存碎片)

如何選擇儲存日期資料

mysql5.7以後會有如下兩個型別:date型別和time型別; 儲存使用者生日時,只需要儲存日期部分選擇date。

使用date型別優點據

1、占用位元組數比使用字串、datetime、int儲存要少,使用date型別只需要3個位元組

2、使用date型別還可以利用日期時間函式進行日期之間的計算

time用於儲存時間資料,格式為hh:mm:ss

儲存日期時間資料主要事項

1、千萬不要使用字串型別來儲存日期時間

日期時間型別通常比字串占用的空間小,日期時間型別在進行查詢過濾時可以利用日期來進行對比

日期時間型別還有豐富的處理函式,可以方便進行日期計算。

2、使用int儲存日期時間不如使用timestamp型別(時間戳儲存),timestamp比int資源占用更少。

datatime型別

兩部分組成 日期和時間,該型別與時區無關,占用8個位元組儲存。

timestamp

儲存的是時間戳,以yyyy-mm-dd hh:mm:ss顯示 占用4個位元組,timestamp依賴指定的時區,在行的資料修改時可以自動修改timestamp的值

資料表設計

在進行完了資料調研 需求分析 技術實現方案,進行資料設計。資料設計,往往包含兩個環節 在本專案中,我們所有的資料設計環節,只會涉及第二個,不會涉及第乙個。因為我們為了突出課程重點,也就是spark。所以主要還是集中在spark上面,就不要花時間去做hive etl了。設計mysql中的業務表的結構。...

資料表設計

資料表設計 三大正規化 第一正規化 列的原子性,每一列是不可再拆分的 若是還要查詢省份或地區,則該錶有誤,不滿足第一正規化,則應 第二正規化 表裡面的每一列都應與主鍵有關 範例 品種列亂入不和主鍵有關係,不滿足第二正規化 科考,人員代號和科目代號為聯合主鍵,姓名雖與人員代號有關,但在成績表出來前人的...

quartz設計資料表

qrtz calendars 以 blob 型別儲存 quartz 的 calendar 資訊 qrtz cron triggers 儲存 cron trigger,包括 cron 表示式和時區資訊 qrtz fired triggers 儲存與已觸發的 trigger 相關的狀態資訊,以及相聯 j...