




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章表管理
3.1關(guān)系模型3.2建立表結(jié)構(gòu)3.3編輯數(shù)據(jù)3.4數(shù)據(jù)庫(kù)原理(一)——數(shù)據(jù)庫(kù)規(guī)范化設(shè)計(jì)小結(jié)習(xí)題
3.1關(guān)系模型
3.1.1數(shù)據(jù)描述
1.概念設(shè)計(jì)
數(shù)據(jù)庫(kù)的概念設(shè)計(jì)是根據(jù)用戶的需求設(shè)計(jì)數(shù)據(jù)庫(kù)的概念結(jié)構(gòu)。這一階段涉及下列四個(gè)術(shù)語(yǔ)。
(1)實(shí)體(Entity):客觀存在的、可以相互區(qū)別的事物。實(shí)體可以是具體的對(duì)象,也可以是抽象的對(duì)象。
(2)實(shí)體集(EntitySet):實(shí)體集性質(zhì)相同的同類實(shí)體的集合。
(3)屬性(Attribute):實(shí)體的每一個(gè)特性。
(4)實(shí)體標(biāo)識(shí)符(Identifier):唯一標(biāo)識(shí)實(shí)體的屬性或?qū)傩约?/p>
2.邏輯設(shè)計(jì)
(1)字段(Field):實(shí)體屬性的命名單位。字段的命名往往和屬性名相同。例如,學(xué)生有學(xué)號(hào)、姓名、性別等字段。
(2)記錄(Record):字段的有序集合。一般用一個(gè)記錄描述一個(gè)實(shí)體,所以記錄又可以定義為能完整地描述一個(gè)實(shí)體的字段集。例如,一個(gè)學(xué)生記錄由有序的字段集學(xué)號(hào)、姓名、性別組成。
(3)文件(File):同一類記錄的集合。文件是用來(lái)描述實(shí)體集的。例如,所有的學(xué)生記錄組成了一個(gè)學(xué)生文件。
(4)關(guān)鍵碼(Key):能唯一標(biāo)識(shí)文件中每個(gè)記錄的字段或字段集。例如,學(xué)生的學(xué)號(hào)字段可以作為學(xué)生的關(guān)鍵碼。
概念設(shè)計(jì)和邏輯設(shè)計(jì)中兩套術(shù)語(yǔ)的對(duì)應(yīng)關(guān)系如表3-1所示。
3.物理設(shè)計(jì)
物理設(shè)計(jì)是根據(jù)邏輯設(shè)計(jì)得到的數(shù)據(jù)的邏輯結(jié)構(gòu)來(lái)設(shè)計(jì)存儲(chǔ)數(shù)據(jù)的物理結(jié)構(gòu),即數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)。由于數(shù)據(jù)庫(kù)系統(tǒng)的一個(gè)目標(biāo)是使用戶能簡(jiǎn)單、方便、容易地存取數(shù)據(jù),因此用戶只需要知道數(shù)據(jù)庫(kù)對(duì)應(yīng)的文件,不必關(guān)心數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)和具體實(shí)現(xiàn)方式。例如,所有的學(xué)生記錄組成的學(xué)生文件在SQLServer2005中可以設(shè)計(jì)為文件“d:\example\
student.mdf”。3.1.2數(shù)據(jù)模型
1.定義
模型是對(duì)現(xiàn)實(shí)世界的抽象。在數(shù)據(jù)庫(kù)技術(shù)中,用模型的概念描述數(shù)據(jù)庫(kù)的結(jié)構(gòu)與語(yǔ)義?!皵?shù)據(jù)模型(DataModel)”是表示實(shí)體類型及實(shí)體間聯(lián)系的模型。
數(shù)據(jù)模型的種類很多,目前被廣泛使用的類型可分為兩種:一種是在概念設(shè)計(jì)階段使用的數(shù)據(jù)模型,稱為概念數(shù)據(jù)模型;另一種是在邏輯設(shè)計(jì)階段使用的數(shù)據(jù)模型,稱為邏輯數(shù)據(jù)模型。
2.實(shí)體聯(lián)系模型
1)數(shù)據(jù)聯(lián)系
在現(xiàn)實(shí)世界中,事物是相互聯(lián)系的,即實(shí)體間可能是有聯(lián)系的。這種聯(lián)系必然要在數(shù)據(jù)庫(kù)中有所反映。
聯(lián)系(Relationship)是實(shí)體之間的相互關(guān)系。與一個(gè)聯(lián)系相關(guān)的實(shí)體集的個(gè)數(shù),稱為聯(lián)系的元數(shù),即聯(lián)系有一元聯(lián)系、二元聯(lián)系、三元聯(lián)系等之分。
(1)二元聯(lián)系。二元聯(lián)系有以下三種類型。
①一對(duì)一聯(lián)系:
②一對(duì)多聯(lián)系:
③多對(duì)多聯(lián)系:實(shí)例3-1
學(xué)校里的班主任和班級(jí)之間(約定一個(gè)教師只能擔(dān)任一個(gè)班級(jí)的班主任),由于一個(gè)班主任最多帶一個(gè)班級(jí),而一個(gè)班級(jí)最多有一個(gè)班主任,因此班主任和班級(jí)之間是一對(duì)一聯(lián)系。學(xué)校里的班主任和學(xué)生之間,由于一個(gè)班主任可以帶多個(gè)學(xué)生,而一個(gè)學(xué)生最多有一個(gè)班主任,因此班主任和學(xué)生之間是一對(duì)多聯(lián)系。學(xué)校里的教師和學(xué)生之間,由于一個(gè)教師可以帶多個(gè)學(xué)生,而一個(gè)學(xué)生可以有多個(gè)教師,因此教師和學(xué)生之間是多對(duì)多聯(lián)系。
(2)其他聯(lián)系。其他聯(lián)系與二元聯(lián)系一樣,也有一對(duì)一聯(lián)系、一對(duì)多聯(lián)系和多對(duì)多聯(lián)系三種類型。
2)?ER圖
ER圖是直接表示概念模型的有力工具,在ER圖中有以下四個(gè)基本成分:
(1)矩形框:表示實(shí)體,并將實(shí)體名記入框中。
(2)菱形框:表示聯(lián)系,并將聯(lián)系名記入框中。
(3)橢圓形框:表示實(shí)體或聯(lián)系的屬性,并將屬性名記入框中。對(duì)于實(shí)體標(biāo)識(shí)符,則在下面畫(huà)一條橫線。
(4)連線:實(shí)體與屬性之間,聯(lián)系與屬性之間用直線連接;實(shí)體與聯(lián)系之間也以直線相連,并在直線端部標(biāo)注聯(lián)系的類型(1∶1、1∶N或M∶N)。實(shí)例3-2
為“學(xué)生選課系統(tǒng)”設(shè)計(jì)一個(gè)ER模型。
(1)確定實(shí)體。本題有兩個(gè)實(shí)體類型:學(xué)生s和課程c。
(2)確定聯(lián)系。實(shí)體s與實(shí)體c之間有聯(lián)系,且為M∶N聯(lián)系,命名為sc。
(3)確定實(shí)體和聯(lián)系的屬性。實(shí)體s的屬性有學(xué)號(hào)sno、班級(jí)class、姓名sname、性別sex、出生日期birthday、地址address、電話telephone、電子信箱email,其中實(shí)體標(biāo)識(shí)符為學(xué)號(hào)sno。實(shí)體c的屬性有課程編號(hào)cno、課程名稱cname、學(xué)分credit,其中實(shí)體標(biāo)識(shí)符為課程編號(hào)cno。聯(lián)系sc的屬性是某學(xué)生選修某課程的成績(jī)score。
(4)按規(guī)則畫(huà)出“學(xué)生選課系統(tǒng)”的ER圖,如圖3-1所示。圖3-1“學(xué)生選課系統(tǒng)”的ER圖
3.結(jié)構(gòu)數(shù)據(jù)模型
1)層次模型
用樹(shù)型(層次)結(jié)構(gòu)表示實(shí)體及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為層次模型(HierarchicalModel)。樹(shù)的結(jié)點(diǎn)是記錄類型,每個(gè)非根結(jié)點(diǎn)有且僅有一個(gè)父結(jié)點(diǎn)。上一層記錄類型和下一層記錄類型之間的聯(lián)系是1∶N聯(lián)系。
2)網(wǎng)狀模型
用有向圖結(jié)構(gòu)表示實(shí)體及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀模型(NetworkModel)。有向圖中的結(jié)點(diǎn)是記錄類型,箭頭表示從箭尾的記錄類型到箭頭的記錄類型間聯(lián)系是1∶N聯(lián)系。
3)關(guān)系模型
關(guān)系模型(RelationalModel)的主要特征是用二維表格表達(dá)實(shí)體集。關(guān)系模型是由若干個(gè)關(guān)系模式組成的集合。關(guān)系模式相當(dāng)于文件,它的實(shí)例稱為關(guān)系,每個(gè)關(guān)系實(shí)際上是一張二維表格,關(guān)系也稱為表。
實(shí)例3-3
將實(shí)例3-2的ER模型轉(zhuǎn)換為關(guān)系模型。
轉(zhuǎn)換的方法是把ER圖中的實(shí)體和M∶N的聯(lián)系分別轉(zhuǎn)換成關(guān)系模式,?同時(shí)在實(shí)體標(biāo)識(shí)符下加一橫線表示關(guān)系模式的關(guān)鍵碼。聯(lián)系關(guān)系模式的屬性為與之聯(lián)系的實(shí)體類型的關(guān)鍵碼和聯(lián)系的屬性,關(guān)鍵碼為與之聯(lián)系的實(shí)體類型的關(guān)鍵碼的組合。
表3-2為“學(xué)生選課系統(tǒng)”的關(guān)系模型。3.1.3關(guān)系模型
1.關(guān)系模型、關(guān)系模式、關(guān)系
關(guān)系模式是對(duì)關(guān)系的描述,可以表示為R(U,D,dom,F(xiàn)),簡(jiǎn)記為R(U)。其中,R為關(guān)系名,U為屬性集,D為U中屬性所來(lái)自的域,dom為屬性向域的映象集,F(xiàn)為屬性間數(shù)據(jù)的依賴關(guān)系集。
關(guān)系模型是關(guān)系模式及其間的聯(lián)系的數(shù)據(jù)模型,包括數(shù)據(jù)結(jié)構(gòu)(關(guān)系模式)、數(shù)據(jù)操作(關(guān)系運(yùn)算)和數(shù)據(jù)完整性規(guī)則。
關(guān)系是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容,具體的關(guān)系稱為實(shí)例。也就是說(shuō),關(guān)系模式是型,關(guān)系是值。關(guān)系模式是穩(wěn)定的,而關(guān)系是不斷變化的。在實(shí)際應(yīng)用中,通常把關(guān)系模式和關(guān)系統(tǒng)稱為關(guān)系。
2.關(guān)鍵碼與關(guān)系模式
在關(guān)系數(shù)據(jù)庫(kù)中,關(guān)鍵碼(簡(jiǎn)稱鍵、碼)是關(guān)系模型的一個(gè)重要概念。通常關(guān)鍵碼由一個(gè)或幾個(gè)屬性組成,包括以下四種鍵(碼)。
(1)超鍵(超碼)。
(2)候選鍵(候選碼)。
(3)主鍵(主碼)。
(4)外鍵(外碼)。
3.數(shù)據(jù)完整性規(guī)則
關(guān)系模型的完整性規(guī)則是對(duì)數(shù)據(jù)的約束。關(guān)系模型提供了三類完整性規(guī)則:實(shí)體完整性規(guī)則、參照完整性規(guī)則和用戶自定義完整性規(guī)則。其中實(shí)體完整性規(guī)則和參照完整性規(guī)則是關(guān)系模型必須滿足的完整性約束條件,稱為關(guān)系完整性規(guī)則。
(1)實(shí)體完整性規(guī)則。
(2)參照完整性規(guī)則。
(3)用戶自定義完整性規(guī)則。
3.2建?立?表?結(jié)?構(gòu)
3.2.1表的概念
表(即關(guān)系)是關(guān)系數(shù)據(jù)庫(kù)中用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)對(duì)象,數(shù)據(jù)只能存儲(chǔ)在表中。SQLServer2005中有兩類表:一類是系統(tǒng)表,是在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)由Model庫(kù)復(fù)制得到的;另一類是用戶表。要用數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù),首先必須要?jiǎng)?chuàng)建用戶表。
實(shí)例3-4為“學(xué)生選課系統(tǒng)”設(shè)計(jì)名稱為student的數(shù)據(jù)庫(kù),用于存儲(chǔ)數(shù)據(jù)。
(1)設(shè)計(jì)表。
(2)設(shè)計(jì)數(shù)據(jù)庫(kù)。3.2.2數(shù)據(jù)類型
1.數(shù)值類型
數(shù)值類型包括整型和實(shí)型兩類。
整型包括:
(1)?bigint。
(2)?int(或integer)。
(3)?smallint。
(4)?tinyint。
實(shí)型包括:
(1)?decimal[(p[,s])]:其字節(jié)數(shù)與精度的關(guān)系如表3-3所示。
(2)?numeric[(p[,s])]。
(3)?float[(n)]。
(4)?real:浮點(diǎn)類型。
2.字符串類型
(1)?char[(n)]:定長(zhǎng)字符串類型。其中,n為長(zhǎng)度,范圍為1~8000,即可容納8000個(gè)ANSI字符。若字符數(shù)小于n,則系統(tǒng)自動(dòng)在末尾添加空格;若字符數(shù)大于n,則系統(tǒng)自動(dòng)截?cái)喑霾糠帧DJ(rèn)char(10)。
(2)?varchar[(n)]:變長(zhǎng)字符串類型。與char不同的是,varchar存儲(chǔ)長(zhǎng)度為實(shí)際長(zhǎng)度,即自動(dòng)刪除字符串尾部空格后存儲(chǔ)。默認(rèn)varchar(50)。
(3)?text:文本類型,實(shí)際上也是變長(zhǎng)字符串類型,存儲(chǔ)長(zhǎng)度超過(guò)char(8000)的字符串,理論范圍占1~231-1個(gè)字節(jié),約2GB。
3.邏輯類型
bit:占1字節(jié)的存儲(chǔ)空間,其值為0或1。當(dāng)輸入0和1以外的值時(shí),系統(tǒng)自動(dòng)轉(zhuǎn)換為1。通常存儲(chǔ)邏輯量,表示真與假。
4.二進(jìn)制類型
(1)?binary[(n)]:定長(zhǎng)二進(jìn)制類型。占n?+?4字節(jié)的存儲(chǔ)空間,其中,n為數(shù)據(jù)長(zhǎng)度,范圍為1~8000。默認(rèn)binary(50)。
(2)?varbinary[(n)]:變長(zhǎng)二進(jìn)制類型。與binary不同的是,varbinary存儲(chǔ)長(zhǎng)度為實(shí)際長(zhǎng)度。默認(rèn)varbinary(50)。
(3)?image:大量二進(jìn)制類型,實(shí)際上也是變長(zhǎng)二進(jìn)制類型。通常用于存儲(chǔ)圖形等對(duì)象連接和嵌入(ObjectLinkingandEmbedding,OLE)對(duì)象,理論范圍占1~231-1個(gè)字節(jié)。
5.日期時(shí)間類型
SQLServer2005的日期時(shí)間類型數(shù)據(jù)同時(shí)包含日期和時(shí)間信息,沒(méi)有單獨(dú)的日期類型或時(shí)間類型。
(1)?datetime:占8字節(jié)的存儲(chǔ)空間,范圍為1753年1月1日~9999年12月31日,精確到1/300s。
(2)??smalldatetime:占4字節(jié)的存儲(chǔ)空間,范圍為1900年1月1日~2079年12月31日,精確到1分鐘。
6.貨幣類型
(1)?money:占8字節(jié)的存儲(chǔ)空間,具有4位小數(shù),存儲(chǔ)數(shù)據(jù)范圍為?-263~263-1之間的數(shù)值,精確到1/10000貨幣單位。
(2)?smallmoney:占4字節(jié)的存儲(chǔ)空間,具有4位小數(shù),存儲(chǔ)數(shù)據(jù)范圍為-231~231-1之間的數(shù)值。3.2.3創(chuàng)建表
數(shù)據(jù)庫(kù)創(chuàng)建完成后,要在數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù)時(shí),必須創(chuàng)建表。在SQLServer2005中,可以使用SQL語(yǔ)句、SQL-MS等方式創(chuàng)建表。
1.使用SQL語(yǔ)句
創(chuàng)建表語(yǔ)句的基本語(yǔ)法格式如下:
CREATETABLE[<數(shù)據(jù)庫(kù)名>.]<表名>
(<列名><數(shù)據(jù)類型>[<列級(jí)完整性約束>][,…n]
[<表級(jí)完整性約束>])實(shí)例3-5
在student數(shù)據(jù)庫(kù)中,為實(shí)例3-4的三個(gè)關(guān)系模式s、c、sc創(chuàng)建表s、c、sc。
在查詢編輯器中輸入如圖3-2所示的SQL語(yǔ)句并執(zhí)行。圖3-2創(chuàng)建表s、c、sc實(shí)例3-6
在有關(guān)零件、供應(yīng)商、工程項(xiàng)目的數(shù)據(jù)庫(kù)中,有四個(gè)關(guān)系,其結(jié)構(gòu)如下:
供應(yīng)商關(guān)系:S(SNO,SNAME,STATUS,ADDR)
零件關(guān)系:P(PNO,PNAME,COLOR,WEIGHT)
工程項(xiàng)目關(guān)系:J(JNO,JNAME,CITY,BALANCE)
供應(yīng)情況關(guān)系:SPJ(SNO,PNO,JNO,PRICE,OIY)
分別創(chuàng)建表S、P、J、SPJ。其中,表SPJ的SNO、PNO、JNO分別為外鍵,分別參照表S、P、J的SNO、PNO、JNO。
在查詢編輯器中輸入如圖3-3所示的SQL語(yǔ)句并執(zhí)行。圖3-3創(chuàng)建表S、P、J、SPJ
2.使用SQL-MS
下面通過(guò)實(shí)例說(shuō)明使用SQL-MS創(chuàng)建表的方法。
實(shí)例3-7使用SQL-MS創(chuàng)建實(shí)例3-4中的表sc。
(1)啟動(dòng)SQL-MS,展開(kāi)對(duì)象資源管理器左側(cè)窗口的數(shù)據(jù)庫(kù)“student”,指向“表”節(jié)點(diǎn),單擊右鍵,打開(kāi)快捷菜單,選擇“新建表”命令,在主菜單中添加“表設(shè)計(jì)器”菜單,并打開(kāi)“表設(shè)計(jì)器”窗口,如圖3-4所示。圖3-4“表設(shè)計(jì)器”窗口
(2)首先依次在“列名”框中輸入字段名,在“數(shù)據(jù)類型”框中選擇字段的數(shù)據(jù)類型,在“列屬性”列表框的“長(zhǎng)度”框中輸入字段長(zhǎng)度。此處為sno、char、4,cno、char、4,score、smallint。然后指定主鍵。此處單擊sno前按鈕選中sno字段,按住Ctrl鍵單擊cno前按鈕選中cno字段,再單擊工具欄中的“設(shè)置主鍵”按鈕?,即設(shè)置主鍵為sno、cno,如圖3-5所示。
(3)單擊工具欄中的“保存”圖標(biāo),打開(kāi)“選擇名稱”對(duì)話框,為新建表定義表名,此處為sc,如圖3-6所示。
(4)單擊“確定”按鈕,完成表的創(chuàng)建。圖3-5“創(chuàng)建表”窗口圖3-6“選擇名稱”對(duì)話框3.2.4修改表
1.使用SQL語(yǔ)句
修改表語(yǔ)句的基本語(yǔ)法格式如下:
ALTERTABLE[<數(shù)據(jù)庫(kù)名>.]<表名>
{[ALTER<列名><數(shù)據(jù)類型>[<列級(jí)完整性約束>][,…n]]
|ADD<列名><數(shù)據(jù)類型>[<列級(jí)完整性約束>][,…n]
|DROP<列名>[,…n]
}
實(shí)例3-8
在表s中增加新的列postcode。
在查詢編輯器中輸入如圖3-7所示的SQL語(yǔ)句并執(zhí)行。圖3-7在表s中增加列postcode實(shí)例3-9
刪除表s中的列postcode。
在查詢編輯器中輸入如圖3-8所示的SQL語(yǔ)句并執(zhí)行。圖3-8刪除表s中的列postcode實(shí)例3-10
設(shè)置表sc中的列sno為外鍵。
在查詢編輯器中輸入如圖3-9所示的SQL語(yǔ)句并執(zhí)行。圖3-9設(shè)置表sc中的列sno為外鍵實(shí)例3-11
為表sc的列score增加約束。
在查詢編輯器中輸入如圖3-10所示的SQL語(yǔ)句并執(zhí)行。圖3-10為表sc的列score增加約束
2.使用SQL-MS
實(shí)例3-12
對(duì)表s,定義sname非空完整性約束,sex缺省完整性約束(缺省值“男”),email唯一完整性約束。
(1)啟動(dòng)SQL-MS,單擊對(duì)象資源管理器左側(cè)窗口數(shù)據(jù)庫(kù)student中的“表”節(jié)點(diǎn),指向右側(cè)窗口中的表“s”,單擊右鍵,打開(kāi)快捷菜單,選擇“修改”命令,打開(kāi)“表設(shè)計(jì)器”窗口,參見(jiàn)圖3-4。
(2)單擊sname行的“允許空”列,去掉對(duì)鉤,設(shè)置sname非空完整性約束;單擊sex行,在下方“列屬性”窗口的“默認(rèn)值或綁定”框中輸入“'男'”,設(shè)置sex缺省完整性約束,如圖3-11所示。圖3-11“表設(shè)計(jì)器”窗口
(3)單擊工具欄中的“索引/鍵”圖標(biāo)?,打開(kāi)“索引/鍵”對(duì)話框,如圖3-12所示。圖3-12“索引/鍵”對(duì)話框
(4)單擊“添加”及“常規(guī)”列后的“屬性”按鈕,打開(kāi)“索引列”對(duì)話框,如圖3-13所示。圖3-13“索引列”對(duì)話框
(5)在“列名”框中選擇email,設(shè)置email唯一完整性約束。單擊“確定”按鈕,再單擊“關(guān)閉”按鈕,完成完整性設(shè)置。
實(shí)例3-13
對(duì)表sc,定義sno為外鍵,參照表s的sno;定義cno為外鍵,參照表c的cno。
方法一:
(1)啟動(dòng)SQL-MS,單擊對(duì)象資源管理器左側(cè)窗口數(shù)據(jù)庫(kù)student中的“表”節(jié)點(diǎn),指向右側(cè)窗口中的表“sc”,單擊右鍵,打開(kāi)快捷菜單,選擇“修改”命令,打開(kāi)“表設(shè)計(jì)器”窗口。
(2)單擊工具欄中的“關(guān)系”圖標(biāo),打開(kāi)“外鍵關(guān)系”對(duì)話框,如圖3-14所示。圖3-14“外鍵關(guān)系”對(duì)話框
(3)單擊“添加”按鈕,如圖3-15所示。圖3-15單擊“添加”按鈕后的“外鍵關(guān)系”對(duì)話框
(4)單擊右側(cè)“表和列規(guī)范”后的“屬性”按鈕,打開(kāi)“表和列”對(duì)話框,如圖3-16所示。圖3-16“表和列”對(duì)話框
(5)在“關(guān)系名”框中輸入關(guān)系名FK_sc_s,在“主鍵表”框中選擇表s,列名選擇sno,在“外鍵表”框中選擇表sc,列名選擇sno,設(shè)置sno時(shí)可參照s表sno列的外鍵完整性約束。單擊“確定”按鈕,返回“外鍵關(guān)系”對(duì)話框,如圖3-17所示。
(6)按同樣的方法,在“主鍵表”框中選擇表c,列名選擇cno,在“外鍵表”框中選擇表sc,列名選擇cno,設(shè)置cno時(shí)可參照c表cno列的外鍵完整性約束。
(7)單擊“關(guān)閉“按鈕,完成外鍵設(shè)置。圖3-17“外鍵關(guān)系”對(duì)話框方法二:
(1)啟動(dòng)SQL-MS,指向左側(cè)對(duì)象資源管理器窗口數(shù)據(jù)庫(kù)student中的“關(guān)系圖”節(jié)點(diǎn),單擊右鍵,打開(kāi)快捷菜單,選擇“新建數(shù)據(jù)庫(kù)關(guān)系圖”命令,打開(kāi)“關(guān)系圖”窗口和“添加表”對(duì)話框,如圖3-18所示。
(2)在“表”列表中分別選擇表s、c、sc,并單擊“添加”按鈕,將s、c、sc表添加到“關(guān)系圖”窗口中。單擊“關(guān)閉”按鈕,返回“關(guān)系圖”窗口,如圖3-19所示。圖3-18“添加表”對(duì)話框圖3-19“關(guān)系圖”窗口
(3)指向表sc的sno列,拖動(dòng)至表s,依次打開(kāi)“外鍵關(guān)系”、“表和列”對(duì)話框,單擊“確定”按鈕,參見(jiàn)圖3-15和圖3-16。指向表sc的cno列,拖動(dòng)至表c,依次打開(kāi)“外鍵關(guān)系”、“表和列”對(duì)話框,單擊“確定”按鈕。單擊“保存”圖標(biāo),打開(kāi)“選擇名稱”對(duì)話框,為新建的數(shù)據(jù)庫(kù)關(guān)系圖定義關(guān)系圖名,此處定義為sc_s_sc,如圖3-20所示。
(4)單擊“確定”按鈕,完成外鍵即表間關(guān)系設(shè)置。圖3-20“選擇名稱”對(duì)話框3.2.5刪除表
1.使用SQL語(yǔ)句
刪除表語(yǔ)句的基本語(yǔ)法格式如下:
DROPTABLE<表名>
實(shí)例3-14
刪除student數(shù)據(jù)庫(kù)中的sc表。
在查詢編輯器中輸入如圖3-21所示的SQL語(yǔ)句并執(zhí)行。圖3-21刪除數(shù)據(jù)庫(kù)student中的sc表
2.使用SQL-MS
(1)啟動(dòng)SQL-MS,單擊左側(cè)對(duì)象資源管理器窗口中要?jiǎng)h除的表所在數(shù)據(jù)庫(kù)中的“表”節(jié)點(diǎn),指向右側(cè)窗口中要?jiǎng)h除的表,單擊右鍵,打開(kāi)快捷菜單,選擇“刪除”命令,打開(kāi)“刪除對(duì)象”對(duì)話框,如圖3-22所示。
(2)單擊“確定”按鈕,指定表將被刪除。圖3-22“刪除對(duì)象”對(duì)話框
3.3編輯數(shù)據(jù)
3.3.1使用SQL-MS
(1)啟動(dòng)SQL-MS,單擊對(duì)象資源管理器左側(cè)窗口要編輯記錄的表所在數(shù)據(jù)庫(kù)中的“表”節(jié)點(diǎn),指向右側(cè)窗口中要編輯記錄的表,單擊右鍵,打開(kāi)快捷菜單,選擇“打開(kāi)表”命令,打開(kāi)“表中數(shù)據(jù)”窗口,如圖3-23所示。
(2)如果需要插入數(shù)據(jù),可以直接錄入;如果需要?jiǎng)h除記錄,可以單擊記錄第一個(gè)列前的按鈕選中該記錄,按Del鍵即可;如果需要修改數(shù)據(jù),可以單擊或?qū)⒐鈽?biāo)移至需要修改的位置,直接修改即可。
(3)編輯完畢,單擊“關(guān)閉”按鈕,保存編輯結(jié)果。圖3-23“表中數(shù)據(jù)”窗口3.3.2使用SQL語(yǔ)句
1.INSERT(插入記錄)語(yǔ)句
INSERT語(yǔ)句的基本語(yǔ)法格式有兩種。
格式一:
INSERT[INTO]<表名>[(<列名表>)]VALUES(<值列表>)
該語(yǔ)句完成將一條新記錄插入一個(gè)已經(jīng)存在的表中。
實(shí)例3-15
在表s中插入一學(xué)生,學(xué)號(hào)為“1001”,班級(jí)為“信息501”,姓名為“黃鵬”,性別為“男”,出生日期為“1981年10月12日”,住址為“江蘇省常州市”,電話為,電子信箱為“hp@163.net”。
在查詢編輯器中輸入如圖3-24所示的SQL語(yǔ)句并執(zhí)行。圖3-24插入所有列實(shí)例3-16
在表s中插入一學(xué)生,學(xué)號(hào)為“2001”,班級(jí)為“計(jì)應(yīng)501”,姓名為“張宇蛟”,性別為“男”,出生日期為“1984年11月16日”,電子信箱為“zyj@”。
在查詢編輯器中輸入如圖3-25所示的SQL語(yǔ)句并執(zhí)行。
格式二:
INSERT[INTO]<目標(biāo)表名>[(<列名表>)]
SELECT<列名表>FROM<源表名>WHERE<條件>
實(shí)例3-17
將表s的男生記錄插入表s_bak中。假設(shè)表s_bak已存在,且結(jié)構(gòu)與表s相同。
在查詢編輯器中輸入如圖3-26所示的SQL語(yǔ)句并執(zhí)行。圖3-25插入部分列圖3-26插入表中數(shù)據(jù)
2.?DELETE(刪除記錄)語(yǔ)句
DELETE語(yǔ)句的基本語(yǔ)法格式如下:
DELETE[FROM]<表名>[WHERE<條件>]
該語(yǔ)句完成刪除表中滿足條件的記錄。如果省略條件,則刪除所有記錄。
實(shí)例3-18
刪除表s_bak中的所有男生。
在查詢編輯器中輸入如圖3-27所示的SQL語(yǔ)句并執(zhí)行。圖3-27刪除記錄
3.?UPDATE(修改記錄)語(yǔ)句
UPDATE語(yǔ)句的基本語(yǔ)法格式有兩種。
格式一:
UPDATE<表名>SET<列名>=<表達(dá)式>[,…][WHERE<條件>]
該語(yǔ)句完成表中滿足條件的記錄,將表達(dá)式的值賦予指定列。如果省略條件,則默認(rèn)所有記錄,并可以一次給多個(gè)列賦值。
實(shí)例3-19
將表s中學(xué)號(hào)為“2001”的學(xué)生的住址改為“北京市”,電話為。
在查詢編輯器中輸入如圖3-28所示的SQL語(yǔ)句并執(zhí)行。圖3-28單表修改格式二:
UPDATE<目標(biāo)表名>SET<列名>=<表達(dá)式>[,…]
FROM<源表名>[WHERE<條件>]
格式二與格式一不同的是:條件和表達(dá)式中可以包含源表的列,實(shí)現(xiàn)用源表的數(shù)據(jù)修改目標(biāo)表的數(shù)據(jù),并可以用源表的數(shù)據(jù)作為修改目標(biāo)表的條件。
實(shí)例3-20
將所有選修了數(shù)據(jù)庫(kù)應(yīng)用課程的學(xué)生的成績(jī)加5分。
在查詢編輯器中輸入如圖3-29所示的SQL語(yǔ)句并執(zhí)行。圖3-29表間數(shù)據(jù)修改
3.4數(shù)據(jù)庫(kù)原理(一)——數(shù)據(jù)庫(kù)規(guī)范化設(shè)計(jì)
3.4.1關(guān)系模式的規(guī)范化問(wèn)題
1.關(guān)系模式的操作異常
在數(shù)據(jù)管理中,數(shù)據(jù)冗余是影響系統(tǒng)性能的大問(wèn)題。數(shù)據(jù)冗余是指同一個(gè)數(shù)據(jù)在系統(tǒng)中多次重復(fù)出現(xiàn)。在文件系統(tǒng)中,由于文件之間沒(méi)有聯(lián)系,將會(huì)引起一個(gè)數(shù)據(jù)在多個(gè)文件中出現(xiàn)。數(shù)據(jù)庫(kù)系統(tǒng)雖然克服了文件系統(tǒng)的這種缺陷,但對(duì)于數(shù)據(jù)冗余問(wèn)題仍然應(yīng)加以關(guān)注。
實(shí)例3-21
設(shè)有“學(xué)生選課”關(guān)系模式R(sno,sname,sex,cno,cname,score),其屬性分別表示學(xué)生的學(xué)號(hào)、姓名、性別、選修課程的課程編號(hào)、課程名、成績(jī)。具體實(shí)例見(jiàn)表3-4。
2.關(guān)系模式的規(guī)范化
對(duì)于一個(gè)現(xiàn)實(shí)問(wèn)題,如果將所有屬性組成的關(guān)系模式記為R(U),?關(guān)系r是關(guān)系模式R(U)的實(shí)例,則稱關(guān)系模式R(U)為泛關(guān)系模式(UniversalRelationSchema),關(guān)系r為泛關(guān)系(UniversalRelation)。
一般來(lái)講,R(U)和r往往不是恰當(dāng)?shù)男问?,必須用一個(gè)關(guān)系模式的集合ρ?={R1,…,Rk}代替R(U),其中每個(gè)Ri的屬性是U的子集,且R1∪…∪Rk?=?U(此處Ri表示關(guān)系R(U)的屬性集),則ρ稱為數(shù)據(jù)庫(kù)模式(DatabaseSchema),其中每一個(gè)關(guān)系模式Ri實(shí)例的集合σ?=?<r1,…,rk>稱為數(shù)據(jù)庫(kù)實(shí)例(簡(jiǎn)稱為數(shù)據(jù)庫(kù))。
3.符號(hào)規(guī)定
為表示方便,對(duì)使用的符號(hào)作以下規(guī)定:
(1)用英文字母首部的大寫(xiě)字母“A,B,C,…”表示單個(gè)屬性。
(2)用英文字母尾部的大寫(xiě)字母“…,U,V,W,X,Y,Z”表示屬性集。
(3)用大寫(xiě)英文字母R、S表示關(guān)系模式,用小寫(xiě)英文字母r、s表示關(guān)系。
(4)對(duì)關(guān)系模式R(A,B,C),可以表示為R(ABC)或{A,B,C},甚至ABC。3.4.2函數(shù)依賴
1.函數(shù)依賴的定義
在數(shù)據(jù)庫(kù)中,屬性之間是有聯(lián)系的,例如每個(gè)學(xué)生只有一個(gè)姓名,每個(gè)學(xué)生選修一門(mén)課程只能有一個(gè)成績(jī)等。這類聯(lián)系稱為函數(shù)依賴。
定義3.1
設(shè)關(guān)系模式R(U),X、YU,只要r是R的當(dāng)前關(guān)系,對(duì)于r的任意兩個(gè)元組t1、t2,若t1[X]?=?t2[X],則t1[Y]?=?t2[Y],故稱X函數(shù)決定Y函數(shù)或Y函數(shù)依賴于X函數(shù),記作X→Y。這種依賴稱為函數(shù)依賴(FunctionalDependency,F(xiàn)D)。實(shí)例3-22
對(duì)實(shí)例3-21的“學(xué)生選課”關(guān)系模式R,如果規(guī)定每個(gè)學(xué)生只能有一個(gè)姓名,每個(gè)課程號(hào)只能對(duì)應(yīng)一門(mén)課程,則有以下FD:
sno→sname
cno→cname
由于每個(gè)學(xué)生每選修一門(mén)課程時(shí)只能有一個(gè)成績(jī),則有以下FD:
(sno,cno)→score
當(dāng)然,還有以下FD:
sno→sex
sno→(sname,sex)實(shí)例3-23
設(shè)關(guān)系模式R(ABCD),假設(shè)A與B為一對(duì)多聯(lián)系,而C與D為一對(duì)一聯(lián)系,試寫(xiě)出相應(yīng)的FD。
由于A與B為一對(duì)多聯(lián)系,即每個(gè)A值有多個(gè)B值對(duì)應(yīng),即B值決定A值,可寫(xiě)出FD:B→A。
同理,由于C與D為一對(duì)一聯(lián)系,可寫(xiě)出FD:D→C和C→D。
2.函數(shù)依賴和關(guān)鍵碼的關(guān)系
定義3.2
設(shè)關(guān)系模式R(U),XU。如果X→U成立,則稱X是R的超鍵。如果X→U成立且對(duì)X的任一子集X1,有X1→U不成立,則稱X是R的候選鍵。
實(shí)例3-24
由實(shí)例3-22關(guān)系模式R的分析,有以下FD:
(sno,cno)→(sno,sname,sex,cno,cname,score)
即(sno,cno)為關(guān)系模式R(U)的候選鍵。
雖然有以下FD:
(sno,sname,cno)→(sno,sname,sex,cno,cname,score)
但(sno,sname,cno)只是關(guān)系模式R(U)的超鍵而非候選鍵,因?yàn)?sno,sname,cno)含多余屬性sname。定義3.3
對(duì)于FDX→Y,如果YX,則稱X→Y是“平凡的FD”,反之稱“非平凡的FD”。
正如名稱所示,平凡的FD是不可能不成立的,沒(méi)有實(shí)際意義,只有非平凡的FD才“真正”和數(shù)據(jù)完整性約束條件相關(guān),所以要研究的是非平凡的FD。3.4.3屬性集的閉包
1.函數(shù)依賴集與函數(shù)依賴集的閉包
關(guān)系模式R(U)上成立的FD的集合稱為函數(shù)依賴集(簡(jiǎn)記為F),而由關(guān)系模式R(U)上所有成立的FD組成的集合稱為函數(shù)依賴集的閉包,記為F+。
實(shí)例3-25
對(duì)于關(guān)系模式R(ABC),F(xiàn)?=?{A→B,B→C},求F+。
根據(jù)FD的定義,可推出
F+?=?{f→f,A→f,A→A,A→B,A→C,A→AB,A→BC,A→ABC,…}
共有43個(gè)FD。其中,f表示空屬性集。
2.屬性集的閉包定義
定義3.4
設(shè)F為關(guān)系模式R(U)的FD集,則F+中所有X→A(XU)的A的集合稱為X的閉包,記為X+。
根據(jù)定義,顯然X+表示了所有X可以決定的屬性。由此可以得到以下定理:
定理3.1X→Y屬于F+的充要條件是YX+。
即要判斷X→Y是否屬于F+,只要求出X+就可以了。
同時(shí)可以得到以下結(jié)論:
若X+包含R的所有屬性,則X是R的超鍵;當(dāng)X不可約(去掉任何一個(gè)屬性即不成立)時(shí),則X為R的候選鍵。實(shí)例3-26
對(duì)實(shí)例3-25的關(guān)系模式R,求其候選鍵并判斷A→C和B→A是否屬于F+。
由屬性集閉包的定義可知:
A+=ABC,B+=BC,C+=C
由于A+包含R的所有屬性,則R的超鍵為A。
由于C
A+而A
B+,則A→C
F+而B(niǎo)→AF+。
3.屬性集閉包算法
算法3.1
設(shè)F為關(guān)系模式R(U)的FD集,求解屬性A(A∈U)的閉包算法如下:
(1)將A置入A+。
(2)對(duì)F的每一FD,若左部所有屬性屬于A+,則將右部所有屬性置入A+。
(3)重復(fù)第(2)步至A+封閉。
算法3.2
設(shè)F為關(guān)系模式R(U)的FD集,求解屬性集X(X
U)的閉包算法為:
(1)先求X中每個(gè)單個(gè)屬性的閉包。
(2)若F中無(wú)左部為X的FD,則X+為X中各屬性閉包的并;否則按算法3.1(將A擴(kuò)展為屬性集)計(jì)算。實(shí)例3-27
對(duì)于關(guān)系模式R(ABCD),F(xiàn)={A→B,B→C,D→B},求其候選鍵。
(1)求A+。
①?A+=A。
②由A→B,而A∈A+,則A+=AB。
③由B→C,而B(niǎo)∈A+,則A+=ABC。
④?A+封閉,即A+=ABC。
(2)求B+、C+、D+。
按步驟(1)可得:B+=BC,C+=C,D+=BCD。
(3)求其候選鍵。
顯然,R的候選鍵為AD。實(shí)例3-28
對(duì)于關(guān)系模式R(ABC),F(xiàn)?=?{A→BC,BC→A},求其候選鍵。
(1)求屬性閉包。
由實(shí)例3-27可得:A+=ABC,B+=B,C+=C。
(2)求屬性集閉包。
由BC→A,則(BC)+=ABC,其余屬性集閉包為屬性閉包的并。
(3)求候選鍵。
顯然,R的候選鍵為A和BC。3.4.4關(guān)系模式的范式
1.第一范式(1NF)
定義3.5
如果關(guān)系模式R中每一屬性的值域?yàn)樵拥模瑒t稱R屬于第一范式(FirstNormalForm,簡(jiǎn)記為1NF)模式。
滿足1NF的關(guān)系稱為規(guī)范化的關(guān)系,否則稱為非規(guī)范化的關(guān)系。關(guān)系數(shù)據(jù)庫(kù)研究的關(guān)系都是規(guī)范化的關(guān)系。1NF是關(guān)系模式應(yīng)具備的最起碼的條件。如果不加特殊說(shuō)明,關(guān)系模式均屬于1NF。
2.第二范式(2NF)
如果一個(gè)關(guān)系模式是1NF,但關(guān)系模式中存在局部依賴,則關(guān)系模式中將會(huì)有冗余現(xiàn)象,因此需進(jìn)一步規(guī)范化。
定義3.6
若R1NF,且每個(gè)非主屬性完全依賴于候選鍵,則稱R屬于2NF模式。其中,屬于候選鍵的屬性稱為主屬性,不屬于候選鍵的屬性稱為非主屬性;完全函數(shù)依賴為左部不可約的函數(shù)依賴,局部函數(shù)依賴為左部可約的函數(shù)依賴。
實(shí)例3-29
對(duì)于關(guān)系模式R(sno,cno,score,tno,taddress)的屬性分別表示學(xué)生編號(hào)、選修課程的課程號(hào)、成績(jī)、任課教師編號(hào)、教師地址,約定“一門(mén)課程只能由一個(gè)教師帶”,試判斷R是否屬于2NF模式。算法3.3
設(shè)關(guān)系模式R(WXYZ),存在FDX→Y(即Y局部依賴于候選鍵),則應(yīng)把R分解為模式:R1(WXZ)和R2(XY)。
實(shí)例3-30
對(duì)于實(shí)例3-29的關(guān)系模式R,R
2NF,按算法3.3,可以將R分解為R1(sno,cno,score)和R2(cno,tno,taddress),消除了局部依賴(sno,cno)→(tno,taddress),且R1、R2
2NF。
3.第三范式(3NF)
定義3.7
若R1NF,對(duì)于F中每個(gè)非平凡的FDX→Y,都有X是R的超鍵,或Y中每個(gè)屬性均為主屬性,則稱R屬于3NF模式。
實(shí)例3-31
對(duì)于實(shí)例3-30的關(guān)系模式R1、R2,試判斷R2是否屬于3NF模式。
對(duì)R2有FD:tno→taddress,而taddress為非主屬性且tno為非超鍵,即R2
3NF。
實(shí)際上,3NF要求所有非主屬性不能依賴于非候選鍵,當(dāng)非主屬性依賴于某個(gè)非候選鍵時(shí),該非候選鍵值一旦相同,非主屬性值也必然相同,則產(chǎn)生數(shù)據(jù)冗余。如對(duì)實(shí)例3-31的關(guān)系模式R2,當(dāng)同一教師帶多門(mén)課程時(shí),taddress冗余。下面給出關(guān)系模式中消除非主屬性對(duì)非候選鍵的依賴的算法。
算法3.4
設(shè)關(guān)系模式R(WXYZ),若存在FDX→Y(即Y依賴于非候選鍵),則應(yīng)把R分解為模式:R1(WXZ)和R2(XY)。
實(shí)例3-32
對(duì)于實(shí)例3-30的關(guān)系模式R2,R23NF,按算法3.4,可以將R分解為
R21(cno,tno)和R22(tno,taddress),且R21、R22
3NF。
最終,將非2NF模式的R(sno,cno,score,tno,taddress)分解為3NF模式的R1(sno,cno,score)、R2(cno,tno)、R3(tno,taddress)。小結(jié)
本章講述了SQLServer2005表的相關(guān)知識(shí),主要包括以下內(nèi)容:
(1)?ER模型;
(2)關(guān)系數(shù)據(jù)模型;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 亞克力材料加工合同范本
- 基于虛擬現(xiàn)實(shí)技術(shù)的船舶裝配工藝優(yōu)化與仿真:提升船舶制造效能的深度探索
- 功能對(duì)等理論在商務(wù)英語(yǔ)翻譯中的多維應(yīng)用與實(shí)踐探索
- 合同范本易懂
- 2025至2030年中國(guó)硬脂酸鋰數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 勞務(wù)分包協(xié)議框架合同范例
- 企業(yè)員工定制禮服合同范本
- 保姆做飯合同范例
- 二手房轉(zhuǎn)讓合同范本
- 上海買(mǎi)賣(mài)汽車(chē)合同范本
- 社會(huì)工作-心理學(xué)視角下的校園欺凌認(rèn)知與對(duì)策研究論文
- 面神經(jīng)炎臨床路徑
- 月光奏鳴曲全面版
- 2022年湖北省中小學(xué)教師高級(jí)職稱專業(yè)水平能力測(cè)試模擬題
- 中小學(xué)校傳染病預(yù)防控制工作管理規(guī)范及常見(jiàn)傳染病預(yù)課件
- 數(shù)控車(chē)床操作培訓(xùn)課件
- 工程經(jīng)濟(jì)學(xué)-邵穎紅-第五版-課后作業(yè)
- 第三方檢查應(yīng)對(duì)措施方案
- 2020年財(cái)產(chǎn)保險(xiǎn)公司部門(mén)職責(zé)和崗位說(shuō)明書(shū)
- TBA19利樂(lè)灌裝機(jī)操作手冊(cè)
- 人力資源管理咨詢實(shí)務(wù)人力資源總監(jiān)手冊(cè)
評(píng)論
0/150
提交評(píng)論