- Access 2013 數據庫管理與應用從新手到高手
- 吳華 楊繼萍 葛春雷等編著
- 2478字
- 2021-03-12 17:20:08
1.3 關系模型
關系模型對數據庫的理論和實踐產生很大的影響,并且比層次和網狀模型有明顯的優點,成為當今市場的主流。若要深入學習Access 2013相關內容,則了解及掌握關系模型理論是非常必要的。
1.3.1 關系型數據庫
關系數據庫(Relational DataBase,RDB)是基于關系模型的數據庫。在計算機中,關系數據庫是數據和數據庫對象的集合。
1.Access數據庫結構
Access數據庫是一個典型的關系數據庫,是由數據表和數據表之間的關聯組成的。其中數據表通常是一個由行和列組成的二維表,每一個數據表分別說明數據庫中某一特定的方面或部分的對象及其屬性。
數據表中的行通常叫做記錄或元組,它代表眾多具有相同屬性的對象中的一個;數據庫表中的列通常叫做字段或屬性,它代表相應數據庫表中存儲對象的共有的屬性。

在【庫存信息】表中,主要通過產品的類型、特性等內容,來存儲相關信息。其中,每條記錄代表一個產品的完整信息,每一個字段代表產品的屬性。這樣就組成了一個相對獨立于其他數據表之外的產品信息表。
另外,用戶在該數據表中進行添加、刪除或修改記錄等操作時,不會影響到數據庫中其他的數據表內容。
2.實體及實例集
實體是客觀世界中存在的且可互相區分的事物。實體可以是人也可以是實物,也可以是抽象概念。例如:職工、學生、教師、課程等都是實體。
同一類實體的所有實例就構成該對象的實體集。實體集是實體的集合,由該集合中實體的結構或形式表示,而實例則是實體集中的某個特例。例如,【產品編號】為A3-3的產品內容,則是【庫存信息】表實體集中的一個實例,通過其屬性值表示。

通常實體集中有多個實體實例。例如,數據庫中存儲的產品的各個信息,是“庫存信息”實體集中的實例。
在實體集中,包含有多個實例。而對數據庫來說,則該數據表,有許多記錄內容。因此,一個實例也可以看作數據庫中的一條記錄。
3.表及特性
數據庫將關系術語作為表的同義詞,所以表也叫關系,可以永久地保存其內容。
而在Access數據庫中,通過數據的表視圖可以清楚、直觀地看到數據的實體關系,并且簡化了數據庫設計的任務。

一般情況下,數據表具有下列特征。
?表被看作由行和列組成的二維結構。
?表的每一行(記錄)都代表實體集中的單一實體的具體值。
?表的每一列(字段)都代表一種屬性,每一列的名稱都不相同。
?每一行與列相交處(單元格)都代表一個單一數據值。
?列中的所有值都必須遵循相同的數據格式(數據類型)。
?每一列都有值的具體范圍,被稱為屬性域。
?在數據表中,用戶可以隨意調整行和列的順序。
?每個表都必須具有唯一地標識每一行的屬性和屬性組合。
4.鍵
鍵(key)是關系中用來標識行的一列或者多列。鍵可以是唯一(Unique)的,也可以不唯一(NonUnique)。下表中描述了關系數據庫中,一些關于鍵的內容。

1.3.2 關系類型
在關系模型中,實體和實體間的聯系都是用關系表示的。也就是說,二維表格中既存放著實體本身的數據,又存放著實體間的聯系。關系不但可以表示實體間一對多的聯系,也可以通過建立關系間的關聯,表示多對多的聯系。
1.一對一關系
如果對于實體集A中的每一個實例,實體集B中至多有一個(也可以沒有)實體與之聯系,反之亦然,則稱實體集A與實體集B具有一對一聯系,記為1:1。
例如,在【庫存信息】表中,【產品編號】字段與【出貨單明細】表中,【產品編號】字段之間的內容是單一的,并且產品與產品編號之間具有一對一聯系。

2.一對多關系
如果實體集A中的每一個實例,實體集B中有n個實例(n≥0)與之聯系。反之,對于實體集B中的每一個實體,實體集A中至多只有一個實例與之聯系,則稱實體集A與實體集B具有一對多聯系,記為1:n。
例如,在【出貨單】表中的【客戶ID】字段的多個編號,可以在【客戶信息】表的【客戶】字段中找到相對應的內容。

3.多對多關系
如果實體集A中的每一個實例與實體集B中有n個實例(n≥0)與之聯系。反之,對于實體集B中的每一個實例,實體集A中也有m個實例(m≥0)與之聯系,則稱實體集A與實體集B具有多對多聯系,記為m:n。
例如,在【借閱記錄】表中每本書對應的讀者不相同,而在【讀者信息】表中每位讀者對應的書籍也不相同。因此,兩個數據表之間,則具有多對多關系。

1.3.3 關系代數
關系代數是一種抽象的查詢語言,是關系數據操縱語言的一種傳統表達方式。它用于對關系的運算,進行表達式查詢。
關系運算符有4類:集合運算符,專門的關系運算符,算術比較符和邏輯運算符。

根據運算符的不同,關系代數運算可分為傳統的集合運算和專門的關系運算。
1.傳統的集合運算
傳統的集合運算是從關系的水平方向進行的,主要包括:并、交、差及廣義笛卡兒積。
?并(Union) 關系R與S的并記作:RUS={t∈R V t∈S}
?差(Difference) 關系R與S的差記作:R-S={t∈R∧tS}
?交(Intersection) 關系R與S的交記作:RS={t∈R∧t∈S}
?廣義笛卡兒積(Extended Cartesian Product) 兩個分別為n目和m目的關系R和S的廣義笛卡兒積是一個(n+m)列的元組的集合。元組的前n列是關系R的一個元組,后m列是關系S的一個元組。若R有K1個元組,S有K2個元組。則R和S的廣義笛卡兒積有(K1×K2)個元組。記作:R×S={ trts | tr∈R∧ts∈S}
2.專門的關系運算
專門的關系運算可以從關系的水平方向進行運算,又可以從關系的垂直方向運算。下面我們來介紹常見的3種方法。
?選擇運算
選擇是從關系中查找符合指定條件行的操作。以邏輯表達式為選擇條件,將篩選滿足表達式的所有記錄。選擇操作的結果構成關系的一個子集,是關系中的部分行,其關系模式不變。選擇操作是從二維表中選擇若干行的操作。
?投影運算
投影是從關系數據表中,選取若干個屬性的操作。而所選擇的若干屬性,將形成一個新的關系數據表,其關系模式中屬性個數由用戶來確定,或者排列順序不同,同時也可能減少某些元組。因為排除了一些屬性后,特別是排除了關系中關鍵字屬性后,所選屬性可能有相同值,出現相同的元組,而關系中必須排除相同元組,從而有可能減少某些元組。
?連接運算
連接是將兩個或者兩個以上的關系數據表的若干屬性,拼接成一個新的關系模式的操作。對應的新關系中,包含滿足連接條件的所有行。連接過程是通過連接條件來控制的,連接條件中將出現兩個關系數據表中的公共屬性名,或者具有相同語義、可比的屬性。