《資料庫系統概論》知識點梳理

来源:https://www.cnblogs.com/liubaili/archive/2022/06/26/16413780.html
-Advertisement-
Play Games

第一章 緒論 1.1 資料庫系統概述 1.1.1 資料庫的4個基本概念 數據:描述事物的符號記錄,數據的含義稱為數據的語義,二者是不可分的。 資料庫:資料庫是長期存儲在電腦內、有組織的、可共用的大量數據的集合。 資料庫數據基本特點:永久存儲、有組織、可共用。 資料庫管理系統(DBMS):是電腦的 ...


第一章 緒論

1.1 資料庫系統概述

1.1.1 資料庫的4個基本概念

  1. 數據:描述事物的符號記錄,數據的含義稱為數據的語義,二者是不可分的。

  2. 資料庫:資料庫是長期存儲在電腦內、有組織的、可共用的大量數據的集合。 資料庫數據基本特點:永久存儲、有組織、可共用。

  3. 資料庫管理系統(DBMS):是電腦的基礎軟體。 主要功能:(1)數據定義功能(2)數據組織、存儲和管理功能(3)數據操縱功能(4)資料庫的事務管理和運行管理(5)資料庫的建立和維護功能(6)其他功能

  4. 資料庫系統(DBS):由資料庫、資料庫管理系統(及其應用開發工具)、應用程式和資料庫管理員組成的存儲、管理、處理和維護數據的系統

1.1.2 數據管理技術的產生和發展

數據管理三個階段的特點及其比較:

  人工管理階段 文件系統階段 資料庫系統階段
應用背景 科學計算 科學計算、數據管理 大規模數據管理
硬體背景 無直接存取存儲設備 磁碟、磁鼓 大容量磁碟、磁碟陣列
處理方式 批處理 聯機實時處理、批處理 聯機實時處理、分佈處理、批處理
       
數據的管理者 程式員 文件系統 資料庫管理系統
數據面向對象 某一應用程式 某一應用 部門企業
數據的共用程度 無共用,冗餘度極大 共用性差,冗餘度大 共用性高,冗餘度低
數據獨立性 不獨立 獨立性差 具有高度的物理獨立性和一定的邏輯獨立性
數據結構化 無結構 記錄內有結構、整體無結構 整體結構化,用數據模型描述
數據控制能力 應用程式自己控制 應用程式自己控制 DBMS提供數據安全性、完整性、併發控制和恢復能力

1.1.3 資料庫系統的特點:

  1. 數據結構化(與文件系統的本質區別)

  2. 共用性高,冗餘度低且易擴展

  3. 數據獨立性高:

    (1)物理獨立性:用戶的應用程式與資料庫中的數據的物理存儲是相互獨立的; (2)邏輯獨立性:用戶的應用程式與資料庫的邏輯結構是相互獨立的。

    數據獨立性是由資料庫管理系統提供的二級映像功能來保證的。

  4. 數據統一管理和控制

【聯想】資料庫系統的三級模式結構:外模式、模式和內模式。模式也稱邏輯模式,是所有用戶的公共數據視圖;外模式也稱用戶模式,是資料庫用戶的數據視圖;內模式也稱存儲模式,是數據在資料庫內部的組織方式。

1.2 數據模型

1.2.1 兩類數據模型

概念模型(實體-聯繫 E-R模型)、邏輯模型和物理模型

1.2.2 概念模型

基本概念:實體、屬性、碼、實體型、實體集、聯繫

1.2.3 數據模型的組成要素

數據結構、數據操作、數據的完整性約束條件

1.2.4 常用的數據模型

  • 層次模型

    優點:

    1. 數據結構比較簡單清晰

    2. 資料庫的查詢效率高

    3. 數據模型提供了良好的完整性支持

    缺點:

    1. 現實世界中很多聯繫是非層次化的

    2. 程式編寫複雜,插入刪除限制多

    3. 查詢子女節點必須通過雙親節點

    4. 由於結構嚴密,層次命令趨向於結構化

  • 網狀模型

    優點:

    1. 能夠更為直接的描述現實世界

    2. 具有良好的性能,存取效率較高

    缺點:

    1. 結構比較複雜

    2. DDL/DML複雜,不好掌握使用

    3. 因為聯繫是通過存取路徑實現的,用戶需要瞭解系統結構的細節

  • 關係模型

    優點:

    1. 建立在嚴格的數據概念基礎上

    2. 概念單一,都用關係表示

    3. 存取路徑對用戶透明,簡化工作

    缺點:

    1. 存取路徑隱蔽,導致查詢效率不高,為了提升性能,DMBS必須對用戶查詢請求進行優化

1.3 資料庫系統的結構

1.3.3 資料庫的二級映像功能與數據獨立性

  1. 外模式/模式映像 模式改變,對映象做修改,可以保證外模式不變,保證了邏輯獨立性

  2. 模式/內模式映象 內模式改變(資料庫的存儲結構改變),對映象做修改,可以保持模式不變,保證了物理獨立性

 

