日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

插入的数据不能时时查询到_数据库原理笔记

發(fā)布時(shí)間:2023/12/15 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 插入的数据不能时时查询到_数据库原理笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自:https://zhuanlan.zhihu.com/c_1236597039825223680

數(shù)據(jù)庫(kù)系統(tǒng)的基本概念

  • 數(shù)據(jù):描述事物的符號(hào)記錄
  • 數(shù)據(jù)庫(kù)(DB):長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi),有組織,可共享的大數(shù)據(jù)集合
  • 數(shù)據(jù)庫(kù)數(shù)據(jù)特性:永久存儲(chǔ),有組織,可共享
  • 數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS):數(shù)據(jù)庫(kù)加一組用以訪問(wèn),更新,管理這些數(shù)據(jù)的程序
  • 數(shù)據(jù)庫(kù)系統(tǒng)(DBS):由DB,DBMS,應(yīng)用程序和數(shù)據(jù)庫(kù)管理員組成的存儲(chǔ),管理,處理和維護(hù)數(shù)據(jù)的系統(tǒng)
  • DBMS的功能:數(shù)據(jù)定義;數(shù)據(jù)組織,存儲(chǔ)和管理;數(shù)據(jù)操縱;數(shù)據(jù)庫(kù)的事務(wù)管理和維護(hù)功能等
  • DBMS的特性:
    • 數(shù)據(jù)訪問(wèn)的高效和可擴(kuò)展性
    • 縮短應(yīng)用開(kāi)發(fā)時(shí)間
    • 數(shù)據(jù)獨(dú)立性
    • 數(shù)據(jù)完整性和安全性
    • 并發(fā)訪問(wèn)和魯棒性
  • 數(shù)據(jù)庫(kù)系統(tǒng)(DBS)的特點(diǎn)
    • 數(shù)據(jù)結(jié)構(gòu)化
    • 數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充
    • 數(shù)據(jù)獨(dú)立性高
    • 數(shù)據(jù)有DBMS統(tǒng)一管理和控制
  • 數(shù)據(jù)庫(kù)與文件處理系統(tǒng)對(duì)比
    • 優(yōu)點(diǎn):文件處理系統(tǒng)由傳統(tǒng)操作系統(tǒng)所支持,數(shù)據(jù)文件可以是不同的格式,數(shù)據(jù)文件是相互獨(dú)立的
    • 缺點(diǎn):數(shù)據(jù)冗余和不一致,數(shù)據(jù)訪問(wèn)困難,數(shù)據(jù)孤立,完整性問(wèn)題,原子性問(wèn)題,并發(fā)訪問(wèn)異常,安全性問(wèn)題
  • 開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng):MySQL,PostgreSQL
  • 數(shù)據(jù)管理技術(shù)發(fā)展:人工管理階段,文件系統(tǒng)階段,數(shù)據(jù)庫(kù)系統(tǒng)階段

數(shù)據(jù)庫(kù)模式及數(shù)據(jù)類(lèi)型

  • 數(shù)據(jù)抽象:物理層,邏輯層(數(shù)據(jù)庫(kù)存儲(chǔ)什么數(shù)據(jù)及其數(shù)據(jù)之間的關(guān)系),視圖層
  • 實(shí)例和模式:類(lèi)似編程語(yǔ)言中的變量和類(lèi)型;模式:數(shù)據(jù)庫(kù)的總體設(shè)計(jì);實(shí)例:特定時(shí)刻存儲(chǔ)在數(shù)據(jù)庫(kù)中的信息的集合

  • 數(shù)據(jù)模型:是對(duì)現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象
注意:數(shù)據(jù)模型是數(shù)據(jù)庫(kù)系統(tǒng)的核心和基礎(chǔ)
  • 兩類(lèi)數(shù)據(jù)模型:
  • 概念(信息)模型:按照用戶的觀點(diǎn)來(lái)對(duì)數(shù)據(jù)和信息建模
  • 邏輯模型:包括層次模型,網(wǎng)狀模型,關(guān)系模型,面向?qū)ο竽P?#xff0c;對(duì)象關(guān)系數(shù)據(jù)模型等,按照計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對(duì)數(shù)據(jù)建模
  • 現(xiàn)實(shí)世界--->信息世界--->機(jī)器世界
  • 概念模型:
    • 基本概念:
      • 實(shí)體
      • 屬性
      • 碼:唯一標(biāo)識(shí)實(shí)體的屬性集
      • 實(shí)體型:不是具體數(shù)據(jù),像c++中的類(lèi)
      • 實(shí)體集
      • 域:屬性的取值范圍
      • 聯(lián)系
    • 概念模型的表示方法:實(shí)體-聯(lián)系方法,用E-R圖來(lái)描述現(xiàn)實(shí)世界的概念模型,也稱(chēng)E-R模型
    • 數(shù)據(jù)模型的組成要素:數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)操作,數(shù)據(jù)的完整性約束條件
  • 層次模型
    • 數(shù)據(jù)結(jié)構(gòu):只有一個(gè)根節(jié)點(diǎn),其余節(jié)點(diǎn)只有一個(gè)雙親結(jié)點(diǎn)
    • 數(shù)據(jù)操縱:查詢,插入,刪除和更新
  • 網(wǎng)狀模型
    • 典型代表:DBTG系統(tǒng)
    • 數(shù)據(jù)結(jié)構(gòu):一個(gè)結(jié)點(diǎn)可以有多余一個(gè)的雙親,允許一個(gè)以上的結(jié)點(diǎn)無(wú)雙親
  • 關(guān)系模型
    • 關(guān)系:一張二維表
    • 元組:表中的一行
    • 屬性:表中的一列
    • 碼:表中的屬性組,可以唯一確定一個(gè)元組
    • 域:具有相同數(shù)據(jù)類(lèi)型的值的集合
    • 關(guān)系模式:關(guān)系名(屬性1,屬性2,......)
    • 注意:不允許表中有表的情況出現(xiàn);所有數(shù)據(jù)結(jié)構(gòu)在數(shù)據(jù)庫(kù)中存儲(chǔ)為二維表
  • 數(shù)據(jù)庫(kù)設(shè)計(jì)步驟:需求分析,概念數(shù)據(jù)庫(kù)設(shè)計(jì),邏輯數(shù)據(jù)庫(kù)設(shè)計(jì),結(jié)構(gòu)優(yōu)化,物理數(shù)據(jù)庫(kù)設(shè)計(jì)和創(chuàng)建并初始化數(shù)據(jù)庫(kù)&安全設(shè)計(jì)

數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)

  • 模式:數(shù)據(jù)庫(kù)中全體數(shù)據(jù)邏輯結(jié)構(gòu)和特征的描述
  • 實(shí)例:模式的一個(gè)具體的值
注意:模式是相對(duì)穩(wěn)定的,實(shí)例是不斷改變的
  • 數(shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu):外模式,模式,內(nèi)模式
  • 外模式:也稱(chēng)子模式或用戶模式,是應(yīng)用程序員和最終用戶使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述
  • 內(nèi)模式:也稱(chēng)存儲(chǔ)模式,是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述
注意:一個(gè)模式可以有幾個(gè)外模式,但只能有一個(gè)內(nèi)模式

關(guān)系數(shù)據(jù)庫(kù)

關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義

  • 關(guān)系模型是建立在集合代數(shù)的基礎(chǔ)上的
  • 域:一組具有相同數(shù)據(jù)類(lèi)型的值的集合
  • 笛卡爾積:是在域上的一種運(yùn)算
  • 關(guān)系:關(guān)系是笛卡爾積的有限子集,是一張二維表,每行對(duì)應(yīng)元組,每列對(duì)應(yīng)屬性
關(guān)系的本質(zhì)就是集合
  • 碼(鍵):如果一個(gè)屬性能夠唯一的標(biāo)志一個(gè)元組,則這個(gè)屬性就是一個(gè)碼
  • 候選碼:如果一個(gè)碼就是最小超碼,將它稱(chēng)為候選碼
  • 主碼:當(dāng)有多個(gè)候選碼時(shí),選定一個(gè)為主碼,由用戶明確定義,通常用下劃線表示
  • 外碼:表B的主鍵出現(xiàn)在了表A中,這個(gè)主鍵稱(chēng)為表A的外碼
  • 參照關(guān)系:表A
  • 被參照關(guān)系(目標(biāo)關(guān)系):表B
參照關(guān)系中的外碼的值在被參照關(guān)系中必須實(shí)際存在或者為空
  • 全碼:關(guān)系模式的所有屬性都是這個(gè)關(guān)系模式的候選碼 53
  • 關(guān)系的三種類(lèi)型:基本關(guān)系,查詢表和視圖表
關(guān)系的每個(gè)分量必須是不可分割的數(shù)據(jù)項(xiàng)
  • 在關(guān)系數(shù)據(jù)庫(kù)中,關(guān)系是型,關(guān)系是值

關(guān)系操作

  • 關(guān)系模型的基本操作:查詢,插入,刪除和修改
  • 關(guān)系數(shù)據(jù)模型操作方式稱(chēng)為一次一集合方式,非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式稱(chēng)為一次一記錄的方式
  • 關(guān)系數(shù)據(jù)語(yǔ)言的分類(lèi):關(guān)系代數(shù)和關(guān)系演算
  • SQL:介于關(guān)系代數(shù)和關(guān)系演算之間的結(jié)構(gòu)化查詢語(yǔ)言,是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言

關(guān)系的完整性

  • 關(guān)系模型的三類(lèi)完整性約束:實(shí)體完整性,參照完整性,用戶定義完整性
  • 實(shí)體完整性
  • 實(shí)體完整性規(guī)則:若屬性A是基本關(guān)系R的主屬性,則A不能取空值
  • 參照完整性
  • 參照關(guān)系和被參照關(guān)系
  • 參照完整性規(guī)則:學(xué)生的專(zhuān)業(yè)號(hào)只能取空值和非空值(必須是已有的某個(gè)專(zhuān)業(yè))
  • 用戶定義完整性
  • 由用戶根據(jù)實(shí)際情況來(lái)加約束條件

關(guān)系代數(shù)

  • 關(guān)系代數(shù):是一種抽象的查詢語(yǔ)言,用對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢
  • 運(yùn)算三要素:運(yùn)算對(duì)象,運(yùn)算符,運(yùn)算結(jié)果
  • 關(guān)系運(yùn)算:選擇,投影,連接,除運(yùn)算等
  • 選擇:根據(jù)條件選擇出符合的元組
  • 投影:根據(jù)需求提出所需的屬性,刪除其他屬性,對(duì)表來(lái)說(shuō)是按列操作
  • 合并:根據(jù)需求合并所需的屬性 連接操作的條件:兩個(gè)關(guān)系的屬性數(shù)目要相同,且元組是同一個(gè)類(lèi)型(不能把int和string進(jìn)行連接)
  • 差:在關(guān)系A(chǔ)中去除關(guān)系B出現(xiàn)的屬性 差運(yùn)算操作的條件和連接操作一樣
  • 笛卡爾積:將關(guān)系A(chǔ)和關(guān)系B進(jìn)行笛卡爾積之后組成一個(gè)新關(guān)系
笛卡爾積操作的要求:關(guān)系A(chǔ)和關(guān)系B的屬性要不同名,如果同名必須重新命名
  • 復(fù)合:將上述操作進(jìn)行復(fù)合運(yùn)算
  • 更名:對(duì)關(guān)系表達(dá)式或者關(guān)系的屬性重命名

