tft每日頭條

 > 科技

 > 關系數據庫的四個組成部分

關系數據庫的四個組成部分

科技 更新时间:2024-12-04 04:47:52

為什麼需要數據庫?

因為應用程序需要保存用戶的數據,比如Word需要把用戶文檔保存起來,以便下次繼續編輯或者拷貝到另一台電腦。

要保存用戶的數據,一個最簡單的方法是把用戶數據寫入文件。例如,要保存一個班級所有學生的信息,可以向文件中寫入一個CSV文件:

id,name,gender,score 1,小明,M,90 2,小紅,F,95 3,小軍,M,88 4,小麗,F,88

如果要保存學校所有班級的信息,可以寫入另一個CSV文件。

但是,随着應用程序的功能越來越複雜,數據量越來越大,如何管理這些數據就成了大問題:

  • 讀寫文件并解析出數據需要大量重複代碼;
  • 從成千上萬的數據中快速查詢出指定數據需要複雜的邏輯。

如果每個應用程序都各自寫自己的讀寫數據的代碼,一方面效率低,容易出錯,另一方面,每個應用程序訪問數據的接口都不相同,數據難以複用。

所以,數據庫作為一種專門管理數據的軟件就出現了。應用程序不需要自己管理數據,而是通過數據庫軟件提供的接口來讀寫數據。至于數據本身如何存儲到文件,那是數據庫軟件的事情,應用程序自己并不關心:

關系數據庫的四個組成部分(關系數據庫概述)1

數據模型

數據庫按照數據結構來組織、存儲和管理數據,實際上,數據庫一共有三種模型:

  • 層次模型
  • 網狀模型
  • 關系模型

層次模型就是以“上下級”的層次關系來組織數據的一種方式,層次模型的數據結構看起來就像一顆樹:

關系數據庫的四個組成部分(關系數據庫概述)2

網狀模型把每個數據節點和其他很多節點都連接起來,它的數據結構看起來就像很多城市之間的路網:

關系數據庫的四個組成部分(關系數據庫概述)3

關系模型把數據看作是一個二維表格,任何數據都可以通過行号 列号來唯一确定,它的數據模型看起來就是一個Excel表:

關系數據庫的四個組成部分(關系數據庫概述)4

随着時間的推移和市場競争,最終,基于關系模型的關系數據庫獲得了絕對市場份額。

為什麼關系數據庫獲得了最廣泛的應用?

因為相比層次模型和網狀模型,關系模型理解和使用起來最簡單。

關系數據庫的關系模型是基于數學理論建立的。我們把域(Domain)定義為一組具有相同數據類型的值的集合,給定一組域D1,D2,...,dn,它們的笛卡爾集定義為D1×D2×……×Dn={(d1,d2,...,dn)|di∈Di,i=1,2,...,n}, 而D1×D2×……×Dn的子集叫作在域D1,D2,...,Dn上的關系,表示為R(D1,D2,...,Dn),這裡的R表示$#%&^@!&$#;!~%¥%:(……算了,根本講不明白,大家也不用理解。

基于數學理論的關系模型雖然講起來挺複雜,但是,基于日常生活的關系模型卻十分容易理解。我們以學校班級為例,一個班級的學生就可以用一個表格存起來,并且定義如下:

關系數據庫的四個組成部分(關系數據庫概述)5

通過給定一個班級名稱,可以查到一條班級記錄,根據班級ID,又可以查到多條學生記錄,這樣,二維表之間就通過ID映射建立了“一對多”關系。

數據類型

對于一個關系表,除了定義每一列的名稱外,還需要定義每一列的數據類型。關系數據庫支持的标準數據類型包括數值、字符串、時間等:

關系數據庫的四個組成部分(關系數據庫概述)6

上面的表中列舉了最常用的數據類型。很多數據類型還有别名,例如,REAL又可以寫成FLOAT(24)。還有一些不常用的數據類型,例如,TINYINT(範圍在0~255)。各數據庫廠商還會支持特定的數據類型,例如JSON。

選擇數據類型的時候,要根據業務規則選擇合适的類型。通常來說,BIGINT能滿足整數存儲的需求,VARCHAR(N)能滿足字符串存儲的需求,這兩種類型是使用最廣泛的。

主流關系數據庫

目前,主流的關系數據庫主要分為以下幾類:

  1. 商用數據庫,例如:Oracle,SQL Server,DB2等;
  2. 開源數據庫,例如:MySQL,PostgreSQL等;
  3. 桌面數據庫,以微軟Access為代表,适合桌面應用程序使用;
  4. 嵌入式數據庫,以Sqlite為代表,适合手機應用和桌面程序。

SQL

什麼是SQL?SQL是結構化查詢語言的縮寫,用來訪問和操作數據庫系統。SQL語句既可以查詢數據庫中的數據,也可以添加、更新和删除數據庫中的數據,還可以對數據庫進行管理和維護操作。不同的數據庫,都支持SQL,這樣,我們通過學習SQL這一種語言,就可以操作各種不同的數據庫。

雖然SQL已經被ANSI組織定義為标準,不幸地是,各個不同的數據庫對标準的SQL支持不太一緻。并且,大部分數據庫都在标準的SQL上做了擴展。也就是說,如果隻使用标準SQL,理論上所有數據庫都可以支持,但如果使用某個特定數據庫的擴展SQL,換一個數據庫就不能執行了。例如,Oracle把自己擴展的SQL稱為PL/SQL,Microsoft把自己擴展的SQL稱為T-SQL。

現實情況是,如果我們隻使用标準SQL的核心功能,那麼所有數據庫通常都可以執行。不常用的SQL功能,不同的數據庫支持的程度都不一樣。而各個數據庫支持的各自擴展的功能,通常我們把它們稱之為“方言”。

總的來說,SQL語言定義了這麼幾種操作數據庫的能力:

DDL:Data Definition Language

DDL允許用戶定義數據,也就是創建表、删除表、修改表結構這些操作。通常,DDL由數據庫管理員執行。

DML:Data Manipulation Language

DML為用戶提供添加、删除、更新數據的能力,這些是應用程序對數據庫的日常操作。

DQL:Data Query Language

DQL允許用戶查詢數據,這也是通常最頻繁的數據庫日常操作。

語法特點

SQL語言關鍵字不區分大小寫!!!但是,針對不同的數據庫,對于表名和列名,有的數據庫區分大小寫,有的數據庫不區分大小寫。同一個數據庫,有的在Linux上區分大小寫,有的在Windows上不區分大小寫。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved