Mysql 業務 表 設計

2021-10-06 04:20:42 字數 1061 閱讀 5269

mysql 表的設計需要從兩個方面進行:

重要性:如果表設計的不好,sql語句再怎麼優化也沒用,主要避免多表join,大資料量用join可能會急劇變慢,因為笛卡爾積的緣故

邏輯設計:

正規化設計:

資料庫設計的第一大正規化:

資料庫設計的第二大正規化:

資料庫設計的第三大正規化:

正規化設計的問題:完全符合正規化規範設計有時候並不能得到良好的sql查詢語句。因為出現的表過多,會出現多 join的情況

正規化設計的優點:

正規化設計的缺點:

反正規化設計:

反正規化化是針對正規化化而言的

所謂反正規化化設計就是為了效能和讀取效率的考慮而適當對資料庫設計正規化的要求進行違反

允許存在少量的冗餘,換句話來說反正規化化設計就是使用空間來換取時間。

優點:

缺點:

總結:不能完全按照正規化化設計,要根據實際業務,適當的進行反正規化化,考慮以後如何使用表。

物理設計

根據所選的關係型資料庫的特點對邏輯模型進行儲存結構的設計。

定義資料庫,表,及字段的命令規範

選擇合適的儲存引擎

讀多寫少 :myisam

寫多讀少(併發量大):innodb

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

當乙個列可以有多種型別時:

優先考慮數字型別

其次是日期,事件型別

最後是字元型別

對於相同級別的資料型別,應該優先選擇占用空間小的資料型別。

浮點型別時:

若與財務有關,優先使用 decimal

列型別儲存空間

是否精確型別

資料是否丟失

float

4個位元組否是

double

8個位元組否是

decimal

每4個位元組存9個數字,小數點佔乙個位元組是否

時間型別:

timestamp 與 datetime區別:

timestamp 和時區有關(4個位元組),datetime無關(5.6之後 5個位元組,之前8個位元組)

學習年限不足,知識過淺,說的不對請見諒。

mysql設計表月份 mysql,表設計

閒著沒事搞了一下,歡迎指教。使用者表 create table usr uid int 11 not null,name char 10 default null,primary key uid engine innodb default charset utf8 吃飯記錄表 create tabl...

mysql表的設計 mysql,表設計

閒著沒事搞了一下,歡迎指教。使用者表 create table usr uid int 11 not null,name char 10 default null,primary key uid engine innodb default charset utf8 吃飯記錄表 create tabl...

mysql豎向表設計 mysql,表設計

閒著沒事搞了一下,歡迎指教。使用者表 create table usr uid int 11 not null,name char 10 default null,primary key uid engine innodb default charset utf8 吃飯記錄表 create tabl...