資料庫原理基礎一

来源:https://www.cnblogs.com/heyongshen/archive/2022/09/06/16662555.html
-Advertisement-
Play Games

數據的分類: 結構化數據:有固定的格式,例如一個表格裡面的信息 非結構化數據:無固定格式,例如圖片、網頁、語音、視頻 半結構化數據:html、xml格式的數據 資料庫:存放數據的一個集合,可以是文件的方式,也可以是其他的方式。 資料庫的發展: 萌芽階段:文件系統 使用磁碟文件來存儲數據,比如一個文檔 ...


數據的分類:
  • 結構化數據:有固定的格式,例如一個表格裡面的信息

  • 非結構化數據:無固定格式,例如圖片、網頁、語音、視頻

  • 半結構化數據:html、xml格式的數據

資料庫:存放數據的一個集合,可以是文件的方式,也可以是其他的方式。

資料庫的發展:
  • 萌芽階段:文件系統

使用磁碟文件來存儲數據,比如一個文檔裡面存了很多數據內容。
缺點:管理不方便,且容易造成文件的損壞、安全性差。

  • 初級階段:第一代資料庫

出現了網狀模型、層次模型的資料庫

  • 中級階段:第二代資料庫

關係型資料庫和結構化查詢語言

  • 高級階段:新一代資料庫

"關係-對象"型資料庫

相關概念
  • DBMS:Database Management System,資料庫管理系統,就是一個應用軟體,實現對數據的管理。例如mysql、orcler、redis等。

  • Database:資料庫

  • DBA:Database Administrator(DBA)資料庫管理員

  • Application:應用程式,用戶訪問數據不是直接通過DBMS來進行訪問的。通過一些圖形界面軟體等來訪問這些數據。例如京東、淘寶等。

DBMS工作邏輯:數據放在磁碟上,用戶通過工具訪問DBMS,然後DBMS訪問到對應的數據。

資料庫結構:
  • 單機架構:資料庫就在一個機器上,只能通過這個機器來操作資料庫,例如access

  • 主從架構(C/s):客戶端-伺服器,將要客戶端和伺服器區分開,通過客戶端發送請求來和伺服器交互。

  • 分散式架構:把數據分散在多個地方,不是集中在一起。

各種資料庫管理系統:
  • 層次結構:按層(樹狀結構)組織數據,容易產生冗餘

  • 網狀結構:關係複雜,不容易管理

  • 關係型資料庫:RDBMS,

關係型資料庫相關概念:把所有數據放在一張二維表裡面
  • 關係:就是一張二維表,

  • 行:row,稱為記錄,每一行稱為一條記錄(record)

  • 列:column,稱為屬性、欄位或者域(field)

  • 主鍵:Primary key,一個或者多個欄位的組合,主鍵不能為空且不能重覆

  • 唯一鍵:Unique key, 一個或多個欄位的組合,不能重覆但可以為空

  • 域:domain,屬性的取值範圍。

常用的關係型數據據:
  • mysql: MySQL, MariaDB, Percona Server

  • oracle

  • DB2

  • PostgreSQL

實體-聯繫模型E-R:
  • E-R:描述資料庫存儲數據的結構模型

  • 實體Entity:用矩形表示,例如課程、班級、學生等

  • 屬性Attribute:用橢圓形表示,描述實體的特征

  • 聯繫Relationship:實體的屬性之間的關聯規則

E-R模型的聯繫類型:
  • 一對一: 假設有兩張表,一張存姓名,另一個存身份證,一個人只能有一個身份證。
  • 一對多:假設兩張表部門和員工,一個部門能有多個員工信息。
  • 多對多:假設兩張表課程和學上。一個學生能擁有多門課程,一個課程也能被多個學生選擇。
資料庫的操作:
  • 增加:Insert
  • 刪除:Delete
  • 查找:Select
  • 修改:Update
資料庫的規範化:

作用:減少數據的冗餘,增進數據的一致性。越高的範式資料庫冗餘越小

  • 第一範式(1NF):無重覆列、一列不能有多個值

  • 第二範式(2NF):表中的每一條記錄都能被唯一區分(通過主鍵區分),某一個非主鍵的欄位要依賴整個組件,而不能只依賴部分主鍵(多個欄位組成一個逐漸)。

  • 第三範式(3NF):非主鍵的欄位之間不能有從屬關係

註意:滿足第一範式的資料庫才能稱為關係資料庫。

SQL
  • SQL:Structure Query Language,結構化查詢語言。SQL配套關係型資料庫使用的。

  • SQL解釋器:將SQL語句解釋成機器語言

  • 數據存儲協議:應用層協議,C/S
    S:server, 監聽於套接字,接收並處理客戶端的應用請求
    C:Client

數據約束:
  • 約束:constraint,需要遵守的限制
常見的約束:
  • 主鍵:primary key,一個或多個欄位的組合,非空且唯一。

  • 唯一鍵:unique key, 一個或者多個欄位的組合

  • 非空:not null

  • 外鍵:foreign key,用來建立表和表之間的關係。外鍵的欄位依賴於另一張表的欄位。

  • 預設:default,預設值

  • 檢查:欄位值的一個範圍

主鍵和外鍵的區別:
  • 主鍵:primary key
    作用:用於惟一地標識表中的某一條記錄,確保每列的原子性。
    形式:主鍵可以由一個欄位,也可以由多個欄位組成,分別成為單欄位主鍵或多欄位主鍵
    其他:建立主鍵會生成唯一索引,一個表只能建一個主鍵。

  • 外鍵:foreign key
    作用:保持數據一致性,完整性,主要目的是使兩張表形成關聯,並控制存儲在外鍵表中的數據。
    形式:建立外鍵的表為“從表”,外鍵依賴的表為“主表”,主表是從表的“外表”
    其他:外鍵只能引用外表中的列的值!一個表只能建一個外鍵。
    建立外鍵的列,必須是外表的主鍵,並且欄位類型必須一致。

關係運算:
  • 選擇:篩選行(記錄)

  • 投影;(cut)篩選列

  • 連接:表和表之間的關係。比如外鍵。


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

-Advertisement-
Play Games
更多相關文章
  • 一:背景 前段時間在訓練營上課的時候就有朋友提到一個問題,為什麼 Windbg 附加到 C# 程式後,程式就處於中斷狀態了?它到底是如何實現的? 其實簡而言之就是線程的遠程註入,這一篇就展開說一下。 二:實現原理 1. 基本思路 WinDbg 在附加進程的時候,會註入一個線程到 C# 進程 中,註入 ...
  • zabbix自定義監控進程與日誌 zabbix自定義監控進程 基於之前的郵箱告警,部署完成後,我們在zabbix客戶端進行編譯腳本用來監控進程, 下麵是通過httpd進程來進行測試 在客戶端 [root@localhost ~]# dnf -y install httpd //下載httpd [ro ...
  • zabbix自定義監控 自定義監控進程 測試監控httpd,需要在監控端部署httpd,以方便監控 `` 配置監控腳本 #在監控端 [root@localhost ~]# dnf -y install httpd [root@localhost ~]# systemctl start httpd [ ...
  • 巴西ANATEL近日發佈了一項新的5159法案,該法案內容主要是關於行動電話使用的有線和無線電源和充電器。 法案稱為《手機用充電器合格評定技術要求及測試程式》,涵蓋了產品安全性和EMC的要求。新規將於公佈後180天,即今年10月26日起生效,該法案將取代現行的3481法案。 5159法案的新規定確實 ...
  • 1. 前言 筆者在 《從 Linux 內核角度看 IO 模型的演變》一文中曾對 Socket 文件在內核中的相關數據結構為大家做了詳盡的闡述。 又在此基礎之上介紹了針對 socket 文件的相關操作及其對應在內核中的處理流程: 並與 epoll 的工作機制進行了串聯: 通過這些內容的串聯介紹,我想大 ...
  • 前置條件 確認系統版本 win10 19041版本以及更高 查看方式:win + r 輸入winver win11 * 啟用或關閉Windows功能 win + r, 輸入 optionalfeatures,勾選適用於Linux的Windows子系統,和虛擬機平臺選項。然後重啟電腦。 官方文檔提示可 ...
  • 2022-09-06 1、為某個欄位設置別名(as關鍵字) 以“students”為例: students表的欄位有:id,name,age,gender,is_del select name as n,age as a from students; 說明:select 屬性名 as 新名稱,屬性名 ...
  • MVCC全稱是Multi-Version Concurrency Control(多版本併發控制),是一種併發控制的方法,通過維護一個數據的多個版本,減少讀寫操作的衝突。 如果沒有MVCC,想要實現同一條數據的併發讀寫,還要保證數據的安全性,就需要操作數據的時候加讀鎖和寫鎖,這樣就降低了資料庫的併發... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...