應用程式設計/資料庫
資料庫是一種資料結構,用於儲存組織資訊。大多數資料庫包含多個表,每個表可能包含多個不同的欄位。例如,公司資料庫可能包含用於產品、員工和財務記錄的表。這些表中的每一個都將具有與儲存在該表中的資訊相關的不同欄位。[1]
資料庫儲存為一個檔案或一組檔案。這些檔案中的資訊可以分解成記錄,每個記錄包含一個或多個欄位。欄位是資料儲存的基本單位,每個欄位通常包含與資料庫所描述的實體的某個方面或屬性相關的資訊。記錄也被組織成表,其中包含有關其各個欄位之間關係的資訊。雖然“資料庫”一詞被寬泛地應用於計算機檔案中的任何資訊集合,但嚴格意義上的資料庫提供了交叉引用功能。使用關鍵字和各種排序命令,使用者可以快速搜尋、重新排列、分組和選擇許多記錄中的欄位,以檢索或建立有關特定資料聚合的報告。[2]
資料庫相對於其他更簡單的儲存系統(如文字檔案和電子表格)的三大主要優勢是訪問、完整性和安全。
訪問是指使資料對使用者可用。
資料庫支援良好的資料訪問,因為
- 大量資料可以儲存在一個地方
- 多個使用者可以同時讀取和修改資料
- 資料庫是可搜尋和可排序的,因此可以快速輕鬆地找到您需要的資料
- 資料結構是可擴充套件的,並且可以根據需求進行修改
資料庫可以確保其包含的資料是正確的,或者具有完整性。
為了確保資料庫的完整性,每個更改或事務都必須符合一組稱為ACID的規則
- 原子性:在更改資料庫中的資料時,如果更改的任何部分失敗,則整個更改都將失敗,並且資料將保留在更改之前的狀態;這可以防止建立部分記錄
- 一致性:在可以更改資料庫中的資料之前,必須根據一組規則對其進行驗證
- 隔離性:資料庫允許同時進行多個更改,但每個更改都與其他更改隔離
- 永續性:一旦更改完成,資料就安全了,即使在系統故障的情況下也是如此
此外,資料庫將具有備份、分發和冗餘機制,以確保資料不會丟失。
雖然可以保護文字檔案或電子表格的訪問許可權,但一旦有人獲得對檔案的訪問許可權,他們就可以訪問該檔案中的所有資料。資料庫可以非常安全,包括能夠對資料庫的特定部分有訪問許可權,而其他部分沒有。
資料庫允許控制訪問許可權,允許使用者具有不同的許可權:例如,某些使用者可能能夠讀取資料,但不能寫入資料。
資料也可以進行分段,以便使用者只能訪問某些部分:例如,使用者可能能夠讀取員工的姓名和地址,但不能讀取他們的薪資資訊。
您能想到資料庫的其他用途嗎?在評論中分享您的想法。
在下一步中,您將探索一個關係資料庫示例,並檢視其中包含的資料。
關係模型是一個抽象模型,用於組織資料庫中的資料。為了控制對資料庫的訪問、寫入資料、執行查詢或執行與資料庫管理相關的任何其他任務,資料庫管理系統必須具有一些底層模型來定義其包含的資料的組織方式。實現關係模型的資料庫通常被稱為關係資料庫。關係模型長期以來一直是最複雜的資料組織模型,其廣泛應用最近才受到非關係型——或 NoSQL——資料模型的興起的影響。
關係模型中最基本的是關係,使用者和現代 RDBMS 將其識別為表。關係是一組元組,即表中的行,每個元組共享一組屬性,即列。列是關係資料庫中最小的組織結構,表示定義表中記錄的各個方面。因此,它們有更正式的名稱,稱為屬性。將每個元組視為表中包含的任何型別的人員、物件、事件或關聯的唯一例項可能會有所幫助。
域約束
如果屬性值沒有出現在相應的域中,或者其資料型別不正確,則可能會違反域約束。域約束指定在每個元組中,每個屬性的值必須是唯一的。這被指定為資料型別,包括標準資料型別整數、實數、字元、布林值、可變長度字串等。
鍵約束
可以唯一標識關係中元組的屬性稱為表的鍵。關係中不同元組的屬性值必須是唯一的。
引用完整性約束
DBMS 中的引用完整性約束基於外部索引鍵的概念。外部索引鍵是關係的重要屬性,應該在其他關係中引用。引用完整性約束表示關係引用不同關係或相同關係的鍵屬性的情況。但是,該鍵元素必須存在於表中。
一些 relvars(關係變數)及其屬性的理想化、非常簡單的示例描述
- Customer (Customer ID, Tax ID, Name, Address, City, State, Zip, Phone, Email, Sex)
- Order (Order No, Customer ID, Invoice No, Date Placed, Date Promised, Terms, Status)
- Order Line (Order No, Order Line No, Product Code, Qty)
- Invoice (Invoice No, Customer ID, Order No, Date, Status)
- Invoice Line (Invoice No, Invoice Line No, Product Code, Qty Shipped)
- Product (Product Code, Product Description)
在這個設計中,我們有六個 relvars:Customer、Order、Order Line、Invoice、Invoice Line 和 Product。粗體下劃線屬性是候選鍵。非粗體下劃線屬性是外部索引鍵。
通常,會選擇一個候選鍵作為主鍵,並優先使用它,而其他候選鍵被稱為備用鍵。
候選鍵是用於唯一標識的識別符號,它強制確保沒有元組會被複制;否則,透過違反集合的基本定義,會將關係變成其他東西,即一個包。 外部索引鍵和超鍵(包括候選鍵)都可以是複合的,也就是說可以由多個屬性組成。下面是用表格形式描述了我們的示例 Customer 關係變數的關係;關係可以被認為是關係變數的一個值。
屬性 - 描述和表徵記錄的特定特徵。
提交 - 結束關係資料庫管理系統 (RDBMS) 中的事務,並將所有更改對其他使用者可見。[7]
連線 - 只讀屬性提供遊標物件使用的 SQLite 資料庫連線。透過呼叫 con.cursor() 建立的遊標物件將具有一個連線屬性,該屬性引用con。
遊標 - 資料庫遊標是一個物件,它能夠遍歷結果集中的行。它允許你處理查詢返回的單個行。
資料庫 - 有組織的資料集合。[7]
資料庫管理系統 - 有多種型別的 DBMS(關係型、面向物件型等),但每個變體都允許讀取、插入、更新、刪除資料庫,以及一般的管理/安全工具。[7]
刪除 - 從表中刪除一個或多個記錄。[7]
標題 - 一組屬性。[7]
插入 - 將一個或多個記錄新增到單個表中。[7]
主鍵 - 一個或多個列(屬性)的特定選擇,其資料唯一地標識表(關係)中的每一行(元組)。[7]
查詢 - 根據特定條件檢索/建立資料。查詢必須遵循 SQL 規則和語法。[7]
檢索 - 以可以直接使用或供其他應用程式進一步處理的形式提供資訊。[7]
記錄 - 資料庫表中實體的一個例項。[7]
模式 - 一組完整性約束,它結構化並建立資料庫中資料的規則。[7]
選擇 - 一個常用的 DQL 命令,用於從一個或多個表中返回記錄的結果集。[7]
SQL - 結構化查詢語言,用於從關係資料庫中查詢資料的程式設計標準。[7]
SQLite - 嵌入到程式中的關係資料庫管理系統 (簡稱 RDBMS)。[7]
更新 - 更改表中一個或多個記錄的指定資料。[7]
檢視 - 資料庫中的一組行,儲存在資料上的查詢,資料庫使用者可以像查詢持久資料庫集合物件一樣查詢它。[7]
- ↑ https://techterms.com/definition/database
- ↑ https://www.britannica.com/technology/database
- ↑ https://www.futurelearn.com/info/courses/introduction-to-databases-and-sql/0/steps/75849
- ↑ https://www.digitalocean.com/community/tutorials/what-is-the-relational-model
- ↑ https://www.guru99.com/relational-data-model-dbms.html
- ↑ 關係模型
- ↑ a b c d e f g h i j k l m n o p 無效的
<ref>標籤;未為名為:0的 ref 提供文字