第二章 關係資料庫

2.1 關係模型數據結構及形式化定義

按照數據模型三要素,關係模型由數據結構、關係操作集合和關係完整性約束三部分組成

2.1.1 關係

  1. 關係:在域D上笛卡爾積的子集

  2. 關係可以有三種類型:基本關係(基本表)、查詢表、視圖表。

2.2 關係操作

2.2.1 基本的關係操作

  1. 查詢操作: 選擇、投影、連接、除、並、差、交、笛卡爾積 選擇、投影、並、差、笛卡爾積是五種基本操作

  2. 數據更新:插入、刪除、修改

2.3 關係的完整性

關係模型中有三類完整性約束:實體完整性、參照完整性和用戶定義的完整性。

2.3.1 實體完整性

若屬性A是基本關係R的主屬性,則A不能取空值。

2.3.2 參照完整性

若屬性F是基本關係R的外碼,它與基本關係S的主碼K相對應,則對R中的每個元組在F上的值,必須為空值或者S中某個元組的主碼值

2.4 關係代數

運算符 含義
-
× 笛卡爾積
σ 選擇
Π 投影
連接
÷

前四種為傳統的集合運算,後四種為專門的關係運算

第三章 關係資料庫標準語言SQL

3.1 SQL概述

SQL功能 動詞
數據查詢 SELECT
數據定義 CREATE,DROP,ALTER
數據操縱 INSERT,UPDATE,DELETE
數據控制 GRANT,REVOKE

3.3 數據定義

  • 數據定義語句

    操作對象 創建 刪除 修改
    模式 CREATE SCHEMA DROP SCHEMA  
    CREATE TABLE DROP TABLE ALTER TABLE
    視圖 CREATE VIEW DROP VIEW  
    索引 CREATE INDEX DROP INDEX ALTER INDEX
  • 主要(常用)數據類型

    數據類型 含義
    int,smallint 整數
    char(n) 長度為n的字元串
    float(n) 可選精度的浮點數
    date 日期,格式為YYYY-MM-DD
    time 時間,格式為HH:MM:SS

3.4 數據查詢

  • 數據查詢語句

     select [all/distinct] <目標列表表達式>
     from <表名/視圖名> [as] <別名>
     [where <條件表達式>]
     [group by <列名>[having <條件表達式>]]
     [order by <列名>]  --升序或降序
  • where查詢常用條件

    查詢條件 謂詞
    比較 (not) =,>,<,>=,<=,!=,<>,!>,!<
    確定範圍 between and; not betweeen and
    確定集合 in, not in
    字元匹配 like, not like
    空值 is null, is not null
    多重條件 and, or, not
  • 字元匹配:(1)%(百分號):代表任意長度字元串;(2)_(下橫線):代表任意單個字元

  • 聚集函數:

    函數 含義
    count(*) 統計元組個數
    count([all/distinct] <列名>) 統計一列中值的個數
    sum([all/distinct] <列名>) 統計一列中值的總和
    avg([all/distinct] <列名>) 統計一列中值的平均值
    max([all/distinct] <列名>) 統計一列中值的最大值
    min([all/distinct] <列名>) 統計一列中值的最小值
  • 帶有EXISTS謂詞的子查詢不返回任何數據,只產生邏輯真值“true”或邏輯假值“false”。使用存在量詞後,若內層查詢結果非空,則外層的where字句返回真值,否則返回假值。

3.6 空值的處理

  • 空值的判斷:is null或者is not null

3.7 視圖

3.7.4 視圖的作用

  1. 視圖能夠簡化用戶的操作

  2. 視圖使用戶能以多種角度看待同一數據

  3. 視圖對重構資料庫提供了一定程度的邏輯獨立性

  4. 視圖能對機密數據提供安全保護

  5. 適當利用視圖可以更清晰地表達查詢

 

第四章 資料庫安全性

資料庫的安全性:保護資料庫以防止不合法使用所造成的的數據泄露、更改或破壞

4.2 資料庫安全性控制

4.2.4 授權:授予與收回

  1. grant授權語句一般格式:

     grant <許可權>
     on <對象類型><對象名>
     to <用戶>
     with grant option --該用戶可以將許可權授予他人
  2. revoke回收許可權語句:

     revoke <許可權>
     on <對象類型><對象名>
     from <用戶> [cascade|restrict]

第五章 資料庫完整性

5.1 實體完整性

  1. 檢查主碼是否唯一,拒絕插入或修改

  2. 檢查主碼的各個屬性是否為空,拒絕插入或修改

5.2 用戶定義的完整性

屬性上約束條件的定義:(1)列值非空(not null);(2)列值唯一(unique);(3)檢查列值是都滿足一個條件表達式(check短語)

