數據庫理論基礎


一、什么是數據庫

數據:描述事物的符號記錄,可以是數字、文字、圖形、圖像、聲音、語言等,數據有多種形式,它們都可以經過數字化后存入計算機。
數據庫:存儲數據的倉庫,是長期存放在計算機內、有組織、可共享的大量數據的集合。數據庫中的數據按照一定數據模型組織、描述和存儲,具有較小的冗余度,較高的獨立性和易擴展性,並為各種用戶共享。

數據庫特點如下:
  • 數據結構化
  • 數據的共享性高,冗余度低,易擴充
  • 數據獨立性高
  • 數據由 DBMS 統一管理和控制(安全性、完整性、並發控制、故障恢復)

DBMS:數據庫管理系統(能夠操作和管理數據庫的大型軟件,例如MySQL。)

二、數據庫與文件系統區別

  • 數據庫系統:數據庫管理系統(Database Management System)是一種操縱和管理數據庫的大型軟件, 用於建立、使用和維護數據庫,簡稱 DBMS。它對數據庫進行統一的管理和控制,以保證數據庫的安全 性和完整性。
  • 文件系統:文件系統是操作系統用於明確存儲設備(常見的是磁盤)或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件機構稱為文件管理系統,簡稱文件系統。
2.1、對比與區別
2.1.1、管理對象不同
  • 文件系統的管理對象是文件,並非直接對數據進行管理,不同的數據結構需要使用不同的文件類型進行保存,例如可執行文件為.exe,word文件為.doc。
  • 數據庫直接對數據進行存儲和管理。
2.1.2、存儲方式不同
  • 文件系統使用不同的文件將數據分類(.doc/.mp4/.jpg)保存在外部存儲上
  • 數據庫系統使用標准統一的數據類型進行數據保存(字母、數字、符號、時間)
2.1.3、調用數據的方式不同

如下圖

數據庫系統:不同軟件,不同語言調用DBMS接口,就可對數據庫內的數據進行操作,數據的冗余度小。
文件系統::文件系統使用不同的軟件打開不同類型的文件,例如打開.doc文件,得需用用world,打開.jpg文件,得需要看圖軟件。

2.2、優缺點
  • 由於 DBMS 的存在,用戶不再需要了解數據存儲和其他實現的細節,直接通過 DBMS 就能獲取數據,為數據的使用帶來極大便利。
  • 具有以數據為單位的共享性,數據可遠程操作,管理。具有數據的並發訪問能力。DBMS 保證了在並發訪問時數據的一致性。
  • 低延時訪問,典型例子就是線下支付系統的應用,支付規模巨大的時候,數據庫系統的表現遠遠 優於文件系統。
  • 能夠較為頻繁的對數據進行修改,在需要頻繁修改數據的場景下,數據庫系統可以依賴 DBMS 來 對數據進行操作且對性能的消耗相比文件系統比較小。
  • 對事務的支持。DBMS 支持事務,即一系列對數據的操作集合要么都完成,要么都不完成。在 DBMS 上對數據的各種操作都是原子級的。

三、常見數據庫

關系型數據庫

關系型數據庫,是指采用了關系模型來組織數據的數據庫,其以行和列的形式存儲數據,以便於用戶理解,關系型數據庫這一系列的行和列被稱為表,一組表組成了數據庫。用戶通過查詢來檢索數據庫中的數據,而查詢是一個用於限定數據庫中某些區域的執行代碼。關系模型可以簡單理解為二維表格模型,而一個關系型數據庫就是由二維表及其之間的關系組成的一個數據組織。當前主流的關系型數據庫有 Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL、浪潮 K-DB 等。

非關系型數據庫

非關系型數據庫:又被稱為 NoSQL(Not Only SQL ),意為不僅僅是 SQL,是一種輕量、開源、 不兼容 SQL 功能的數據庫,對 NoSQL 最普遍的定義是“非關聯型的”,強調 Key-Value 存儲和文檔數據庫的優點,而不是單純地反對 RDBMS(關系型數據庫管理系統)常見的非關系型數據庫有,mongodb,redis。

四、關系型數據庫(MySQL)的特征及組成結構介紹

4.1、關系型數據庫的發展歷程
  • 層次模型
    數據模型

  • 網狀模型

  • 關系模型
        關系模型以二維表結構來表示實體與實體之間的聯系,關系模型的數據結構是一個“二維表框 架”組成的集合。每個二維表又可稱為關系。在關系模型中,操作的對象和結果都是二維表。關系模型是目前最流行的數據庫模型。支持關系模型的數據庫管理系統稱為關系數據庫管理系統,Access 就是一種關系數據庫管理系統。圖所示為一個簡單的關系模型.

    圖(a)所示為關系模式,圖(b)所示為這兩個關系模型的關系,關系名稱分別為教師關系和課程關系,每個關系均含 3 個元組,其主碼均為“教師編號”。
    在關系模型中基本數據結構就是二維表,不用像層次或網狀那樣的鏈接指針。記錄之間的聯系是 通過不同關系中同名屬性來體現的。例如,要查找“劉晉”老師所上的課程,可以先在教師關系中根據姓名找到教師編號“1984030”,然后在課程關系中找到“1984030”任課教師編號對應的課程名即可。通過上述查詢過程,同名屬性教師編號起到了連接兩個關系的紐帶作用。由此可見,關系模型中的各個關系模式不應當是孤立的,也不是隨意拼湊的一堆二維表,它必須滿足相應的要求。

五、數據庫組成與相關知識。

數據以表格的形式出現,每行為單獨的一條記錄,每列為一個單獨的字段,許多的記錄和字段組 成一張表單(table),若干的表單組成庫(database)。
● 記錄(一條數據)
在數據庫當中,表當中的行稱之為記錄
● 字段(id name ....)
在數據庫當中,表當中的列稱之為字段
● MySQL數據類型
數據類型用於指定特定字段所包含數據的規則,它決定了數據保存在字段里的方式,包括分配給 字段的寬度,以及值是否可以是字母、數字、日期和時間等。任何數據或數據的組合都有對應的數據 類型,用於存儲字母、數字、日期和時間、圖像、二進制數據等。數據類型是數據本身的特征,其特 性被設置到表里的字段。 MySQL 常見基礎數據類型:

  • 字符串類型(CHAR(0-255 固定長度),VARCHAR(0-255 可變長度))
  • 數值類型(INT(整數型)、FLOAT(浮點型))
  • 日期和時間類型(DATE(年月日)、TIME(時分秒))
    ● MySQL約束類型
    約束是一種限制,它通過對表的行或列的數據做出限制,來確保表的數據的完整性、唯一性。
  • 主鍵約束 primary key:主鍵約束相當於唯一約束+非空約束的組合,主鍵約束列不允許重復,也不允許出現空值。每個表最多只允許一個主鍵,建立主鍵約束可以在列級別創建,也可以在表級別創建。當創建主鍵的約束時,系統默認會在所在的列和列組合上建立對應的唯一索引。
  • 外鍵約束 foreign key:外鍵約束是保證一個或兩個表之間的參照完整性,外鍵是構建於一個表的兩個字段或是兩個表的兩個字段之間的參照關系。
  • 唯一約束 unique:唯一約束是指定 table 的列或列組合不能重復,保證數據的唯一性。唯一約束不允許出現重復的值,但是可以為多個 null。同一個表可以有多個唯一約束,多個列組合的約束。在創建唯一約束時,如果不給唯一約束名稱,就默認和列名相同。唯一約束不僅可以在一個表內創建,而且可以同時多表創建組合唯一約束。
  • 非空約束 not null 與默認值 default:非空約束用於確保當前列的值不為空值,非空約束只能出現在表對象的列上。Null 類型特征:所有的類型的值都可以是 null,包括 int、float 等數據類型。
    ● MySQL索引
    索引是一個單獨的、物理的數據庫結構,它是某個表中一字段或若干字段值的集合。表的存儲由 兩部分組成,一部分用來存放數據,另一部分存放索引頁面。通常,索引頁面相對於數據頁面來說小 得多。數據檢索花費的大部分開銷是磁盤讀寫,沒有索引就需要從磁盤上讀表的每一個數據頁,如果 有索引,則只需查找索引頁面就可以了。所以建立合理的索引,就能加速數據的檢索過程。
    ● MySQL鎖
    數據庫是一個多用戶使用的共享資源。當多個用戶並發地存取數據時,在數據庫中就會產生多個 事務同時存取同一數據的情況。若對並發操作不加控制就可能會讀取和存儲不正確的數據,破壞數據庫的一致性。 加鎖是實現數據庫並發控制的一個非常重要的技術。當事務在對某個數據對象進行操作前,先向系統發出請求,對其加鎖。加鎖后事務就對該數據對象有了一定的控制,在該事務釋放鎖之前,其他 的事務不能對此數據對象進行更新操作。
    ● MySQL 的存儲引擎
    存儲引擎就是存儲數據,建立索引,更新查詢數據等等技術的實現方式。存儲引擎是基於表的, 而不是基於庫的。所以存儲引擎也可被稱為表類型。Oracle,SqlServer 等數據庫只有一種存儲引擎。 MySQL 提供了插件式的存儲引擎架構。所以 MySQL 存在多種存儲引擎,可以根據需要使用相應引擎, 或者編寫存儲引擎。
  • MYISAM:默認引擎、插入和查詢速度較快,支持全文索引,不支持事務、行級鎖和外鍵約束等功能
  • INNODB:支持事務、行級鎖和外鍵約束等功能
  • MEMORY:工作在內存中,通過散列字段保存數據,速度快、不能永久保存數據

● 事務(Transaction)是並發控制的基本單位。
可以把一系列要執行的操作稱為事務,而事務管理就是管理這些操作要么完全執行,要么完全不執行 。
經典案例:銀行轉賬工作,從一個賬號扣款並使另一個賬號增款,這兩個操作要么都執行,要么都不執行。所以,應該把它們看成一個事務。事務是數據庫維護數據一致性的單位,在每個事務結束 時,都能保持數據一致性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM