更新時(shí)間:2022-11-16 來源:黑馬程序員 瀏覽量:
關(guān)系模型由IBM公司研究員Edgar Frank Codd于1970年發(fā)表的論文中提出,經(jīng)過多年的發(fā)展,已經(jīng)成為目前最常用、最重要的模型之一。
在關(guān)系模型中有一些基本的概念,具體如下。
(1)關(guān)系(Relation)。關(guān)系一詞與數(shù)學(xué)領(lǐng)域有關(guān),它是集合基礎(chǔ)上的一個(gè)重要的概念,用于反映元素之間的聯(lián)系和性質(zhì)。從用戶角度來看,關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)是二維表,即通過二維表來組織數(shù)據(jù)。一個(gè)關(guān)系對(duì)應(yīng)一張二維表,表中的數(shù)據(jù)包括實(shí)體本身的數(shù)據(jù)和實(shí)體間的聯(lián)系。
下面通過圖1演示一個(gè)簡(jiǎn)單的學(xué)生信息二維表。
(2)屬性(Attribute)。二維表中的列稱為屬性,每個(gè)屬性都有一個(gè)屬性名。
(3)元組(Tuple)。二維表中的每一行數(shù)據(jù)稱為一個(gè)元組。
小提示:根據(jù)不同的習(xí)慣,屬性也可以稱為宇段(Field),元組也可以稱為記錄(Record)。
(4)域(Domain)。域是指屬性的取值范圍,例如,性別屬性的域?yàn)槟?、女?/p>
(5)關(guān)系模式(Relation Schema)。關(guān)系模式是關(guān)系的描述,通??梢院?jiǎn)記為“關(guān)系名(屬性1,屬性2,…,屬n)”。例如,圖1-9中的二維表的關(guān)系模式如下。
學(xué)生(學(xué)號(hào),姓名,性別,出生年月)
(6)鍵(Key)。在二維表中,若要唯一標(biāo)識(shí)某一條記錄,需要用到鍵(又稱為關(guān)鍵字、碼)。例如,學(xué)生的學(xué)號(hào)具有唯一性,學(xué)號(hào)可以作為學(xué)生實(shí)體的鍵。而學(xué)生姓名可能存在重名,不適合作為鍵。通過鍵可以為兩張表建立聯(lián)系,如圖1所示。
表1 學(xué)生與班級(jí)表
在圖1中,班級(jí)表中的“班級(jí)號(hào)”是該表的鍵,學(xué)生表中的“班級(jí)號(hào)”表示學(xué)生所屬的班級(jí),兩者建立了一對(duì)多的聯(lián)系,即一個(gè)班級(jí)中有多個(gè)學(xué)生。其中,班級(jí)表的“班級(jí)號(hào)”稱為主鍵(Primary Key),學(xué)生表的“班級(jí)號(hào)”稱為外鍵(Foreign Key)。
學(xué)生與課程的多對(duì)多聯(lián)系,可以通過中間表來實(shí)現(xiàn),如圖2所示。
表2 學(xué)生表與課程表
在圖2中,學(xué)生表與課程表之間通過學(xué)生選課表關(guān)聯(lián)。學(xué)生選課表將學(xué)生與課程的多對(duì)多關(guān)系拆解成兩個(gè)一對(duì)多關(guān)系,即一個(gè)學(xué)生選修多門課,一門課被多個(gè)學(xué)生選修。