上篇文章介紹了關(guān)系模型的幾個(gè)概念,這篇介紹剩下的一點(diǎn)內(nèi)容禁舷。
關(guān)系模型的特征
- 列的同質(zhì)化
每一列的分量都來(lái)自于同一個(gè)域彪杉,具有同樣的數(shù)據(jù)類型毅往。 - 每一列的域可以相同,屬性必須不同
每一列的域可以是相同的派近,即允許多個(gè)列使用相同的域煞抬,但為了對(duì)這些列進(jìn)行區(qū)分,每列的屬性(列名)是必需不同的构哺,否則就無(wú)法區(qū)分了革答。類比到 DBMS,就是定義表時(shí)不能使用重復(fù)的字段曙强。 - 關(guān)系和列的位置無(wú)關(guān)
如“手機(jī)-電腦”和“電腦-手機(jī)”是同一個(gè)關(guān)系残拐。同樣,關(guān)系和行的位置也無(wú)關(guān)碟嘴,同樣的行處于不同的位置溪食,它們?nèi)允窍嗤年P(guān)系。 - 滿足屬性不可再分的第一范式
關(guān)系中不能出現(xiàn)復(fù)合的屬性娜扇。所謂復(fù)合屬性错沃,就是屬性的值也是一個(gè)關(guān)系,可以理解為表中套表雀瓢。
候選碼/候選鍵
候選碼/候選鍵是一個(gè)屬性組枢析,可以唯一標(biāo)識(shí)一個(gè)元組。如僅使用“姓名”無(wú)法唯一標(biāo)識(shí)學(xué)生刃麸,因?yàn)榭赡艽嬖谕膶W(xué)生醒叁,而使用“學(xué)號(hào)”就可以唯一表示學(xué)生了。當(dāng)然不止“學(xué)號(hào)”可以對(duì)學(xué)生進(jìn)行唯一標(biāo)識(shí)泊业,“姓名”+“家庭住址”也可以唯一進(jìn)行標(biāo)識(shí)把沼。
這些能夠唯一標(biāo)識(shí)元素的一個(gè)或者多個(gè)屬性的集合,就叫做候選碼或者候選鍵吁伺。最簡(jiǎn)單的情況饮睬,候選碼只有一個(gè),只包括一條屬性篮奄。最復(fù)雜的情況捆愁,候選碼由所有的屬性構(gòu)成,也叫做全碼(All Key)宦搬。
包含在候選碼中的屬性也叫做主屬性牙瓢,不包含在候選碼中的屬性也叫做非主屬性。
從候選碼中可以選出一個(gè)作為主碼/主鍵间校,DBMS 使用主鍵為線索來(lái)管理關(guān)系中的各個(gè)元組(現(xiàn)在知道主鍵是怎么來(lái)的了吧)矾克。
外碼/外鍵
假設(shè)在一個(gè)關(guān)系 R1 中,有一個(gè)屬性組憔足,存放的是另外一些關(guān)系(R2胁附,R3···)中的主鍵酒繁,那么這個(gè)屬性組就叫做 R1 的外碼/外鍵。
外鍵非常重要控妻,它是連接兩個(gè)關(guān)系的紐帶州袒。
一個(gè)關(guān)系,可以有多個(gè)外鍵弓候,但只能有一個(gè)主鍵郎哭。
關(guān)系完整性
回顧一下,關(guān)系模型研究的內(nèi)容為:
- 使用數(shù)學(xué)方法描述數(shù)據(jù)庫(kù)的基本結(jié)構(gòu)形式(Table/Relation)
- 使用數(shù)學(xué)方法描述 Table/Relation 與 Table/Relation 之間的各種操作(關(guān)系運(yùn)算)
- 使用數(shù)學(xué)方法描述實(shí)現(xiàn)這些操作應(yīng)該遵循的約束條件(完整性約束)
完整性約束是關(guān)系運(yùn)算的先決條件菇存,包含三個(gè)方面的內(nèi)容夸研。
實(shí)體完整性
一個(gè)關(guān)系如果定義了主碼/主鍵,那么主碼/主鍵不能為空依鸥。
參照完整性
關(guān)系的外碼/外鍵可以是空值亥至,但只要有取值,就必須是另一個(gè)關(guān)系中的主碼/主鍵贱迟,不能是其他的屬性值姐扮。
用戶自定義完整性
用戶自定義完整性是用戶在定義關(guān)系的時(shí)候給出的完整性約束條件,如屬性的類型衣吠,取值范圍茶敏,長(zhǎng)度等。
在 DBMS 中蒸播,當(dāng)向數(shù)據(jù)庫(kù)中插入數(shù)據(jù)或者修改數(shù)據(jù)時(shí)睡榆,會(huì)自動(dòng)執(zhí)行用戶自定義完整性的檢查。
對(duì)于三個(gè)完整性袍榆,其中實(shí)體完整性用來(lái)約束主鍵,參照完整性用來(lái)約束外鍵塘揣,在 DBMS 中包雀,這兩個(gè)完整性是在底層自動(dòng)支持的。對(duì)于用戶自定義完整性亲铡,需要用戶自己進(jìn)行定義才写,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),再由 DBMS 進(jìn)行檢查奖蔓。
總結(jié)
本文主要介紹了關(guān)系模型的特征赞草,以及候選碼/候選鍵,主碼/主鍵吆鹤,外碼/外鍵的知識(shí)厨疙,最后介紹了關(guān)系模型的完整性約束,這是進(jìn)行關(guān)系運(yùn)算的先決條件疑务,包括實(shí)體完整性沾凄,參照完整性和用戶自定義完整性梗醇。
完。