2016年計(jì)算機(jī)二級(jí)公共基礎(chǔ)學(xué)習(xí)教程:關(guān)系代數(shù)

字號(hào):


    (三)關(guān)系代數(shù)
    1.關(guān)系模型的基本操作
    關(guān)系是由若干個(gè)不同的元組組成的,因此關(guān)系可看作元組的集合。N元關(guān)系是一個(gè)n元有序組的集合。
    設(shè)有一個(gè)n元關(guān)系R,它有n個(gè)域,分別是D1、D2、……、Dn,此時(shí),它們的笛卡爾集是:
    集合可看作是域的笛卡爾積的子集,。
    關(guān)系模型的四種操作是:
    插入
    刪除
    修改
    查詢
    可將它們分解為六種基本操作:
    關(guān)系的屬性指定
    關(guān)系的元組選擇
    兩個(gè)關(guān)系的合并運(yùn)算
    關(guān)系的查詢
    關(guān)系元組的插入
    關(guān)系元組的刪除
    2.關(guān)系模型的基本運(yùn)算
    1)插入
    插入操作可看作是集合的并運(yùn)算。即在原有的關(guān)系R中并入要插入的元組R’,是這兩個(gè)元組的并運(yùn)算: R∪R’
    2)刪除
    在關(guān)系R中刪除元組R’,可看作是兩個(gè)關(guān)系的差運(yùn)算:R-R’
    3)修改
    修改關(guān)系R中的元組的內(nèi)容的操作:先將要修改的元組R’從關(guān)系R中刪除,再將修改后的元組R”插入到關(guān)系R中,即操作為: (R-R’)∪R"
    4)查詢
    插入運(yùn)算無法通過傳統(tǒng)的集合運(yùn)算來表示,需要專門的關(guān)系運(yùn)算來實(shí)現(xiàn)。
    (1)投影運(yùn)算
    投影運(yùn)算,是從關(guān)系中指定若干個(gè)屬性組合成一個(gè)新的關(guān)系的操作。投影操作后得到一個(gè)新的關(guān)系,其關(guān)系模式中包含的屬性通常比原來的關(guān)系少,或者,與原來的關(guān)系具有不同的屬性順序。
    投影是從垂直的角度進(jìn)行運(yùn)算,即從列的角度進(jìn)行運(yùn)算,投影運(yùn)算基于一個(gè)關(guān)系,是一個(gè)一元運(yùn)算。
    (2)選擇
    選擇,是從關(guān)系中查找滿足條件的元組。選擇的條件是通過邏輯表達(dá)式進(jìn)行描述,邏輯表達(dá)式值為真的元組被選出。
    選擇是從行的角度進(jìn)行的運(yùn)算,即從水平方向進(jìn)行元組的抽取。選擇基于一個(gè)關(guān)系,得到的結(jié)果可以形成一個(gè)新的關(guān)系,它的關(guān)系模式與原關(guān)系相同,但是原關(guān)系的一個(gè)子集。例如,從學(xué)生表中查找女同學(xué)的信息。
    (3)笛卡爾積運(yùn)算
    兩個(gè)關(guān)系的合并操作可以用笛卡爾積表示。設(shè)有n元關(guān)系R及m元關(guān)系S,它們分別有p、q個(gè)元組,則關(guān)系R和關(guān)系S的笛卡爾積為R×S,新關(guān)系是一個(gè)n+m元關(guān)系,元組個(gè)數(shù)是p×q,由R和S的有序組合而成。
    3.關(guān)系代數(shù)中的擴(kuò)充運(yùn)算
    1)交運(yùn)算
    關(guān)系R與關(guān)系S經(jīng)交運(yùn)算后所得到的關(guān)系是既在R中又在S中的元組組成,記為 。
    2)除運(yùn)算
    如果將笛卡爾積運(yùn)算看作乘運(yùn)算的話,除運(yùn)算即是它的逆運(yùn)算。當(dāng)關(guān)系T=R×S時(shí),則可將運(yùn)算寫成:
    T÷R=S或T/R=S
    S稱為T除以R的商。T能被除的充分與必要條件是:T中的域包含R中的所有屬性,T中有一些域不出現(xiàn)在R中。
    在除運(yùn)算中S的域由T中那些不出現(xiàn)在R中的域所組成,對(duì)于S中任一有序組,由它與關(guān)系R中每個(gè)有序組所構(gòu)成的有序組均出現(xiàn)在關(guān)系T中。
    3)連接與自然連接運(yùn)算
    聯(lián)接是關(guān)系的橫向運(yùn)算。聯(lián)接運(yùn)算將兩個(gè)關(guān)系橫向地拼接成一個(gè)更寬的關(guān)系,生成的新關(guān)系中有滿足聯(lián)接條件的所有元組。
    聯(lián)接運(yùn)算通過聯(lián)接條件來控制,聯(lián)接條件中將出現(xiàn)兩個(gè)關(guān)系中的公共屬性,或者具有相同的域、可比的屬性。
    連接運(yùn)算基于兩個(gè)關(guān)系。如下圖所示為聯(lián)接運(yùn)算的操作。
    在聯(lián)接運(yùn)算中,按字段值相等的為條件進(jìn)行的聯(lián)接運(yùn)算,即為等值聯(lián)接。上例即為等值聯(lián)接的運(yùn)算。
    自然聯(lián)接,是去掉重復(fù)屬性的等值聯(lián)接。自然聯(lián)接是最常用的聯(lián)接方式。如果上例進(jìn)行的是自然聯(lián)接,則聯(lián)接后的關(guān)系如下圖所示。