5.4 完整性約束命名字句

 constraint<完整性約束條件名><完整性約束條件>

5.7 觸發器

  • 定義格式:

     CREATE TRIGGER <觸發器名>
     BEFORE|AFTER <觸發事件> ON <表名>
     REFERENCING NEW|OLD ROW AS <變數>
     FOR EACH{ROW|STATEMENT}
     [WHEN<觸發條件>]<觸發動作體>
  • 觸發事件:可以是insert、delete或update;after/before表示觸發的時機

 

第六章 關係數據理論

6.1 問題的提出

常見的關係模式問題:

  • 數據冗餘

  • 更新異常

  • 插入異常

  • 刪除異常

6.2 規範化

6.2.1 函數依賴

X函數確定Y或Y函數依賴X,記做X->Y; F(X)=Y

  • X->Y,但Y不屬於X,則稱X->Y是非平凡的函數依賴

  • X->Y,但Y屬於X,則稱X->Y是平凡的函數依賴

  • 區別:完全函數依賴x-^F>y)、部分函數依賴(x-^P>y)、傳遞函數依賴

6.2.2 碼

  • R<U,F>,若U對K存在完全函數依賴,則K為R的候選碼

  • 如果U函數依賴於K,即K->U,則K稱為超碼

  • 若候選碼多餘一個,則選定其中一個為主碼

  • 包含在任何一個候選碼中的屬性稱為主屬性,其餘為非主屬性

6.2.3 範式

  • NF:碼X,非主屬性Z,不存在X->Y,Y->Z成立,且Y不函數依賴於Z。

  • 2NF:在NF的基礎上刪除非主屬性對碼的部分函數依賴

  • 3NF:在2NF的基礎上消除非主屬性對碼的傳遞函數依賴

  • BCNF:在3NF的基礎上消除主屬性對碼的部分和傳遞函數依賴

 

第七章 資料庫設計

7.1 資料庫設計概述

7.1.3 資料庫設計步驟

  1. 需求分析

  2. 概念結構設計

  3. 邏輯結構設計

  4. 物理結構設計

  5. 資料庫實施

  6. 資料庫運行和維護

 


由於期末考核需要,整理了一份發一下叭

 

製作:BDT20040


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Redis 的定義? 百度百科: Redis(Remote Dictionary Server ),即遠程字典服務,是一個開源的使用ANSI C語言編寫、支持網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。 中文官網: Redis是一個開源(BSD許可),記憶體存 ...
  • 安裝 Redis # 首先安裝依賴gcc, 後面需要使用make編譯redis yum install gcc -y # 進入 /usr/local/src 目錄, 把源碼下載到這裡 cd /usr/local/src # 下載 redis 7.0.2 的源碼,github被牆,可以使用國內的地址 ...
  • 一、前言 項目中之前涉及到胎兒心率圖曲線的繪製,最近項目中還需要添加心電曲線和血樣曲線的繪製功能。今天就來分享一下心電曲線的繪製方式; 二、正文 1、胎兒心率曲線的繪製是通過DrawingVisual來實現的,這裡的心電曲線我也是採用差不多相同的方式來實現的,只是兩者曲線的數據有所區別。心電圖的數據 ...
  • 效果圖先附上: 首先 這是我是參考 教程:使用 SignalR 2 和 MVC 5 實時聊天 | Microsoft Docs 先附上教程: 在“添加新項 - SignalRChat”中,選擇 InstalledVisual> C#>WebSignalR>,然後選擇 SignalR Hub 類 (v ...
  • 這次iNeuOS升級主要升級圖形渲染引擎和增加豐富的圖元信息,可以很快的方案應用。總共增加41個通用和行業領域的圖元應用,增加2154個圖元信息,現在iNeuOS視圖建模功能模塊總共包括5894個行業圖元信息。現在完全支持製作高保真的工藝流程和大屏展示效果。 ...
  • 什麼是工廠模式 工廠模式是最常用的設計模式之一,屬於創建型模式。 有點: 解耦,可以把對象的創建和過程分開 減少代碼量,易於維護 什麼時候用? 當一個抽象類有多個實現的時候,需要多次實例化的時候,就要考慮使用工廠模式。 比如:登錄的抽象類ILoginBusiness,它有2個實現,一個用用戶名密碼登 ...
  • 遠程連接ubuntu 提前準備: 在Ubuntu中安裝好ssh 安裝步驟:1.安裝openssh-server 😒udo apt-get install openssh-server ​ (過程中會確認是否希望繼續執行,按y就可) ​ 2.查看是否安裝成功:ps -e |grep ssh ​ 3. ...
  • 1 學習參考 MySQL官方文檔 https://dev.mysql.com/doc/refman/8.0/en/delete.html 節選自 MySQL 8.0 Reference Manual_SQL Statements_Data Manipulation Statements_DELETE ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...