第3章 關(guān)系模型的基本概念
3.1 關(guān)系的定義與性質(zhì)
3.1.1 關(guān)系的定義
域(Domain):是值的集合
笛卡爾積(Cartesian Product):集合中各元素之間一切可能的匹配組合構(gòu)成的集合。
笛卡爾積中包含元組(Tuple)。元組個(gè)數(shù)稱(chēng)為笛卡爾積的基數(shù)(Cardinality)。元組由元組分量組成,元組分量是元組的值。參與笛卡爾積的域的個(gè)數(shù),稱(chēng)為元數(shù)(Arity)或度。
關(guān)系:也稱(chēng)為關(guān)系模式的一個(gè)實(shí)例。
域中的任一個(gè)元素稱(chēng)為關(guān)系中的一個(gè)元組。
3.1.2 鍵(Key):即關(guān)鍵字
超鍵(Super Key):在一個(gè)關(guān)系中能夠唯一標(biāo)識(shí)元組的屬性組合
候選鍵(Candidate Key):不含多余屬性的超鍵
主鍵(Primary Key):用戶選做元組標(biāo)識(shí)的那個(gè)候選鍵
外鍵(Foreign Key):關(guān)系R中某個(gè)屬性組合A不是關(guān)系R的候選鍵,而是關(guān)系S的候選鍵,則稱(chēng)A為R的外鍵
3.1.3 關(guān)系的性質(zhì)
關(guān)系中的每個(gè)元組分量必須是原子的
關(guān)系中不允許出現(xiàn)相同的元組
定義一個(gè)關(guān)系模式時(shí)可隨意指定屬性的排列次序
在一個(gè)關(guān)系中元組的排列次序可任意交換
關(guān)系模式相對(duì)穩(wěn)定,關(guān)系實(shí)例則隨時(shí)間的推移而不斷地變化
3.2 關(guān)系模型
3.2.1 從ER圖導(dǎo)出關(guān)系模型數(shù)據(jù)結(jié)構(gòu)
兩實(shí)體集間1:N聯(lián)系
將“1”方關(guān)系的“主鍵”納入“N”方關(guān)系中作為“外鍵”,同時(shí)把聯(lián)系的屬性也一起納入“N”方關(guān)系中。
兩實(shí)體集間M:N聯(lián)系
將“聯(lián)系”單獨(dú)建立一個(gè)關(guān)系,需要把聯(lián)系關(guān)聯(lián)的雙方實(shí)體的“主鍵”納入到“聯(lián)系”的關(guān)系中作為“主鍵”和“外鍵”。
兩實(shí)體集間1:1聯(lián)系
“聯(lián)系”不單獨(dú)建立關(guān)系,將其中一個(gè)實(shí)體集的主鍵納入另一個(gè)實(shí)體集作為外鍵。
“聯(lián)系”單獨(dú)建立關(guān)系,將兩個(gè)實(shí)體集的主鍵都納入關(guān)系中作為主鍵和外鍵。
同一實(shí)體集內(nèi)各實(shí)體間1:N聯(lián)系
在實(shí)體集內(nèi)增加一個(gè)屬性,用來(lái)表示與當(dāng)前實(shí)體相聯(lián)系的另一個(gè)實(shí)體的“主鍵”
同一實(shí)體集內(nèi)各實(shí)體間M:N聯(lián)系
“聯(lián)系”單獨(dú)建立關(guān)系,將相互聯(lián)系的雙方實(shí)體的“主鍵”都納入到關(guān)系中。
多個(gè)實(shí)體集間M:N多元聯(lián)系
“聯(lián)系”單獨(dú)建立關(guān)系,將相互聯(lián)系的所有實(shí)體的“主鍵”都納入到關(guān)系中。
3.2.2 關(guān)系模型的體系結(jié)構(gòu)
關(guān)系概念模式
由若干個(gè)關(guān)系模式組成的集合,它描述關(guān)系數(shù)據(jù)庫(kù)中全部數(shù)據(jù)的整體邏輯結(jié)構(gòu)。
關(guān)系外模式
關(guān)系外模式是關(guān)系概念模式的一個(gè)邏輯子集。描述關(guān)系數(shù)據(jù)庫(kù)中數(shù)據(jù)的局部邏輯結(jié)構(gòu)。
關(guān)系概念模式與關(guān)系外模式之間的映射在外模式中描述。
在關(guān)系數(shù)據(jù)庫(kù)中,一個(gè)用戶可以使用的全部的“表”和“虛表”構(gòu)成這個(gè)用戶的數(shù)據(jù)視圖,視圖中所有“表”和“虛表”的框架組成數(shù)據(jù)庫(kù)的外模式。
系統(tǒng)把“虛表”的定義存儲(chǔ)在數(shù)據(jù)字典中。
關(guān)系內(nèi)模式
關(guān)系存儲(chǔ)時(shí)的基本組織方式是文件,關(guān)系中的元組對(duì)應(yīng)文件中的記錄。
關(guān)系概念模式和關(guān)系內(nèi)模式之間的映射在內(nèi)模式中描述。
3.2.3 關(guān)系模型的三類(lèi)完整性約束規(guī)則
實(shí)體完整性約束規(guī)則
關(guān)系中不允許出現(xiàn)相同的元組,在組成主鍵的屬性上也不允許取空值
參照完整性約束規(guī)則
不能引用不存在的實(shí)體,又稱(chēng)為引用完整性
用戶定義的完整性約束規(guī)則
針對(duì)某些具體數(shù)據(jù)的約束規(guī)則,主要是保證數(shù)據(jù)的語(yǔ)義要求。
3.2.4 關(guān)系模型的形式定義
關(guān)系模型是一種結(jié)構(gòu)數(shù)據(jù)模型,是能夠在計(jì)算機(jī)中真正實(shí)現(xiàn)的模型,有著嚴(yán)格的形式化定義。
關(guān)系模型的組成
數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)的表達(dá)方式和數(shù)據(jù)聯(lián)系的實(shí)現(xiàn)方式。
數(shù)據(jù)操作:檢索和更新(即插入、刪除和修改)兩大類(lèi)操作。
數(shù)據(jù)完整性約束:給出數(shù)據(jù)及聯(lián)系的制約與依賴(lài)規(guī)則,保證數(shù)據(jù)的正確性。
3.3 關(guān)系數(shù)據(jù)語(yǔ)言
3.3.1 關(guān)系數(shù)據(jù)描述語(yǔ)言(DDL)
問(wèn)答式DDL
通過(guò)人機(jī)對(duì)話建立關(guān)系模式,簡(jiǎn)單易學(xué),但是人工干預(yù)多,速度慢。
語(yǔ)言描述式DDL
使用源語(yǔ)句描述定義關(guān)系模式的內(nèi)容,再編譯成目標(biāo)模式。
3.3.2 關(guān)系數(shù)據(jù)操縱語(yǔ)言(DML)
DML的特點(diǎn)
操作對(duì)象與操作結(jié)果都是關(guān)系
語(yǔ)言完備性及非過(guò)程性
語(yǔ)言所提供的運(yùn)算(或操作)可以存取數(shù)據(jù)庫(kù)中的任何數(shù)據(jù)及數(shù)據(jù)間的聯(lián)系信息。
關(guān)系代數(shù)和關(guān)系演算都是衡量關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言完備性的標(biāo)準(zhǔn)
用戶在編寫(xiě)應(yīng)用程序時(shí),只需要提出“做什么”,不需要說(shuō)明“怎么做”,就稱(chēng)這種語(yǔ)言的非過(guò)程性級(jí)別高。
語(yǔ)言建立在嚴(yán)密的數(shù)學(xué)理論基礎(chǔ)上
用關(guān)系代數(shù)運(yùn)算表達(dá)查詢(xún),查詢(xún)以集合理論為基礎(chǔ)
用關(guān)系演算公式表達(dá)查詢(xún),查詢(xún)以數(shù)理邏輯謂詞演算為基礎(chǔ)
3.3.3 標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)語(yǔ)言SQL
SQL介紹
SQL是一種介于關(guān)系代數(shù)與關(guān)系演算之間的語(yǔ)言
SQL是已經(jīng)被認(rèn)可的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)語(yǔ)言
備注:
《數(shù)據(jù)庫(kù)技術(shù)基礎(chǔ)與應(yīng)用(第2版)》的豆瓣鏈接https://book.douban.com/subject/2995584/