【資料庫】資料庫入門(一):基本概念

来源:https://www.cnblogs.com/wymanwong/archive/2019/09/06/11477466.html
-Advertisement-
Play Games

概述 資料庫(database): 一個相關聯數據的集合。它可以代表現實中某些具體的領域,在邏輯上將相關聯的數據整合起來,從而實現一個具體的目的。 資料庫管理系統(database management system, DBMS): 一個允許用戶進行創建和維護資料庫的程式的集合。它一般是一個通用軟體 ...


概述

資料庫(database): 一個相關聯數據的集合。它可以代表現實中某些具體的領域,在邏輯上將相關聯的數據整合起來,從而實現一個具體的目的。

資料庫管理系統(database management system, DBMS): 一個允許用戶進行創建和維護資料庫的程式的集合。它一般是一個通用軟體系統(general-purpose software system),旨在實現以下過程:

  • 定義(defining): 指定數據類型、結構以及約束條件;
  • 組織(constructing): 在某種存儲介質中組織、存儲和管理數據;
  • 操作(manipulating): 檢索和操作數據;
  • 共用(sharing): 多個用戶或多個程式同時使用數據。

常見的幾種關係型資料庫管理系統(relational DBMSs)包括 Oracle, IBM DB2, Microsoft's Access, Microsoft's SQL Server, MySQL, postgreSQL 等等。

資料庫系統(database system): 由資料庫和其管理軟體組成的系統,屬於信息系統的組成成分。它主要提供高效的請求查詢服務以及更新執行服務。

 

資料庫的發展歷史

  1. 層次型資料庫(Hierarchical Databases): 最早研製成功的資料庫系統(19世紀60年代),最成功的典型是IMS(Information Management System),由IBM公司研製成功。
  2. 網狀型資料庫(Network Databases): 層次型資料庫的拓展,從樹狀結構變成網狀結構(19世紀60年代末)。
  3. 關係型資料庫(Relational Databases): 採用關係模型來組織數組,以行和列的形式存儲數據,以便於用戶理解。
  4. 面向對象資料庫(Object-Oriented Databases):也稱為對象數據管理系統,出現於19世界80年代,以面向對象編程語言為驅動,如 C++、Java, 用於實現存儲以及共用複雜的結構化對象。
  5. XML資料庫: 一種支持對 XML 格式文檔進行存儲和查詢等操作的數據管理系統。19世紀90年代 XML 成為 Web 數據交換的標準,該資料庫適用於稀疏數據、深度嵌套數據和混合內容。
  6. NoSQL資料庫: NoSQL = Not Only SQL。泛指非關係型資料庫,不使用 SQL 作為查詢語言,具有水平可拓展性的特征。自2009年起,在工業上取得重大發展。

 

使用資料庫的優勢

我們日常工作中,常用的文件管理系統一般採用的是簡單的樹狀結構,存儲大量獨立而不相關的文件。相比而已,資料庫系統從邏輯上將相關文件數據集合起來,統一進行綜合管理。一般來說,資料庫系統在以下幾個環節具備優勢:

  • 數據冗餘(Data redundancy): 資料庫系統能把控內部的數據冗餘以確保數據的一致性以及節省存儲空間。
  • 數據完整性(Data integrity): 資料庫管理系統能自動補齊一些完整性約束。
  • 數據安全(Data security): 資料庫管理系統對數據進行集中管理,能確保資料庫訪問是通過授權的通道進行的。
  • 併發事務(Concurrent transactions)
  • 備份和恢復服務(Backup and recovery services)
  • 數據的獨立性(Data independence)
  • 等等。。。。。。

 

三級ANSI / SPARC體繫結構

美國國家標準協會的電腦與信息處理委員會中的標準計劃與需求委員會(ANSI-SPARC Architecture (American National Standards Institute, Standards Planning And Requirements Committee)提出了資料庫的標準體繫結構,如下圖所示。

該三級體繫結構主要分為:

  1. 外部模式(External level): 屬於用戶或應用程式視圖,描述應用程式中使用的資料庫的重構部分;
  2. 概念 / 邏輯模式(Conceptual / logical level): 屬於用戶社區視圖,描述什麼數據存儲在資料庫中以及數據之間的關係(該內容獨立於它們的物理存儲結構);
  3. 內部模式 (Internal level): 屬於系統實現視圖,描述數據如何存儲在資料庫中(如物理存儲結構)。

在三級體繫結構的基礎上,可以總結出一些派生原則,主要針對的是數據的獨立性。

  • 邏輯數據的獨立性(Logical data independence): 無需更改外部模式或應用程式,即可更改概念 / 邏輯模式。
    •   如果添加或刪除實體,只引用其餘數據的外部模式不應受到影響。
  • 物理數據的獨立性(Physical data independence): 更改內部模式而無需更改概念 / 邏輯模式。
    •   如果重新組織了物理文件,不必更改概念 / 邏輯模式。

籠統來講,當模式在某一層發生變化時,下一層的模式保持不變,只更改兩個級別之間的映射。

 

參考概念
在資料庫操作中會使用到很多數學上的概念以及運算,常用的包括集合(Set)、元組(Tuple)、集合的笛卡爾積(Cartesian Product of Sets)。具體可以參考維基百科上的說明。

 

集合(Set)

https://zh.wikipedia.org/wiki/%E9%9B%86%E5%90%88_(%E6%95%B0%E5%AD%A6)
https://en.wikipedia.org/wiki/Set_(mathematics)


元組

https://zh.wikipedia.org/wiki/%E5%A4%9A%E5%85%83%E7%BB%84
https://en.wikipedia.org/wiki/Tuple


笛卡爾積

https://zh.wikipedia.org/wiki/%E7%AC%9B%E5%8D%A1%E5%84%BF%E7%A7%AF
https://en.wikipedia.org/wiki/Cartesian_product

 


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

-Advertisement-
Play Games
更多相關文章
  • 1.背景介紹 隨著 Internet 的快速發展和業務量的不斷提高,基於網路的數據訪問流量迅速增長,特別是對數據 中心、大型企業以及門戶網站等的訪問,其訪問流量甚至達到了 10Gb/s 的級別;同時,伺服器網 站藉助 HTTP、FTP、SMTP 等應用程式,為訪問者提供了越來越豐富的內容和信息,服務 ...
  • 在vim 中輸入 :set mouse=r 就行了 ,還不行的話 :set mouse=v. ...
  • 本文源碼: "GitHub·點這裡" || "GitEE·點這裡" 一、配置詳解 場景描述:MySQL數據表以全量和增量的方式向ElasticSearch搜索引擎同步。 1、下載內容 elasticsearch 版本 6.3.2 logstash 版本 6.3.2 mysql connector j ...
  • 這些都是比較有實用性的系統配置,收藏下,以備不時之需!以下是etc下重要配置文件解釋: 1、/etc/hosts #文件格式: IPaddress hostname aliases #文件功能: 提供主機名到IP地址的對應關係,建議將自己經常使用的主機 # 加入此文件中,也可將沒有DNS記錄的機器加 ...
  • windows系統安裝虛擬機,常見的是利用VMware Workstation這款軟體來進行安裝。在未接觸Docker之前,我一直通過這款軟體來進行管理的。docker是運行在linux環境下的,那怎樣才能讓docker運行在Windows環境下呢,於是windows提供了Hyper-V管理器並自動 ...
  • 在JDBC中實現SQL語句的模糊查詢 在大多數情況下我們可以在JDBC中寫入sql語句通過占位符的方式來直接查詢,但是如果要進行模糊查詢,需要轉義字元才能夠正常查詢。 sql語句: 在大多數情況下我們可以在JDBC中寫入sql語句通過占位符的方式來直接查詢,但是如果要進行模糊查詢,需要轉義字元才能夠 ...
  • Photon Server 和 Unity3D 數據交互: Photon Server 服務端編程 Unity3D 客戶端編程 VS2017 之 MYSQL實體數據模型 一、新建資料庫連接後,點擊下一步可能出現閃退。 原因:引用Mysql.Data和Mysql.Data.Entity版本和安裝的My ...
  • 動態sql是mybatis的主要特性之一。在mapper中定義的參數傳到xml中之後,在查詢之前mybatis會對其進行動態解析。 mybatis提供了兩種支持動態sql的語法: {} 和 ${}。 username傳參一致的話,這兩種執行的結果是一樣的,但是這兩種方式在動態sql解析階段的處理是不 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...