MySql 資料庫設計

2021-09-29 04:15:21 字數 1473 閱讀 1375

資料庫有六大正規化,其他的沒怎麼接觸,主要是這三大正規化

第一大正規化:1nf

指字段值不可分割,體現了字段的原子性。

第二大正規化:2nf

在第一正規化的基礎上。要求字段需要跟主鍵有一種依賴關係,直接相關

第三大正規化:3nf

在滿足第二正規化的基礎上,多張表有乙個鏈結,也就是我們所說的外來鍵

重點:(正規化等級越高意味著查詢就越複雜,查詢是jion的表也就越多)

反正規化設計就可以不一定遵循正規化

1)我們所說的資料庫優化的本質是什麼?

資料庫優化的本質就是降低資料庫的io操作,

mysql中有**.index**檔案

通過這個index檔案會制定日誌檔案。

資料庫的操作是通過io在磁碟中開闢乙個空間,

在新增的過程中:

insert ——》io——》磁碟。

其中io到磁碟的過程中會用到乙個索引,指定資料會存到哪乙個磁碟的具體某一處空間上(只有新增的時候會使用)

然後查詢的是很難定位到磁碟的某一處位置上的(更新和刪除一樣)

所以,mysql的優化歸根結底就是以下幾點:

1)減少磁碟掃瞄的大小

2)減少資料操作的io

3)減少資料處理的過程

4)減少資料讀取的資料表的大小(很重要:表越大儲存的空間越多)

1)當拿到乙個需求過後需要進行需求分析

2)設計er圖

3)基礎模組分析,業務邏輯圖

4)綜合er圖

5)建立實體表

比如說要實現這麼乙個功能

1)使用者登入註冊,

2)發表文章

1)**專案的執行

2)當資料庫訪問量達到某一值時所會產生的問題

1)假設我們使用者表的字段有一下這些:

id name age *** phone email password image status author

那麼這些欄位有什麼問題呢?在訪問量不高,資料不多等的情況下沒什麼問題,但是資料量和訪問量高了就會出現一些隱藏問題,比如查詢緩慢等,那麼我們該如何避免呢?

接下來就是重點了

1)、我們都知道,資料庫查詢的東西越多查詢的速度就會越慢,相同的環境下一張欄位少的肯定比字段多的查詢效率高,那麼我們可不可以把以上使用者字段拆分呢?答案是肯定的,但是拆分也是有講究的,在以上使用者表裡,我們常用的就是name password phone image status這幾個字段,通常我們把這幾個字段稱為熱點字段,那麼剩下的字段就是不常用的字段可以分成另乙個表,

2)、我們再來看看文章表,id user_id status context group title,通常是這些字段,我們知道,文章表中的context(內容)這個欄位的內容最多,有些專案這個字段可能是乙個富文字的樣子,那麼我們拆分表的時候可以把這個字段拆出來,這叫單獨提取大字段的方法

簡單的資料庫設計就到這兒了,

mysql 資料庫設計 MySQL 資料庫設計總結

本文由雲 社群發表 規則 1 一般情況可以選擇 myisam 儲存引擎,如果需要事務支援必須使用 innodb 儲存引擎。注意 myisam 儲存引擎 b tree 索引有乙個很大的限制 參與乙個索引的所有欄位的長度之和不能超過 1000 位元組。另外 myisam 資料和索引是分開,而 innod...

mysql考勤資料庫設計 mysql 資料庫設計

正規化 大概有8種正規化,遵循前三個一般資料庫就沒有問題 1 列不能再拆分 比如一列中有姓名,又有性別,就是沒有遵循這一條正規化 order id product id price quantity product name 111 11 123 good pen order id 和 produc...

mysql相簿資料庫設計 mysql資料庫的設計

資料庫的設計有乙個嚴謹的流程,根據流程製作乙個完整的資料庫,可以省去很多的時間,也可以最大程度上與客戶的想法契合。需求分析階段 分析客戶的業務和資料處理需求 概要設計階段 設計資料庫的e r模型圖,確認需求資訊的正確和完整 詳細設計階段 應用三大正規化審核資料庫結構 編寫階段 物理實現資料庫,編碼實...