----------------------------------------附加運(yùn)算---------------------------------------

  • 交:兩關(guān)系的公共部分
交運(yùn)算的條件:兩關(guān)系同元,屬性域可兼容
  • (theta)連接:從兩個(gè)關(guān)系的笛卡爾積中選取滿足條件的元組,條件由用戶自己指定
  • 自然連接
    • 自然連接操作的條件:兩關(guān)系必須含有同名同域?qū)傩?#xff0c;連接兩關(guān)系中同名屬性值相等的元組,運(yùn)算結(jié)果是兩個(gè)屬性集的并集,但要消去重名屬性
    • 懸浮元組:在自然連接中被舍棄的元組
    • 外連接:將懸浮元組加上,保留左邊的叫左外連接,保留右邊的叫右外連接
  • 除運(yùn)算:關(guān)系A(chǔ)除以關(guān)系B得到關(guān)系C,則關(guān)系C中包含所有在A中不在B中的屬性及其值,且B,C的元組組合均在A中

關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL

SQL概述

  • SQL特點(diǎn):綜合統(tǒng)一,高度非過(guò)程化,面向集合的操作方式,以同一種語(yǔ)法結(jié)構(gòu)提供多種使用方式
  • 視圖是從基本表里面導(dǎo)出的表,是一個(gè)虛表,用戶可以在視圖上再定義視圖

索引的建立和刪除

  • 目的:加快查詢速度
  • 具體實(shí)現(xiàn)技術(shù)由DBMS來(lái)決定
  • 索引可以是:唯一索引,非唯一索引,聚簇索引(前面兩個(gè)又稱(chēng)普通索引)
  • 在下圖中,我們使用普通索引索引來(lái)查詢,紅線下方為數(shù)據(jù)表,上方類(lèi)似B+樹(shù);使用索引之后,用四個(gè)文件塊就可以讀取到數(shù)據(jù),否則只能遍歷

  • 聚簇索引要求數(shù)據(jù)按照屬性來(lái)順序存儲(chǔ),極大加快了按照聚簇值存儲(chǔ)的數(shù)據(jù)的查詢速度
  • 一個(gè)關(guān)系只能有一個(gè)聚簇索引,可以有多個(gè)普通索引

數(shù)據(jù)查詢

  • 一個(gè)查詢塊結(jié)束用;結(jié)尾
  • 查詢所有屬性列用*
  • 單表查詢:SELECT FROM WHERE;
    • 前面三個(gè)關(guān)鍵字為在原表操作
    • 聚集函數(shù)不可以在WHERE語(yǔ)句中出現(xiàn)

  • HAVING短語(yǔ)與WHERE子句的區(qū)別
    • HAVING短語(yǔ):作用于組,從組中選擇滿足條件的組
    • WHERE子句:作用于基表或視圖,從中選擇滿足條件的元組,因此不能用聚集函數(shù)
  • HAVING短語(yǔ)與GROUP BY短語(yǔ)順序問(wèn)題:GROUP BY不能放在HAVING短語(yǔ)中,因?yàn)镠AVING短語(yǔ)是先要分組,再選擇,因此要先用GROUP BY分組,所以將其放在HAVING短語(yǔ)前面
  • 連接查詢:
    • 連接操作的執(zhí)行過(guò)程:
      • 嵌套循環(huán)法
      • 排序合并法
      • 索引連接法
    • 連接查詢:
      • 等值連接和非等值連接查詢
      • 自身連接
      • 外連接
      • 多表連接
  • 嵌套查詢:
    • 將一個(gè)查詢塊嵌入到另一個(gè)查詢塊的WHERE或者HAVING語(yǔ)句中
    • 內(nèi)層向外層傳播
    • 連接查詢和嵌套查詢的速度根據(jù)不同的系統(tǒng)有不同的速度
    • 不能用ORDER BY子句
    • 嵌套查詢求解方法:
      • 不想關(guān)子查詢
      • 相關(guān)子查詢
    • 帶有IN謂詞的子查詢
    • 帶有比較運(yùn)算符的子查詢
    • 帶有ANY(SOME)或者ALL謂詞的子查詢
    • 帶有EXISTS謂詞的子查詢
      • 只產(chǎn)生邏輯真或假,因此列名無(wú)意義,使用*

數(shù)據(jù)更新

  • 插入數(shù)據(jù)
    • 插入元組
    • 插入子查詢結(jié)果
  • 修改數(shù)據(jù)
    • 在MySQL中使用讓全體學(xué)生年齡+1的語(yǔ)句時(shí)候,提示安全更新問(wèn)題?
  • 刪除數(shù)據(jù)

空值

  • 表示不存在,無(wú)意義

視圖

  • 虛表,是一個(gè)或幾個(gè)基本表導(dǎo)出的表
  • 定義視圖
  • 查詢視圖
  • 更新視圖
  • 視圖的作用
    • 簡(jiǎn)化用戶的操作
    • 對(duì)機(jī)密數(shù)據(jù)提供安全保護(hù)
    • 更加清晰的表達(dá)查詢

數(shù)據(jù)庫(kù)設(shè)計(jì)與應(yīng)用開(kāi)發(fā)

  • 具體知識(shí)網(wǎng)絡(luò)如下

  • 第四章和第五章作為理解內(nèi)容,之后看情況補(bǔ)充

問(wèn)題的提出

  • 關(guān)系數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)

  • 數(shù)據(jù)依賴
    • 數(shù)據(jù)依賴是完整性約束的表現(xiàn)形式,數(shù)據(jù)內(nèi)在的聯(lián)系
    • 數(shù)據(jù)依賴類(lèi)型
      • 函數(shù)依賴
      • 多值依賴
  • 數(shù)據(jù)依賴對(duì)關(guān)系模式的影響
    • 關(guān)系模式中的問(wèn)題

Sno為學(xué)生學(xué)號(hào),Cno為學(xué)生姓名,Sdept為系名稱(chēng),Mname為系主任名字,Grade為成績(jī)
      • 數(shù)據(jù)冗余太大(次要)
      • 更新異常:例如新插入剛成立的系,系里面沒(méi)有主任,因此不能確定系主任
      • 插入異常
      • 刪除異常
    • 通過(guò)分解關(guān)系模式來(lái)消除其中不適合的數(shù)據(jù)依賴

規(guī)范化(范式)

  • 用規(guī)范化看關(guān)系模式好壞與否
  • 函數(shù)依賴
    • 定義:在X中一個(gè)行給一個(gè)a,能確定一個(gè)y,在另一個(gè)行中a仍能確定y,記作X—>Y
    • 函數(shù)依賴來(lái)源于現(xiàn)實(shí)世界,可能會(huì)多加約束條件
    • 函數(shù)依賴分類(lèi)★
      • 非平凡函數(shù)依賴和平凡函數(shù)依賴

      • 完全函數(shù)依賴與部分函數(shù)依賴★

      • 傳遞函數(shù)依賴★

    • 定義:設(shè)K為R<U,F>中的屬性或?qū)傩越M合。若K完全依賴U, 則K稱(chēng)為R的侯選碼
    • 主屬性:候選碼中的屬性
    • 非主屬性:非候選碼中的屬性
    • 全碼:整個(gè)屬性組是碼
    • 外碼
  • 范式★
    • 范式是一個(gè)標(biāo)準(zhǔn),符合某一級(jí)別的關(guān)系模式的集合
    • 范式種類(lèi)

  • 范式基礎(chǔ):函數(shù)依賴
  • 使用范式步驟:確定碼,確定主屬性和非主屬性,確定函數(shù)依賴
  • 各種范式之間的聯(lián)系:

  • 規(guī)范化:一個(gè)低一級(jí)范式的關(guān)系模式,通過(guò)模式分解可以轉(zhuǎn)換為若干個(gè)高一級(jí)范式的關(guān)系模式的集合
  • 1NF★
    • 定義:如果一個(gè)關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng),則R∈1NF
    • 關(guān)系數(shù)據(jù)庫(kù)必須滿足1NF
  • 2NF★
    • 定義:若R∈1NF,且每一個(gè)非主屬性完全函數(shù)依賴于碼,則R∈2NF
    • 有單碼的關(guān)系模式一定滿足第二范式
    • 在分解的若干個(gè)關(guān)系模式中必須保證有公共屬性
    • 2NF并不能完全消除關(guān)系模式數(shù)據(jù)冗余和異常
  • 3NF★
    • 定義:在2NF基礎(chǔ)上非主屬性不能有傳遞依賴,則R∈3NF
    • 3NF并不能完全消除關(guān)系模式數(shù)據(jù)冗余和異常
  • BCNF★
    • 定義:在3NF基礎(chǔ)上一個(gè)關(guān)系依賴?yán)锩婷恳粋€(gè)決定因素都包含碼,即沒(méi)有其他決定因素
    • 實(shí)際中很難到達(dá)BC范式,已經(jīng)解決了操作異常問(wèn)題
    • BCNF實(shí)際上是對(duì)第三范式的修正和補(bǔ)充
  • 4NF(了解性)
    • 第四范式是多值依賴的問(wèn)題,函數(shù)依賴的問(wèn)題之前已經(jīng)解決
    • 4NF之前是函數(shù)范式范疇,4NF是多值依賴范疇
    • 多值依賴
      • 有數(shù)據(jù)冗余問(wèn)題的時(shí)候,對(duì)數(shù)據(jù)操作訪問(wèn)的元組比較多
      • 定義:對(duì)于給定的(X,Y)值,決定的Z的值僅僅與X有關(guān),而與Y無(wú)關(guān)
      • 多值依賴分類(lèi)
        • 平凡多值依賴:Z為空集,平凡多值依賴無(wú)意義
        • 非平凡多值依賴
      • 多值依賴是對(duì)三個(gè)屬性的操作
      • 多值依賴具有對(duì)稱(chēng)性,傳遞性
      • 函數(shù)依賴是多值依賴的特殊情況
    • 多值依賴導(dǎo)致數(shù)據(jù)冗余
    • 4NF定義:不能有非平凡且非函數(shù)依賴的多值依賴,允許的是左部必須包含碼的函數(shù)依賴

規(guī)范化小結(jié)

  • 規(guī)范化是數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的工具
  • 目的是盡量消除操作異常和冗余

數(shù)據(jù)依賴的公理系統(tǒng)

  • 公理系統(tǒng)是模式分解的基礎(chǔ)
  • Armstrong公理系統(tǒng)(找到推出結(jié)果的感覺(jué)就ok,沒(méi)必要死記)
    • 自反律:X確定他自己的一部分
    • 增廣律
    • 傳遞律
    • 合并規(guī)則
    • 偽傳遞規(guī)則
    • 分解規(guī)則
  • 閉包(不可求):在關(guān)系模式R<U,F>中,F所蘊(yùn)含的函數(shù)依賴全體,記作F+
  • 屬性集閉包(可求):在給定F+的情況下,去求X可以確定哪些屬性

  • 關(guān)于閉包的引理:

  • 求屬性集閉包的算法

第2步是去找X可以確定的屬性
  • 最小依賴集(Fm)
    • 為模式分解做準(zhǔn)備
    • 右部為單屬性
    • 沒(méi)有多余的函數(shù)依賴
    • 決定因素沒(méi)有多余的屬性(XB->Y,X->Y;B就是多余的)
  • 極小化過(guò)程:求最小依賴集
    • 逐一檢查右部是否為單屬性,若不是,則拆開(kāi)
    • 逐一檢查各個(gè)函數(shù)依賴,若該依賴可以由其他推出,若有,去除該函數(shù)依賴
    • 去掉多余屬性

