小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

一文看懂數(shù)據(jù)庫設計之邏輯設計,值得收藏

 羅宋湯的味道 2019-10-09

概述

數(shù)據(jù)庫邏輯設計是從事數(shù)據(jù)庫應用設計、開發(fā)、運行維護等各方面工作的一個重要的基礎性工作。根據(jù)不同業(yè)務和應用需求,確定并遵循數(shù)據(jù)庫邏輯設計原則,例如按照第三范式開展邏輯設計,不僅能滿足減少數(shù)據(jù)冗余、保證數(shù)據(jù)一致性和完整性、易擴展性和伸縮性等需求,也是保障系統(tǒng)高性能的一個重要基礎。


一、為什么要邏輯設計?

1、全表掃描案例

從一個案例來看,例如查詢“喜歡語文的所有學生”

--由于%號這里肯定是走了全表掃描select id,name,hobby from student where hobby like '%語文%';

2、原因

select id,name,hobby from student;ID NAME HOBBY---------------------1 小明 語文,數(shù)學2 小紅 英語,語文,數(shù)學3 小林 英語,語文

可以看到如果是這么設計表的話,把學生的愛好都塞在一個字段HOBBY中,那么查詢條件只能寫成like '%語文%'。這里的根本原因是該表設計不符合規(guī)范化設計理論,從而導致了全表掃描。這里我們就可以看出邏輯設計的重要性了。


二、什么是邏輯設計

1、概念總結(jié)

1)將需求轉(zhuǎn)化成數(shù)據(jù)庫的邏輯模型

2)通過ER圖的型式對邏輯模型進行展示

3)同所選用的具體的DBMS系統(tǒng)無關(guān)

2、名詞解釋

關(guān)系:一個關(guān)系對應通常所說的一張表

元組:表中的一行即為一個元組

屬性:表中的一列即為一個屬性,每一個屬性都有一個名稱,稱為屬性名

候選碼:表中的某個屬性組,它可以唯一確定一個元組

主碼:一個關(guān)系有多個候選碼,選定其中一個為主碼

域:屬性的取值范圍

分量:元組中的一個屬性值

3、ER圖例說明

矩形:表示實體集,矩形內(nèi)寫實體集的名字

菱形:表示聯(lián)系集

橢圓:表示實體的屬性

線段:將屬性連接到實體集,或?qū)嶓w集連接到聯(lián)系集

4、數(shù)據(jù)操作異常及數(shù)據(jù)冗余

插入異常:如果某實體隨著另一個實體的存在而存在,即缺少某個實體時無法表示這個實體,那么這個表就存在插入異常。

更新異常:如果更改表所對應的某個實體實例的單獨屬性時,需要將多行更新,那么就說這個表存在更新異常。

刪除異常:如果刪除表的某一行來反映某實體實例,失效時導致另一個不同實體實例信息丟失,那么這個表中就存在刪除異常。

注意:若一個表中存在插入異常,那它肯定存在刪除異常和更新異常。

數(shù)據(jù)冗余:是指相同的數(shù)據(jù)在多個地方存在,或者說表中的某個列可以由其他列計算得到,這樣就說表中存在數(shù)據(jù)冗余。


三、什么是規(guī)范化設計

1、第一范式(所有屬性必須是單值)

定義:數(shù)據(jù)庫表中的所有字段都是單一屬性,不可再分的。這個單一屬性是由基本的數(shù)據(jù)類型所構(gòu)成的,如整數(shù),浮點數(shù),字符串等,換句話說,第一范式要求數(shù)據(jù)庫中的表都是二維表。(二維表就是由行和列組成的表)


2、第二范式(所有屬性必須依賴于該實體的唯一標識屬性)

定義:數(shù)據(jù)庫的表中不存在非關(guān)鍵字段對任一候選關(guān)鍵字段的部分函數(shù)依賴。部分函數(shù)依賴是指存在著組合關(guān)鍵字中的某一關(guān)鍵字決定非關(guān)鍵字的情況。

換句話說:所有單關(guān)鍵字的表都符合第二范式。

一文看懂數(shù)據(jù)庫設計之邏輯設計,值得收藏

修改后的:

一文看懂數(shù)據(jù)庫設計之邏輯設計,值得收藏

通俗解釋:

完全依賴:表中只有一個關(guān)鍵字(即主鍵),其他屬性的增刪改查的時候定位到這一行都是依賴此關(guān)鍵字的。

第二范式:只能有一個主鍵,不能有復合主鍵,可以就滿足了第二范式。

由于供應商和商品之間是多對多的關(guān)系,所以只有使用商品名稱和供應商名稱才可以唯一標識出一件商品,也就是商品名稱和供應商名稱是一組組合關(guān)鍵字。

上表中存在以下的部分函數(shù)依賴關(guān)系

(商品名稱)—>(價格,描述,重量,商品有效期)(供應商名稱)—>(供應商電話)

3、第三范式(沒有一個非唯一標識屬性依賴于另一個非唯一標識屬性)

定義:第三范式是在第二范式的基礎上定義的,如果數(shù)據(jù)表中不存在非關(guān)鍵字段,對任意候選關(guān)鍵字段的傳遞函數(shù)依賴則符合第三范式。

一文看懂數(shù)據(jù)庫設計之邏輯設計,值得收藏

存在問題:

(分類,分類描述)對于每一個商品都會進行記錄,所以存在數(shù)據(jù)冗余,同時也會存在數(shù)據(jù)deep插入、更新及刪除異常。

一文看懂數(shù)據(jù)庫設計之邏輯設計,值得收藏

4、BC范式

定義:在第三范式的基礎上,數(shù)據(jù)庫表中如果不存在任何字段對任一候選關(guān)鍵字段的傳遞函數(shù)依賴則符合BC范式。也就是說如果是復合關(guān)鍵字,則復合關(guān)鍵字之間也不能存在函數(shù)依賴關(guān)系

一文看懂數(shù)據(jù)庫設計之邏輯設計,值得收藏

存在下列關(guān)系因此不符合BCNF要求:

(供應商)—>(供應商聯(lián)系人)(供應商聯(lián)系人)—>(供應商)

并且存在數(shù)據(jù)操作異常及數(shù)據(jù)冗余

一文看懂數(shù)據(jù)庫設計之邏輯設計,值得收藏

總結(jié)

第一,二,三范式解決的是非主屬性的關(guān)系。BC 范式解決的是主屬性的關(guān)系;

第一范式:就是原子性,字段不可再分割,(列屬性不能在細分為子列)

第二范式:就是完全依賴,沒有部分依賴;(非主屬性不能依賴于主鍵的一部分,要完全依賴于主鍵(主鍵是復合鍵))

第三范式:沒有傳遞函數(shù)依賴。(非主屬性之間的依賴)

BC范式: 解決部分主鍵依賴于非主鍵部分(復合關(guān)鍵字之間也不能存在函數(shù)依賴關(guān)系)。

覺得有用的朋友多幫忙轉(zhuǎn)發(fā)哦!后面會分享更多devops和DBA方面的內(nèi)容,感興趣的朋友可以關(guān)注下~

一文看懂數(shù)據(jù)庫設計之邏輯設計,值得收藏

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多