




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫技術(shù)與應(yīng)用第二章關(guān)系模型(一)2.1
數(shù)據(jù)模型2.2
關(guān)系模型2.3
關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)
—在SQL中定義關(guān)系模式2.4關(guān)系模型的數(shù)據(jù)操作
—關(guān)系代數(shù)
第二章內(nèi)容提要實(shí)質(zhì)是用于描述數(shù)據(jù)的一種表示法。它由三個(gè)部分組成:1.數(shù)據(jù)結(jié)構(gòu)2.數(shù)據(jù)操作3.數(shù)據(jù)約束
問題1.數(shù)據(jù)模型是什么?2.1數(shù)據(jù)模型概述數(shù)據(jù)模型三要素
目前,兩種最重要的數(shù)據(jù)模型:1.關(guān)系模型,基于關(guān)系(也稱為表)2.半結(jié)構(gòu)化數(shù)據(jù)模型,典型代表是XML其他數(shù)據(jù)模型:對(duì)象—關(guān)系模型(發(fā)展趨勢(shì))面向?qū)ο髷?shù)據(jù)庫模型層次模型、網(wǎng)狀模型(已過時(shí))數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)模型
√關(guān)系模型是基于表的,其數(shù)據(jù)結(jié)構(gòu)是表(也稱關(guān)系),其數(shù)據(jù)操作是面向表的,其數(shù)據(jù)約束是限制表中數(shù)據(jù)的。關(guān)系示例——MoviestitlemYearmLengenreGoneWiththeWind1939231dramaKungFuPanda2201190animationMovies<Movies>
<Movie
title=“Gonewiththewind”>
<mYear>1939</mYear>
<mLen>231</mLen>
<Genre>drama</Genre>
</Movie>
<Movie
title=“KungFuPanda2”>
<mYear>2011</mYear>
<mLen>90</mLen>
<Genre>animation</Genre>
</Movie></Movies>XML文件示例——Movies2.2關(guān)系模型基礎(chǔ)關(guān)系模型的數(shù)據(jù)結(jié)構(gòu):二維表,稱為關(guān)系。例2.1Movies關(guān)系titlemYearmLengenreGoneWiththeWind1939231dramaStarWars1977124sciFiKungFuPanda2201190animationMovies1.屬性(Attributes):一個(gè)關(guān)系中的列稱為屬性。
如例2.1中title,mYear,mLen,genre。
屬性名在各列頭,描述其值的含義。2.關(guān)系模式(Schemas):一個(gè)關(guān)系的名稱及其所有屬性集成為該關(guān)系的模式。表示為,
關(guān)系名(屬性1,屬性2,…)
其中,屬性的次序任意。
如Movies關(guān)系模式為,Movies(title,mYear,mLen,genre)關(guān)系的相關(guān)術(shù)語(一)3.關(guān)系數(shù)據(jù)庫模式(relationaldatabaseschema)
在關(guān)系數(shù)據(jù)庫中,一個(gè)數(shù)據(jù)庫是由一個(gè)或多個(gè)關(guān)系組成的。組成一個(gè)數(shù)據(jù)庫的關(guān)系模式的集合,就稱為關(guān)系數(shù)據(jù)庫模式,簡稱數(shù)據(jù)庫模式。4.元組(Tuples)一個(gè)關(guān)系中的行(除屬性名所在的頭行外)稱為元組。每一元組在每列上只有一個(gè)元素。元組的次序任意。
如(StarWars,1977,124,sciFi),是例2.1Movies的第二個(gè)元組。關(guān)系的相關(guān)術(shù)語(二)5.域(Domains):或?qū)傩缘臄?shù)據(jù)類型
關(guān)系模型要求元組在每一屬性上的取值不可再分,且屬性取值應(yīng)在一個(gè)域(Domains)內(nèi)。
這就要求,屬性的數(shù)據(jù)類型只能是基本數(shù)據(jù)類型,
如整型,字符串等。不能是包含多項(xiàng)元素的復(fù)合類型,如結(jié)構(gòu)、數(shù)組等。
如在例2.1Movies關(guān)系中,各屬性域如下:title:字符串,mYear:日期,mLen:整型,genre:字符串
關(guān)系的相關(guān)術(shù)語(三)titlemYearmLengenreGoneWiththeWind1939231dramaStarWars1977124sciFiKungFuPanda2201190animation相同的關(guān)系,不同的展示titlemYearmLengenreStarWars1977124sciFiGoneWiththeWind1939231dramaKungFuPanda2201190animationmYeartitlemLengenre1939GoneWiththeWind231drama1977StarWars124sciFi2011KungFuPanda290animation例2.2一個(gè)有n個(gè)元組、m個(gè)屬性的關(guān)系實(shí)例,有多少種不同的展示?6.關(guān)系的鍵(Keys)關(guān)系模型提供的一種數(shù)據(jù)約束
關(guān)系模型要求,一個(gè)關(guān)系中每一個(gè)元組都是唯一的,不允許存在完全相同的元組。鍵(或稱超鍵)是一個(gè)關(guān)系的屬性集,它能保證該關(guān)系的所有元組在這個(gè)屬性集上取值各不相同。換句話說,鍵是能唯一標(biāo)識(shí)一個(gè)元組的屬性集。候選鍵是鍵的一個(gè)最小屬性子集,它既保持了鍵的唯一性,又不可縮減。一個(gè)關(guān)系可以有多個(gè)候選鍵,選擇其一作為主鍵(PrimaryKey)。
在關(guān)系模式中主鍵用下線標(biāo)記。
如Movies(title,mYear,mLen,genre)
關(guān)系的相關(guān)術(shù)語(四)Movies(title,mYear,mLen,genre,studioName,producerNo)MovieStar(name,address,gender,birthday)StarsIn(movieTitle,movieYear,starName)MovieExec(name,address,execNo,netWorth)Studio(name,address,presNo)例2.3下列關(guān)系中的主鍵問題:每個(gè)關(guān)系的候選鍵有哪些?從中選擇主鍵。電影關(guān)系數(shù)據(jù)庫模式思考:根據(jù)上述6個(gè)基本概念,請(qǐng)同學(xué)們分析關(guān)系具有哪些基本性質(zhì)?SQL(StructuredQueryLanguage)是用于描述和操作關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。
主要包括兩個(gè)方面內(nèi)容:1)
數(shù)據(jù)定義子語言(Data-Definitionsublanguage)
用于定義數(shù)據(jù)庫模式2)數(shù)據(jù)操作子語言(Data-Manipulationsublanguage)
用于查詢或更新數(shù)據(jù)庫2.3在SQL中定義關(guān)系模式SQL中有三種不同的關(guān)系:表(tables),存儲(chǔ)式的關(guān)系,是最常用的一種。它存于數(shù)據(jù)庫中,可被更新和查詢。視圖(views),非存儲(chǔ)的,計(jì)算時(shí)根據(jù)需要可全部或部分構(gòu)建的關(guān)系。臨時(shí)表,由SQL語言處理器在執(zhí)行查詢或更新操作時(shí)臨時(shí)構(gòu)建,處理器結(jié)束工作后即釋放。SQL中的關(guān)系用CreateTable定義這種關(guān)系模式用CreateView定義視圖模式字符串類型:char(n)長度為n的定長字符串,存n個(gè)字符,n/2個(gè)漢字varchar(n)變長字符串,長度不超過n注意:SQL中字符串常量用單引號(hào)括起。如‘王文’整型數(shù):int,
4字節(jié)(T-SQL)-2^31~2^31-1smallint,2個(gè)字節(jié)(T-SQL)
-2^15~2^15-1
近似數(shù)字real4字節(jié)(T-SQL)float存儲(chǔ)數(shù)據(jù)范圍較real大
SQL基本數(shù)據(jù)類型(一)精確數(shù)字:decimal(n,d)和numeric(n,d)固定精度的數(shù)據(jù),n是數(shù)字位數(shù),d是小數(shù)位數(shù)。
money
和smallmoney
等
存儲(chǔ)8字節(jié)存儲(chǔ)4字節(jié)日期和時(shí)間類型
date、
time、datetime
等
‘yyyy-mm-dd’
‘hh:mm:ss.d’http:///zh-cn/library/ms187752.aspxSQL基礎(chǔ)數(shù)據(jù)類型(二)語法格式:
CREATETABLE表名(
屬性1類型
基于屬性的約束,
屬性2類型
基于屬性的約束,
┇
屬性n類型
基于屬性的約束,
基于元組的約束,┇)表定義(或稱關(guān)系模式定義)例2.4最簡單的表定義
要求:
給出MovieStar的表定義,暫不考慮約束。CREATETABLE
MovieStar(namevarchar(30),addressvarchar(200),genderchar(1)
,birthdaydate
)例2.5請(qǐng)給出Movies關(guān)系的最簡關(guān)系模式定義,
暫不考慮約束。課堂練習(xí)CREATETABLEMovies(titlevarchar(50),mYearint,mLenint,genrevarchar(10),studioNamevarchar(100), producerNochar(6))ALTERTABLE表名ADD
屬性
類型
ALTERTABLE表名DROP
屬性1.完全刪除已存在的表(包括表模式和元組)
DROPTABLE表名2.修改已存在的表較常用
刪除/修改關(guān)系模式增加屬性,要指明類型刪除屬性要求:在MovieStar關(guān)系模式中添加phone屬性,電話號(hào)碼可取長為11的定長字符串。例2.6修改MovieStar模式ALTERTABLEMovieStar
ADD
phone
char(11)說明:新加屬性phone后,系統(tǒng)默認(rèn)其值為NULL。
NULL是“無值”或“空”的意思。默認(rèn)為Null,意味著該屬性值在沒有獲得實(shí)際值時(shí),可以為空。作用:當(dāng)向表中添加或修改一個(gè)元組時(shí),若其中某屬性實(shí)際值未知,則或者取NULL,或者指定一個(gè)常用值。這個(gè)常用值就稱為默認(rèn)值,用關(guān)鍵字DEFAULT來聲明。定義表時(shí),設(shè)置default約束的方法:例如,設(shè)置MovieStar中g(shù)ender的默認(rèn)值為‘M’,
genderchar(1)
DEFAULT
‘M’
默認(rèn)值約束CREATETABLE
表名(……
屬性類型
DEFAULT
默認(rèn)值,……)
作用:保證一個(gè)關(guān)系中任意兩個(gè)元組在主鍵上的取值不同,稱為實(shí)體完整性約束。任何違反此約束的插入或更新操作都將被拒絕。聲明主鍵:
在表定義時(shí)(CREATETABLE語句),有兩種方法當(dāng)主鍵是單一屬性時(shí),在聲明屬性的同時(shí)指定主鍵?!趯傩缘募s束聲明法當(dāng)主鍵是多屬性的集合時(shí),則在所有屬性聲明之后,單獨(dú)添加主鍵聲明子句?!谠M的約束聲明法主鍵(PrimaryKey)約束聲明主鍵的關(guān)鍵字:PRIMARYKEY
其構(gòu)成屬性的取值均不許NULL。聲明主鍵例2.7給出MovieStar表定義,name屬性有唯一性,可做主鍵。用PRIMARYKEY聲明主鍵。
CREATETABLEMovieStar(namevarchar(30)PRIMARYKEY,addressvarchar(200),genderchar(1),birthdaydate)CREATETABLEMovieStar(namevarchar(30),addressvarchar(200),genderchar(1),birthdaydate
,
PRIMARYKEY(name))或由多屬性構(gòu)成的主鍵,被稱為復(fù)合鍵。例2.8請(qǐng)給出Movies關(guān)系的關(guān)系模式定義,
設(shè){title,mYear}為主鍵。例2.8聲明復(fù)合鍵
CREATETABLEMovies(
titlevarchar(50),mYearint,mLenint,genrevarchar(10),studioNamevarchar(100), producerNochar(6)
,
PRIMARYKEY(title,mYear))表間的聯(lián)系在任意兩個(gè)有聯(lián)系的表中,雙方起聯(lián)系作用的屬性取值具有參照和被參照的關(guān)系。這是另一種約束,即參照完整性約束,也稱外鍵約束。Movies(title,mYear,mLen,genre,studioName,producerNo)MovieStar(name,address,gender,birthday)StarsIn(movieTitle,movieYear,starName)MovieExec(name,address,execNo,netWorth)Studio(name,address,presNo)觀察電影關(guān)系數(shù)據(jù)庫模式,可發(fā)現(xiàn)表間的如下聯(lián)系:請(qǐng)同學(xué)們畫出實(shí)驗(yàn)三的數(shù)據(jù)庫關(guān)系圖在關(guān)系數(shù)據(jù)庫中,兩個(gè)表間可能存在如下關(guān)系:一個(gè)表中某屬性或?qū)傩越M取值須引自另一個(gè)表中已有屬性值。這里,第一個(gè)表是引用表,第二個(gè)表是被參照表。
如學(xué)生選課表sc中學(xué)號(hào)snum必須來自表student中已有snum。
在SQL中,通過將引用表中這個(gè)屬性組設(shè)為外鍵,以實(shí)現(xiàn)兩表之間的引用與被引用關(guān)系。規(guī)定:在被參照表(又稱主鍵表)中,被參照的屬性或?qū)傩越M必須已聲明為主鍵;在引用表(又稱外鍵表)中,聲明外鍵約束,指明其屬性取值引自被參照表中的主鍵。外鍵(Foreignkey)約束在定義表時(shí),有兩種方法可聲明外鍵:如果外鍵是單個(gè)屬性,則在CREATETABLE語句中,外鍵屬性名及數(shù)據(jù)類型后以references為關(guān)鍵字,參照主鍵表的主鍵屬性。形式如下:若外鍵是屬性集時(shí),在CREATETABLE語句中,所有屬性聲明子句之后,添加外鍵聲明子句。形式如下:聲明外鍵FOREIGNKEY(屬性組)REFERENCES主鍵表名(主鍵屬性組)屬性類型REFERENCES主鍵表名(主鍵屬性)1.MovieExec表定義CREATETABLEMovieExec(namevarchar(30),addressvarchar(200),execNochar(6)PRIMARYKEY,netWorthmoney)例2.9電影數(shù)據(jù)庫2.Studio表定義CREATETABLEStudio(namevarchar(100)PRIMARYKEY,addressvarchar(200),presNochar(6)REFERENCESMovieExec(execNo))例2.9電影數(shù)據(jù)庫3.Movies表定義CREATETABLEMovies(titlevarchar(50),mYearint,mLenint,genrevarchar(10),studioNamevarchar(100)REFERENCESStudio(name),producerNochar(6)REFERENCESMovieExec(execNo),
PRIMARYKEY(title,mYear))5.StarsIn表定義CREATETABLEStarsIn(movieTitlevarchar(50),movieYearint,starNamevarchar(30)referencesMovieStar(name),foreignkey(movieTitle,movieYear)REFERENCESMovies(title,mYear),primarykey(movieTitle,movieYear,starName))例2.9電影數(shù)據(jù)庫4.MovieStar表定義CREATETABLEMovieStar(namevarchar(30)PRIMARYKEY,addressvarchar(200),genderchar(1),birthdaydate)作用:
是基于屬性的約束,它約束指定屬性的取值不為空。表定義時(shí),設(shè)置NOTNULL約束的方法:
若約束某屬性取值不空,則在該屬性名及其數(shù)據(jù)類型后,用關(guān)鍵字NOTNULL聲明即可。NOTNULL約束CREATETABLE
表名(……
屬性類型
NOTNULL,……)
例2.10設(shè)置NOTNULL約束要求:在MovieStar表定義時(shí),設(shè)gender不允許空。CREATETABLEMovieStar(
name
varchar(30)
PRIMARYKEY,
addressvarchar(200),
genderchar(1)
NOTNULL,
birthday
date
)作用:約束屬性取值必須滿足某一條件。當(dāng)執(zhí)行該屬性相關(guān)的更新操作時(shí),檢查check約束條件是否滿足,若不滿足,則拒絕執(zhí)行更新操作。表定義時(shí),設(shè)置CHECK約束的方法:
基于屬性的CHECK約束CREATETABLE
表名(……屬性類型
CHECK(屬性值應(yīng)滿足的條件表達(dá)式),
……)
例2.11設(shè)置基于屬性的CHECK約束
要求:
在MovieStar表定義時(shí),設(shè)gender只取‘F’或‘M’。CREATETABLEMovieStar(
namevarchar(30)
PRIMARYKEY,
addressvarchar(200),
gender
char(1)NOTNULLCHECK(genderin('F','M')),
birthdaydate
)作用:約束元組必須滿足條件。當(dāng)有新元組插入或有更新元組的操作時(shí),CHECK約束就進(jìn)行檢查,若新元組或更新的元組不滿足CHECK條件,則拒絕執(zhí)行插入或更新操作。主要用于,涉及多屬性的條件約束。聲明位置:在CREATETABLE所有屬性聲明、主鍵聲明、外鍵聲明后,單獨(dú)添加CHECK約束子句。形如,
CHECK(元組應(yīng)滿足的條件表達(dá)式)
基于元組的CHECK約束例2.12設(shè)置基于元組的CHECK約束要求:在MovieStar表定義時(shí),加如下約束:如果一個(gè)影星性別為男性,則其姓名不能以Ms.開始。CREATETABLEMovieStar(
namevarchar(30)
PRIMARYKEY,
addressvarchar(200),
gender
char(1)CHECK(genderin('M','F')),
birthdaydate
,
CHECK(gender='F'ORnameNOTLIKE'Ms.%')
)
類型
運(yùn)算符用法示例算術(shù)比較
>、<、<>、=、<=、>=、!<、!>、!=實(shí)驗(yàn)三SC表CHECK(score>=0andscore<=100)確定范圍
BETWEEN…AND、NOTBETWEEN…AND實(shí)驗(yàn)三course表CHECK(creditsBETWEEN0AND8)集合屬于
IN、NOTIN實(shí)驗(yàn)三Student表CHECK(sexIN('男',
'女'))字符匹配
LIKE、NOTLIKE實(shí)驗(yàn)三Student表CHECK(snumLIKE's%')邏輯運(yùn)算
AND、OR、NOT實(shí)驗(yàn)三SC表CHECK(score>=0andscore<=100)補(bǔ)充:CHECK約束常用運(yùn)算符補(bǔ)充:LIKE運(yùn)算的中通配符通配符含義用法示例%包含零個(gè)或多個(gè)字符的任意字符串。MovieStar表CHECK(name
LIKE'Ms.%')約束name屬性值以Ms.開始。_(下劃線)任何單個(gè)字符。實(shí)驗(yàn)三Course表CHECK(cnum
LIKE'c___')約束cnum屬性值以c為首的4個(gè)字符。[]在指定范圍([a-f])或集合([abcdef])中的任何單個(gè)字符。實(shí)驗(yàn)三Sections表CHECK(secnum
LIKE'[0-9][0-9][0-9][0-9][0-9][0-9]')約束secnum必須為6為數(shù)字。[^]不在指定范圍([^a-f])或集合([^abcdef])中的任何單個(gè)字符。MovieStar表CHECK(nameLIKE'[^0-9]%')約束name屬性首字母不為數(shù)字。作用:
是基于屬性的約束,它約束指定屬性的非空取值唯一。表定義時(shí),設(shè)置Unique約束的方法:
若約束某屬性取值唯一,則在該屬性名及其數(shù)據(jù)類型后,用關(guān)鍵字Unique聲明即可。Unique約束CREATETABLE
表名(……
屬性類型
Unique,……)
例2.13設(shè)置Unique(唯一值)約束要求:在MovieStar表定義中添加一個(gè)屬性phone,設(shè)其為長度為12的字符串,并約束其非空取值唯一。CREATETABLEMovieStar(
namevarchar(30)
PRIMARYKEY,
addressvarchar(200),
gender
char(1)CHECK(genderin('M','F')),
birthdaydate
,
phonechar(12)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療輔助教育數(shù)據(jù)的解讀與利用
- 兒童心理健康與共情能力的關(guān)系研究
- 學(xué)習(xí)動(dòng)機(jī)從理論到實(shí)踐的教育心理學(xué)解讀
- 學(xué)生學(xué)習(xí)成效與心理支持的關(guān)聯(lián)性
- 抖音商戶剪輯師成片質(zhì)量評(píng)估制度
- 全球創(chuàng)新藥研發(fā)管線動(dòng)態(tài)與2025年生物制藥行業(yè)研發(fā)創(chuàng)新成果轉(zhuǎn)化路徑優(yōu)化路徑優(yōu)化分析報(bào)告
- 八大城市幼教市場(chǎng)洞察:2025年幼兒早期教育產(chǎn)品與服務(wù)創(chuàng)新報(bào)告
- 公交優(yōu)先戰(zhàn)略在城市交通擁堵治理中的2025年實(shí)施挑戰(zhàn)報(bào)告
- Calanolide-A-生命科學(xué)試劑-MCE
- 廣西醫(yī)科大學(xué)《日語論文寫作》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年美術(shù)教師編制考試模擬試卷:美術(shù)教育心理學(xué)在課堂管理中的應(yīng)用試題
- 農(nóng)村商業(yè)銀行貸款協(xié)議書
- DB62T 3081-2022 綠色建筑工程驗(yàn)收標(biāo)準(zhǔn)
- 2024年云南文山州州屬事業(yè)單位選調(diào)109名工作人員考試試卷筆試題庫含答案
- 建筑與環(huán)境設(shè)計(jì)專題知到智慧樹期末考試答案題庫2025年寧夏大學(xué)
- 從北銀消費(fèi)金融騙貸事件透視北京銀行風(fēng)險(xiǎn)結(jié)構(gòu)與應(yīng)對(duì)策略
- 《蠟染與扎染》教學(xué)課件-2024-2025學(xué)年人教版(2024)初中美術(shù)九年級(jí)上冊(cè)
- (高清版)DG∕TJ 08-2383-2021 城市災(zāi)害損失評(píng)估技術(shù)標(biāo)準(zhǔn)
- 2025-2030年中國眼鏡鏡片磨邊機(jī)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 財(cái)產(chǎn)離世繼承協(xié)議書
- 可行性研究報(bào)告學(xué)校擴(kuò)建項(xiàng)目可研報(bào)告
評(píng)論
0/150
提交評(píng)論