模式的分解

  • 模式分解理論基礎(chǔ)
    • 希望分解后能繼續(xù)攜帶完整信息
    • 希望函數(shù)依賴集合依賴數(shù)量比較少
    • 希望獲得一個(gè)可以反映所有需求的最小函數(shù)依賴集合
  • 三種模式分解等價(jià)的定義
    • 無(wú)損連接性
      • 關(guān)系模式R<U,F>被分解為若干模式,R與R1,R2,R3,......,Rn自然連接結(jié)果相等,則稱(chēng)具有無(wú)損連接性
      • 不一定能解決數(shù)據(jù)操作異常問(wèn)題
    • 保持函數(shù)依賴
      • 關(guān)系模式R<U,F>被分解為若干模式,F所邏輯蘊(yùn)含的函數(shù)依賴一定可以由分解得到的某個(gè)關(guān)系模式中的函數(shù)依賴Fi所邏輯蘊(yùn)含,則稱(chēng)保持函數(shù)依賴
    • 無(wú)損連接性和保持函數(shù)依賴
  • 舉例:

  • 分解算法
    • 算法6.2
      • 判斷分解的無(wú)損連接性
      • 舉例:判斷分解ρ={AB,AE,EC,DBC,AC}是否具有無(wú)損連接性?

候選碼用算法求出為C,E

      • 第一步:構(gòu)建一張表,N行為模式分解之后變成了多少關(guān)系就有多少行,K列為原關(guān)系的所有屬性;接著將表中元素填滿。比如對(duì)于第一行AB來(lái)說(shuō),用到了第一列和第二列屬性,所以就填a1,a2,沒(méi)用到就填b13等(1,3表示行和列)
      • 第二步:根據(jù)函數(shù)依賴關(guān)系改變表中元素的值。比如對(duì)于第一個(gè)函數(shù)依賴A->D,找到A列中元素一樣的行(至少兩個(gè)才有意義),由于依賴關(guān)系,我們需要修改D列上的元素,如果元素全為b,將其下標(biāo)行號(hào)修改為最小行號(hào);如果元素中有a,將所有行全改為a

      • 第三步:遍歷完所有的函數(shù)依賴,判斷假如有一行全為a,則說(shuō)明分解保持無(wú)損連接性,否則再遍歷
      • 快速方法:完全不考慮b和下標(biāo),對(duì)于每個(gè)行來(lái)說(shuō),哪一個(gè)屬性被使用,就在該行填a;再根據(jù)函數(shù)依賴在其他列填a,比如A確定D,就在D列填a

    • 算法6.3(※)
      • 轉(zhuǎn)化為3NF的保持函數(shù)依賴的分解
      • 第一步:求最小函數(shù)依賴集Fm
      • 第二步:將沒(méi)有在函數(shù)依賴集中出現(xiàn)的屬性去掉,其余的不變組成U0
      • 第三步:按照完全相同的左部,對(duì)函數(shù)依賴集進(jìn)行分組,判斷一下分完組的屬性有沒(méi)有重復(fù)的情況,比如:BCD包含BD,去掉重復(fù)的部分,算法結(jié)束
    • 算法6.4(※)
      • 轉(zhuǎn)換為3NF既有無(wú)損連接性又保持函數(shù)依賴的分解
      • 第一步:按照算法6.3分解之后的關(guān)系并上原來(lái)關(guān)系的碼,比如ρUR*
      • 第二步:判斷合并之后的關(guān)系里面有沒(méi)有重復(fù)或者包含的屬性,有的話就去掉,和算法6.3去重相似

轉(zhuǎn)載自:https://zhuanlan.zhihu.com/c_1236597039825223680

總結(jié)

以上是生活随笔為你收集整理的插入的数据不能时时查询到_数据库原理笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。