1. 關聯式資料庫由表組成,各表名稱唯一。
2. 簡單的表的例子:instructor表,由四列組成:id、name、dept_name、salary,表中的每一行都記錄了一位老師的資訊。再比如course
表,由course id
,title
,dept name
, and
credits
四列組成。注意到,
instructor
表中每個老師通過
id來唯一區分,
course
表中每門課由
course_id
來唯一區分。
3. 再來看
prereq
表,記錄了要上某一門課的話,得先上哪些別的課。該錶由
course id
andprereq id
兩列組成。 prereq表中的一行記錄了兩門課程之間某種的「關係」——要上這門課得先上另外一門課。從同樣的角度來看instructor表,這個表中每乙個id都對應著某個老師的姓名、其所屬學院以及他的工資,也就是說,這個表中的行記錄了教師的id與其姓名、院系、工資之間的對應「關係」。
4. 一般來說,表中的行代表了一組值之間的某種關係。而表則是這種關係的集合,從這個角度來看,表和數學意義上的「關係」含義十分接近(數學意義上的關係是什麼?),這也是「關係模型」中的關係二字的由來。
5. 在數學上,我們稱一組值為乙個tuple(元組)。n個值之間的關係在數學上可表示為乙個「n元組」——由n個值組成的元組——也就是表裡的一行。
6. 一般概念與關係模型中的概念之間的對應關係:表——關係、行——元組、列——屬性attribute。
7. 關係(relation)與關係例項(relation instance)。relation——表的結構,或者說列之間的關係。relation instance ——行的集合,具體的資料。
8. 關係是元組的集合,在數學上,集合裡的元素是不分順序的,因此關係裡的元組也不講順序。兩個關係是否相等,只看其包含的元組是否相同,不考慮順序。
9. 每個屬性可取的值的範圍稱為那個屬性的值域domain。比如instructor表中salary欄位的值域是所有可取的工資值的集合。
10. 關係的屬性的值域應當是原子化的atomic——當乙個值域裡的元素可以被視為不能再細分單元時我們說這個值域是原子化的。假設instructor表中有phone_number屬性用於儲存乙個老師使用的多個**號碼,那麼phone_number屬性的值域就不是原子化的,因為這個值域裡的元素是一組**號碼,那就可以進一步劃分為單個的**號碼。
11. 原子化是相對的,還是以**號碼為例,假設phone_number欄位現在只許存乙個**號碼,如果把這個號碼視為乙個整體,那麼其值域就是原子化的,如果把乙個**號碼看成由幾部分組成,比如座機號碼就可分為區號和**號碼,那**號碼本身又是非原子化的了。乙個屬性的值域本身是什麼不是重點,重點是我們如何使用這個值域。
12.null表示值未知或者值不存在。仍以instructor表的phone_number屬性為例,如果乙個老師不用**,或者我們不知道他的**號碼,那麼在表裡頭就只能用null來表示他的phone_number屬性值。null值的使用會給資料訪問和更新帶來許多不便,應該盡量避免在資料中使用null值。
關係 關係模式 關聯式資料庫
表student 在關係模型的術語中,關係用來指代表,而元組用來指代行。類似地,屬性指代的是表中的列。在表student中有五個屬性 sno sname s sage和sdept。我們用關係例項這個術語來表示乙個關係的特定例項,也就是所包含的一組特定的行。表student的例項中有5個元組,對應5個...
關聯式資料庫與非關聯式資料庫
關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...
關聯式資料庫與非關聯式資料庫
關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...