SQL初認(rèn)識(shí)——5:關(guān)系模型

我們已經(jīng)知道,關(guān)系數(shù)據(jù)庫(kù)是建立在關(guān)系模型上的。而關(guān)系模型本質(zhì)上就是若干個(gè)存儲(chǔ)數(shù)據(jù)的二維表,可以把它們看作很多Excel表。

表的每一行稱(chēng)為記錄(Record),記錄是一個(gè)邏輯意義上的數(shù)據(jù)。

表的每一列稱(chēng)為字段(Column),同一個(gè)表的每一行記錄都擁有相同的若干字段。

字段定義了數(shù)據(jù)類(lèi)型(整型、浮點(diǎn)型、字符串、日期等),以及是否允許為NULL。注意NULL表示字段數(shù)據(jù)不存在。一個(gè)整型字段如果為NULL不表示它的值為0,同樣的,一個(gè)字符串型字段為NULL也不表示它的值為空串''。

通常情況下,字段應(yīng)該避免允許為NULL。不允許為NULL可以簡(jiǎn)化查詢條件,加快查詢速度,也利于應(yīng)用程序讀取數(shù)據(jù)后無(wú)需判斷是否為NULL。

和Excel表有所不同的是,關(guān)系數(shù)據(jù)庫(kù)的表和表之間需要建立“一對(duì)多”,“多對(duì)一”和“一對(duì)一”的關(guān)系,這樣才能夠按照應(yīng)用程序的邏輯來(lái)組織和存儲(chǔ)數(shù)據(jù)。

例如,一個(gè)班級(jí)表:

ID 名稱(chēng) 班主任

201 二年級(jí)一班 王老師

202 二年級(jí)二班 李老師

每一行對(duì)應(yīng)著一個(gè)班級(jí),而一個(gè)班級(jí)對(duì)應(yīng)著多個(gè)學(xué)生,所以班級(jí)表和學(xué)生表的關(guān)系就是“一對(duì)多”:

ID 姓名 班級(jí)ID 性別 年齡

1 小明 201 M 9

2 小紅 202 F 8

3 小軍 202 M 8

4 小白 201 F 9

反過(guò)來(lái),如果我們先在學(xué)生表中定位了一行記錄,例如ID=1的小明,要確定他的班級(jí),只需要根據(jù)他的“班級(jí)ID”對(duì)應(yīng)的值201找到班級(jí)表中ID=201的記錄,即二年級(jí)一班。所以,學(xué)生表和班級(jí)表是“多對(duì)一”的關(guān)系。

如果我們把班級(jí)表分拆得細(xì)一點(diǎn),例如,單獨(dú)創(chuàng)建一個(gè)教師表:

ID 名稱(chēng) 年齡

A1 王老師 26

A2 張老師 39

A3 李老師 32

A4 趙老師 27

班級(jí)表只存儲(chǔ)教師ID:

ID 名稱(chēng) 班主任ID

201 二年級(jí)一班 A1

202 二年級(jí)二班 A3

這樣,一個(gè)班級(jí)總是對(duì)應(yīng)一個(gè)教師,班級(jí)表和教師表就是“一對(duì)一”關(guān)系。

在關(guān)系數(shù)據(jù)庫(kù)中,關(guān)系是通過(guò)主鍵和外鍵來(lái)維護(hù)的。我們?cè)诤竺鏁?huì)分別深入講解。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容