數(shù)據(jù)庫結(jié)構(gòu)優(yōu)化

1.數(shù)據(jù)庫結(jié)構(gòu)優(yōu)化的目的

1.1)減少數(shù)據(jù)冗余

1.2.)盡量避免數(shù)據(jù)維護中出現(xiàn)更新,插入和刪除異常

插入異常:如果表中的某個實體隨著另一個實體而存在

更新異常:如果更改表中的某個實體的單獨屬性時,需要對多行進行更新

刪除異常:如果刪除表中的行會導(dǎo)致其他實體的消失

1.3)節(jié)約數(shù)據(jù)存儲空間

1.4)提高查詢效率


2.數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的步驟

1.需求分析:全面了解產(chǎn)品設(shè)計的存儲需求

2.邏輯設(shè)計:設(shè)計數(shù)據(jù)的邏輯存儲結(jié)構(gòu)(數(shù)據(jù)實體之間的邏輯關(guān)系,解決數(shù)據(jù)冗余和數(shù)據(jù)維護異常)

3.物理設(shè)計:跟據(jù)所使用的數(shù)據(jù)庫特點進行表結(jié)構(gòu)設(shè)計

4.維護優(yōu)化:跟據(jù)實際情況對索引、存儲結(jié)構(gòu)等進行優(yōu)化


3.數(shù)據(jù)庫設(shè)計范式

數(shù)據(jù)庫設(shè)計的第一范式

1.數(shù)據(jù)庫表中的所有字段都只具有單一屬性

2.單一屬性的列是由基本的數(shù)據(jù)類型所構(gòu)成的

3.設(shè)計出來的表都是簡單的二維表

數(shù)據(jù)庫設(shè)計的第二范式

1.要求一個表中只具有一個業(yè)務(wù)主鍵,也就是說符合第二范式的表中不能存在非主鍵列對只對部分主鍵的依賴關(guān)系

數(shù)據(jù)庫設(shè)計的第三范式

指每一個非主屬性既不部分依賴于也不傳遞依賴于業(yè)務(wù)主鍵,也就是在第二范式的基礎(chǔ)上消除了非主屬性對主鍵的傳遞依賴


4.什么叫做反范式化設(shè)計

反范式化是針對范式化而言的,在前面介紹了數(shù)據(jù)庫設(shè)計的范式,所謂的反范式化就是為了性能和讀取效率的考慮而適當(dāng)?shù)膶?shù)據(jù)庫設(shè)計范式的要求進行違反,而允許存在少量的數(shù)據(jù)冗余,換句話來說反范式化就是使用空間來換取時間


5.為表中的字段選擇合適的數(shù)據(jù)類型

當(dāng)一個列可以選擇多種數(shù)據(jù)類型時,應(yīng)該優(yōu)先考慮數(shù)字類型,其次是日期或二進制類型,最后是字符類型。對于相同級別的數(shù)據(jù)類型,應(yīng)該優(yōu)先選擇占

用空間小的數(shù)據(jù)類型



1.如何選擇 VARCHAR和 CHAR 類型

VARCHAR 類型的存儲特點

1.varchar 用于存儲變長字符串,只占用必要的存儲空間

2.列的最大長度小于 255 則只占用一個額外字節(jié)用于記錄字符串長度

3.列的最大長度大于 255 則要占用兩個額外字節(jié)用于記錄字符申長度

VARCHAR 的適用場景

1.字符串列的最大長度比平均長度大很多

2.字符串列很少被更新

3.使用了多字節(jié)字符集存儲字符串

CHAR 類型的存儲特點

1.CHAR 類型是定長的

2.字符串存儲在 CHAR 類型的列中會刪除末尾的空格

3.CHAR 類型的最大寬度為 255


2.如何存儲日期數(shù)據(jù)

DATATIME 類型

以 YYYY-MM-DDHH:MM:SS[ fraction]格式存儲日期時間

datetime= YYYY-MM-DD HH: MM: SS

datetime (6)= YYYY-MM-DD HH: MM: SS fraction

DATATIME 類型與時區(qū)無關(guān),占用8 個字節(jié)的存儲空間

TIMESTAMP 類型

timestamp 類型顯示依賴于所指定的時區(qū)


date 類型的優(yōu)點

1. 占用的字節(jié)數(shù)比使用字符串、 datetime、int 存儲要少,使用 date 類型只需要3 個字節(jié)

2. 使用 Date 類型還可以利用日期時間函數(shù)進行日期之間的計算

存儲日期時間數(shù)據(jù)的注意事項

不要使用字符串類型來存儲日期時間數(shù)據(jù)日期時間類型通常比字符串占用的存儲空間小日期時間類型在進行查找過濾時可以利用日期來進行對比日期時間類型還有著豐富的處理函數(shù),可以方便的對時期類型進行日期計算



如何為 Innodb 選擇主鍵

1.主鍵應(yīng)該盡可能的小? ? ? ? ? ? 2.主鍵應(yīng)該是順序增長的? ? ? ? ? ? ?3.Innodb 的主鍵和業(yè)務(wù)主鍵可以不同

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容