資料庫 關係型資料庫

2021-08-18 21:51:19 字數 3449 閱讀 7858

資料之間的聯絡也可使用關係來表示增強了關聯式資料庫邏輯檢視的應用。關係是一種數學上的結構,但對於使用者而言,將其看作「  "表" 則更容易理解。表是由行和列構成的二維結構。由於關係模型的建立者 e.f.codd 使用關係作為表的同義詞,因此表也被稱為關係。表是邏輯關係的永久化表示四,即關係的內容可以永久儲存。就表使用者而言,表包含一組相關的實體發生,即表是乙個實體集。這是由於這個原因,"實體集" 和 "表" 常常替換使用。

表檢視使得發現和定義實體和聯絡變得簡單,從而大大簡化了資料庫設計任務。

資料字典是對資料庫中所有表的詳細描述。因此,資料字典至少應包含系統中每張表的所有屬性名稱和特徵。簡言之,資料字典包含元資料,即關於資料的資料。資料字典有時也稱為 "資料庫設計者的資料庫",因為它記錄了表和表結構的設計決定。

與資料字典相似,系統目錄(system catalog)也包含元資料。系統目錄稱為詳細的系統資料字典,用於描述資料庫中所有的物件,包括表名、表的建立者和建立時間、每張表中列的數量、每個列的資料型別、索引檔名稱、索引建立者、授權使用者和訪問許可權等資料。由於系統目錄包含所有需要的資料字典資訊,因此術語 "系統目錄" 和 "資料字典" 常常混用。事實上,當前關聯式資料庫軟體一般只提供系統目錄,我們可以從中匯出設計者的資料字典資訊。系統目錄實際上是乙個系統建立的資料庫,其中的表儲存了使用者/設計者建立的資料庫特徵和內容。因此,系統目錄表可以像任何使用者/設計者建立的表一樣進行查詢。

實際上,系統目錄會自動產生資料庫文件。當向資料庫新增乙個新錶時,rdbms 會檢查文件以清除多義詞和同義詞。如 boar 和 bore,或者是拼寫相同但意義不同的詞,如 fair(意思是 "just")和 fair(意思是 "festival")。在資料庫上下文中,多義詞是指相同屬性名稱標記不同屬性。為了減少混亂,應避免在資料庫中出現多義詞。在這個意義上講,資料字典很有用。

同義詞是多義詞的反義詞,是指使用不同名稱描述相同屬性。例如,car 和 auto 都指汽車。資料庫也應避免出現同義詞。

在關係模型中,碼是很重要的概念,它們用於唯一標識表中的每一行。另外,它們也用於建立表與表之間的聯絡,以保證資料的完整性。

碼(key)由乙個或多個能夠決定所有其他屬性的屬性組成。碼的作用體現在 "決定"(determination)概念上。"決定" 概念非常重要,因為它還用於決定關聯式資料庫的乙個核心概念——函式依賴(functional dependency)。函式依賴可以用簡單定義為:如果屬性 a 決定屬性 b,那麼屬性 b 函式依賴於屬性 a。更準確的定義是:如果列 a 的每個值決定且是唯一 乙個列 b 中的值,則稱屬性 b 函式依賴於屬性 a。

函式依賴的定義可進一步推廣到決定屬性值在表中不止出現一次的情況,因此函式依賴也可進一步定義為:如果表中所有行在屬性 a 上的取值相同且在屬性 b 上的取值也相同,則稱 a 決定 b,則 b 函式依賴於 a。

定義函式依賴時可能出現多個屬性情形,即碼可能由多個屬性組成,稱由多個屬性組成的碼為復合碼(composite key)。碼中的任何屬性稱為碼屬性(key attribute)。

由於可能存在復合碼,可進一步定義完全函式依賴:如果屬性 b 函式依賴於復合碼 a,但不依賴於復合碼的任何子集,則稱屬性 b 函式依賴於 a。

在更廣泛的碼定義中,還有幾類特殊的碼:

在乙個表中,每個主碼值必須是唯一的,以保證主碼能夠唯一識別每一行。此時,稱該錶滿足實體完整性。為保證實體完整性,主碼不允許為空值。

不允許在主碼中出現空值,也盡可能避免在其他屬性上出現空值。在處理非碼屬性時,很少有不能合理避免出現空值的情形。另外,兩個實體可能由於發生聯絡而出現空值的情形。但即便如此,還是應盡量少用空值。事實上,如果乙個表存在空值,則常常表明其資料庫設計存在問題。

由於空值表示不同含義,因此若使用不當,則可能出現問題。乙個空值可表示:

關聯式資料庫允許存在一定可控冗餘,在不同表之間利用共享屬性實現連線。只有當屬性值是不必要重複時,才被認為是資料冗餘。

關聯式資料庫也可以用關係模式來表示。關係模式(relational schema)是用文字方式表示表,即每張錶用表名和緊跟其後用圓括號括起來的屬性列表表示,且主碼屬性用下劃線標識。

vendor(vend_code,vend_contact,vend_areacode,vend_phone)

關聯式資料庫完整性規則對設計具有良好結構的資料庫來說非常重要。許多(但不是所有)rdbms 會強制自動執行完整性規則。

在關聯式資料庫中,索引(index)是一種用於邏輯訪問表中元組的有序組織的資料結構。在任何情況下,索引都是用來快速定位所需物件的位置。索引是由索引碼(index key)和一組指標(point)組成。實際上,索引碼是索引的參考點。更正式地,索引是一種碼和指標的有序組織。每個索引碼都指向以碼標識的資料的位置。

如下 painting 表,如果沒有索引,則必須逐行檢查 painting 表,檢查每行的 painter_num 是否與所要查詢畫家的 painter_num 相同。然而,如果以 painter_num 作為索引碼對 painter 表建立了索引,則只需在索引中查詢對應的 painter_num 及包含的指標。

從上圖可以看出,第乙個 painter_num 索引碼值 123 可在 painting 表的第 1、2 和 4 個記錄中找到,而第二個 painter_num 索引碼值 126 可在 painting 表的第 3 和 5 個記錄中找到。

索引的用途:

在 dbms 中,索引對主碼的實現也起著重要作用。當定義一張表的主碼時,dbms 自動對宣告的主碼列建立唯一索引。唯一索引(unique index)是指只有乙個指標值與索引碼相對應的索引。乙個表可以擁有很多索引,但是每個索引只與一張表相關。索引碼可以包含多個屬性(復合索引)。

需要建立哪些索引:

索引數目不宜太多:

外連線:不僅保留向匹配的全部元組對,而且保留不能匹配的元組,並將其他表的不匹配值置為空值。

聯絡可以分為一對一(1:1)、一對多(1:m)和多對多(m:n 或 m:m)3 種型別。

關係模型不能直接支援多對多(m:n)聯絡。然而,m:n 聯絡可以通過建立乙個新的實體、並將該實體與原先兩個實體分別建立 1:m 聯絡來實現。

可以通過建立乙個復合實體以避免多對多(m:n)聯絡。復合實體也稱橋接實體或聯合實體。由於復合表用於與 m:n 聯絡中的原表進行連線,所以復合實體應至少報貨外碼,即原表的主碼。在定義復合表的主碼時,資料庫設計人員有兩種選擇:使用外碼的組合或建立乙個新的主碼。

正確使用外碼是控制資料冗餘的關鍵。雖然外碼無法完全消除資料冗餘(因為外碼值重複多次),但是正確使用外碼可以將資料冗餘最小化,從而盡可能減少出現資料異常的可能。資料庫設計人員必須協調好 3 個相互矛盾的需求:設計簡潔、處理速度和資訊需求。正確的資料倉儲設計要求仔細定義和控制資料冗餘。但是,無論如何描述資料冗餘,都需要採取正確的措施及認真控制才能減低其產生破壞的可能性。

關係型資料庫 非關係型資料庫

關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...

關係型資料庫 非關係型資料庫

2019 02 25 20 38 36 關係型資料庫和非關係型資料的比較 一 關係型資料庫 關係型資料庫最典型的資料結構是表,由二維表及其之間的聯絡所組成的乙個資料組織 優點 1 易於維護 都是使用表結構,格式一致 2 使用方便 sql語言通用,可用於複雜查詢 3 複雜操作 支援sql,可用於乙個表...

資料庫 關係型資料庫

關係型資料庫 使用資料模型建立起來的資料結構。瓶頸 a.對資料庫高併發讀寫的需求 b.對海量資料的高效率儲存和訪問的需求 c.對資料庫的高擴充套件性和高可用性的需求 nosql 全稱 not only sql 非關係型資料庫,目的是使用簡單api進行資料儲存,儲存自由 可以儲存大量資料。特點 a.可...