數據庫理論基礎

1、什麼是數據庫

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

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

DBMS:數據庫管理系統(可以操做和管理數據庫的大型軟件,例如MySQL。)redis

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

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

以下圖

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

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

3、常見數據庫

關係型數據庫

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

非關係型數據庫

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

4、關係型數據庫(MySQL)的特徵及組成結構介紹

4.一、關係型數據庫的發展歷程
  • 層次模型
    數據模型安全

  • 網狀模型
    數據結構

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

    圖(a)所示爲關係模式,圖(b)所示爲這兩個關係模型的關係,關係名稱分別爲教師關係和課程關係,每一個關係均含 3 個元組,其主碼均爲「教師編號」。
    在關係模型中基本數據結構就是二維表,不用像層次或網狀那樣的連接指針。記錄之間的聯繫是 經過不一樣關係中同名屬性來體現的。例如,要查找「劉晉」老師所上的課程,能夠先在教師關係中根據姓名找到教師編號「1984030」,而後在課程關係中找到「1984030」任課教師編號對應的課程名便可。經過上述查詢過程,同名屬性教師編號起到了鏈接兩個關係的紐帶做用。因而可知,關係模型中的各個關係模式不該當是孤立的,也不是隨意拼湊的一堆二維表,它必須知足相應的要求。架構

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

數據以表格的形式出現,每行爲單獨的一條記錄,每列爲一個單獨的字段,許多的記錄和字段組 成一張表單(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)是併發控制的基本單位。
能夠把一系列要執行的操做稱爲事務,而事務管理就是管理這些操做要麼徹底執行,要麼徹底不執行 。
經典案例:銀行轉帳工做,從一個帳號扣款並使另外一個帳號增款,這兩個操做要麼都執行,要麼都不執行。因此,應該把它們當作一個事務。事務是數據庫維護數據一致性的單位,在每一個事務結束 時,都能保持數據一致性。性能

相關文章
相關標籤/搜索