1、資料庫設計的流程
在資料庫設計的流程上,我們通常根據需求畫出資料的 er 圖。然後在通過 er 圖生成資料庫的建庫指令碼。
er 圖:所謂的 er 圖就是資料庫關係圖。2、為什麼我們使用 er 圖來實現資料庫設計的設計呢?可見即可得,使用 er 圖可以通過圖形的方式展示表與表直接的關係
可以根據設定的資料庫,方便生成不同的資料庫的 sql 建庫指令碼
可以快速的生成資料庫文件
1、資料庫設計的步驟
第一步:標識表的設計
第二步:表字段的設計
第三布:表與表之間的設計
2、標識表的注意事項
表分為實體表以及業務表,但我們通常在標識表時會先標識實體表,再標識業務表。因為業務表一般是用於標識實體表與另乙個實體的多對多的關係的。
實體表:記錄中描述乙個物件的表,就是名詞,例如使用者、商品、訂單等3、標識欄位要符合資料庫三大正規化第一正規化:確保標識的字段的原值性,欄位的概念分得不能再分。如:姓名可以分為姓和名。業務表:就是需求中乙個行為,關注、收藏等(大部分是中間表)
第二正規化:確保標識的字段與表有依賴的關係,在使用者表定義乙個商品**
第三正規化:確保標識的字段與表有直接依賴的關係,使用者表,使用者型別的名稱
關聯式資料庫中的關係必須滿足一定的要求,即滿足不同的正規化。
關聯式資料庫有六種正規化:第一正規化(1nf)、第二正規化(2nf)、第三正規化(3nf)、巴德斯科正規化(bcnf)、第四正規化(4nf)和第五正規化(5nf)。滿足最低要求的正規化是第一正規化(1nf)。在第一正規化的基礎上進一步滿足更多要求的稱為第二正規化(2nf),其餘正規化以次類推。
設計關係型資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫。這些規範被稱作正規化。越高的正規化資料庫的冗餘度就越低。
一般說來,資料庫只需滿足第三正規化(3nf)就行了。
案例:學生的關係模式 student(學生編號 , 學生姓名, 班級編號, 院系, 課程編號 , 成績)
1、第一正規化(無重複的列)
資料庫表的每一列都是不可分割的原子資料項,而不能是集合、陣列、記錄等非原子資料項。如果實體中的某個屬性有多個值時,必須拆分為不同的屬性。
通俗解釋:不能表中套表,要保證資料的原子性。
示例:不滿足第一正規化:學生編號---課程編號
它就不滿足 1nf,因為 和 是集合。
第一正規化:
2、第二正規化(屬性完全依賴於主鍵)
第二正規化(2nf)是在第一正規化(1nf)的基礎上建立起來的,即滿足第二正規化(2nf)必須先滿足第一正規化(1nf)。當存在多個主鍵的時候,才會發生不符合第二正規化的情況。比如有兩個主鍵,不能存在這樣的屬性,它只依賴於其中乙個主鍵,這就是不符合第二正規化。如果存在不符合第二正規化的情況,那麼這個屬性和主關鍵字的這一部分應該分離出來形成乙個新的實體,新實體與原實體之間是一對多的關係。
通俗解釋:任意乙個欄位都只依賴表中的同乙個字段。
示例:
我們發現,對於學生姓名
、學生所屬的班級編號
、院系
,這三個屬性可以直接通過學生編號
來確定,在這裡課程編號
顯得很多餘。也就是,學生姓名、班級編號、院系
對學生編號、課程編號部分函式依賴。
它就不滿足 2nf,我們需要把 student 表進行拆分,可以消除部分依賴。
第二正規化:
3、第三正規化(屬性不能傳遞依賴於主屬性)
第三正規化(3nf)是在第二正規化(2nf)的基礎上建立起來的,即滿足第三正規化(3nf)必須先滿足第二正規化(2nf)。如果某一屬性依賴於其他非主鍵屬性,而其他非主鍵屬性又依賴於主鍵,那麼這個屬性就是間接依賴於主鍵,這被稱作傳遞依賴於主屬性。
通俗理解:一張表最多隻存2層同型別資訊。
示例:
我們發現,對於 student 表,學生編號
可以唯一確定他所在的院系
,但是注意到這中間存在傳遞過程
,即學生編號
唯一確定該學生所對應的班級編號
,班級編號
對應唯一的院系
。我們稱,院系
對學生編號
傳遞函式依賴。
它就不滿足 3nf,我們需要把 student 表繼續進行拆分,可以消除傳遞依賴。
第三正規化:
4、最終的學生關係模式
學生表:
學生-課程表:
班級-學院表:
5、總結
1nf: 欄位是最小的的單元不可再分。
2nf:滿足 1nf,表中的字段必須完全依賴於全部主鍵而非部分主鍵(一般我們都會做到)。
3nf:滿足 2nf,非主鍵外的所有字段必須互不依賴。
資料庫設計 設計資料庫之前
1.考察現有環境 在設計乙個新資料庫時,你不但應該仔細研究業務需求而且還要考察現有的系統。大多數資料庫 專案都不是從頭開始建立的 通常,機構內總會存在用來滿足特定需求的現有系統 可能沒有實 現自動計算 顯然,現有系統並不完美,否則你就不必再建立新系統了。但是對舊系統的研究 可以讓你發現一些可能會忽略...
資料庫設計 設計資料庫之前
1.考察現有環境 在設計乙個新資料庫時,你不但應該仔細研究業務需求而且還要考察現有的系統。大多數資料庫 專案都不是從頭開始建立的 通常,機構內總會存在用來滿足特定需求的現有系統 可能沒有實 現自動計算 顯然,現有系統並不完美,否則你就不必再建立新系統了。但是對舊系統的研究 可以讓你發現一些可能會忽略...
資料庫設計 設計資料庫之前
1.考察現有環境 在設計乙個新資料庫時,你不但應該仔細研究業務需求而且還要考察現有的系統。大多數資料庫 專案都不是從頭開始建立的 通常,機構內總會存在用來滿足特定需求的現有系統 可能沒有實 現自動計算 顯然,現有系統並不完美,否則你就不必再建立新系統了。但是對舊系統的研究 可以讓你發現一些可能會忽略...