南開大學(xué)數(shù)據(jù)庫復(fù)習(xí)筆記_第1頁
南開大學(xué)數(shù)據(jù)庫復(fù)習(xí)筆記_第2頁
南開大學(xué)數(shù)據(jù)庫復(fù)習(xí)筆記_第3頁
南開大學(xué)數(shù)據(jù)庫復(fù)習(xí)筆記_第4頁
南開大學(xué)數(shù)據(jù)庫復(fù)習(xí)筆記_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第一章

1.元組tuple:數(shù)據(jù)表中的行;屬性attribute:數(shù)據(jù)表中的列;模式schema:

裝配數(shù)據(jù)的框架,數(shù)據(jù)表各個列的名字的集合(id,姓名,年齡,性別,專業(yè));

數(shù)據(jù)庫的模式:關(guān)系模式的集合

AnExampleofaRelationSchemas

TheSchem^ofaRelation:

-Rttabonnom*pluiottrftxjtenamm

-EQ.Produrt(Nam?.Price.Category.Manutacturcr)

-Inpracticewcaddthedomainforeachattribute

-E.g.Product(NameAtrinaPrkerwlCatc^ofyAtrina,

Manufactureritrina)

TheSchemaofaDatabase

-AsetofrelationKhamcn

-Eg.Product(Nanw.Prke.Cateoory,Manufacturef).

Vondof(Name.Address.Phone).

ruptet

2.三層架構(gòu)

(1)最底層physicallevel:物理模式、內(nèi)模式、存儲模式;按照數(shù)據(jù)模型將

數(shù)據(jù)存儲到磁盤中

(2)中間層logicallevel:模式、邏輯模式;schema;將用戶給出的模式信

息存儲到數(shù)據(jù)庫中

(3)最上層viewlevel:外模式、子模式、用戶模式;優(yōu)點:限制表中特定列

和行的使用,隱藏復(fù)雜查詢的細節(jié),提供安全保證

3,數(shù)據(jù)庫的最小存取單位是數(shù)據(jù)項

1.關(guān)系模式:表名(屬性名,有時在屬性名后會加上該屬性的數(shù)據(jù)類型如String、

Interger等),employee(empno,empname,deptno)

2.(1)Superkey(超鍵,超碼):數(shù)據(jù)表里一組屬性的集合,每一行記錄在這

幾個屬性上的值是唯一的

(2)candidateKey(候選鍵,候選碼):最小的超鍵(其中屬性數(shù)最少)

(3)primaryKey(主鍵、主碼):數(shù)據(jù)庫管理員DBA選擇的一個候選鍵,在模

式中會用下劃線標(biāo)注workson(empno,projectno,job,enterday)

(4)外鍵必須是另一個表的主鍵

3.實體完整性:主鍵不能為空不能重復(fù);參照完整性:外鍵如果取值一定要取

主鍵中出現(xiàn)的值

4.數(shù)據(jù)塊、數(shù)據(jù)頁

SQLServer的數(shù)據(jù)頁

?數(shù)據(jù)頁是8K.包括三部分:頁生磐援行和什魚費數(shù)組

?頁頭96個字節(jié)

-pagelD.nextpage.prevpage.objID.kn.slotCnt.level.

indexID.freeData.pminlen^

?數(shù)據(jù)行,最大長度8060個字節(jié)

-數(shù)據(jù)行不能躋貞存牝

?行偏移數(shù)組,每行2個字節(jié)

?DBCCPAGE

1.稠密索引:包括key和指針,對每個key值都建立索引,索引一定是按key

值排序的

DenseIndex(稠密索引)

2.稀疏索引:為每個數(shù)據(jù)塊只建立一個key值

3.為索引建立索引(一級、二級索弓])

4.(1)searchKey:找學(xué)號是1001的學(xué)生,1001就是searchKey

(2)primaryindex:主索引,索引key值的指針直接指向目標(biāo)的記錄快

(3)secondaryindex:輔助索引,已經(jīng)對某一key值構(gòu)建索引,還想對其他key

值構(gòu)建索引,后者就是輔助索引,二級索引不叫secondaryindex

5.數(shù)據(jù)庫中有重復(fù)出現(xiàn)的值時如何構(gòu)建索引

(1)構(gòu)建稠密索引,對所有重復(fù)的值都構(gòu)建索引

(2)構(gòu)建稀疏索引(兩種方法)

8

1

1

=

0O

0E

J一s

二O

JZ

X2S

B

6.有索引時刪除插入記錄

(1)稠密索引:

7.插入:無空間時做一個溢出鏈,當(dāng)溢出鏈很長時,定期重組

8.輔助索引:在沒有排序的另一個屬性上(不是主鍵)構(gòu)建索引,第一級索引

是稠密索引,第二級索引可以是稀疏索引

(1)問題:重復(fù)數(shù)據(jù)耗費空間一一構(gòu)建指針桶

9.磁盤結(jié)構(gòu)與訪問特征(1)B+樹:最下層是主索引

(2)哈希結(jié)構(gòu):底層存儲實現(xiàn)方式有兩種

桶滿之后使用溢出鏈

TwoalternativesTHQalternatives

record

keyth(kcy)key->h(key)

,fora、ccofidaryindex

?toimplementaprimaryindex

10.總結(jié)

本周課程總結(jié)

Howtofindarecordquickly?

本同課

?磁盤的結(jié)構(gòu)與訪問特征

?Conventionalindexes(sparse,dense.Primary

index.Secondaryindex)

?B+Trees(B+treerules,Insertion,Deletion)

?Hashingschemes

第二章

四、

1.學(xué)生實體集合(橢圓:屬性;方塊:實體集合)

Example

EntitysetStudentshastwoattributes,nameandSID(student

ID).

EachStudententityhasvaluesforthesetwoattributes,e.g.

(張.20191234)

2.ER圖(橢圓:屬性;方塊:實體集合;菱形:實體間的關(guān)系)

3.一對一,多對一,多對多;圓箭頭:從左向右有且只有一個,去除零的情況;

尖箭頭:小于等于一,可以為零

MultiplicityofE/RRelationsExample

,ConsiderBestsellerbetweenManfsand

Beers.

?Somebeersarenotthebest-sellerofany

manufacturer,soaroundedarrowtoManfs

wouldbeinappropriate.

,Butamanufacturerhastohaveabest-sellef

(weassumetheyarebeermanufacturers).

4.多路聯(lián)系

5.子類(用三角形isa表示),ER圖不能多重繼承,但是一個實體可以屬于多

個子類

6.總結(jié)

Relationships:Summary

?RelationMultiplicity

-many-om,on?-on?,many-many

?MultiwayRelationships

-Convertingamultiwayon?intomanybinaryon?t

?RolesinRelationships

?AttributesonRelationships

?Subclasses

M

0aMM(1**(*0

五、

1.參照完整性約束、域(字段的取值范圍)約束、其他約束

ModelingConstraints

Findingconstraintsispanofthemoddingprocess.

Commoalyusedcomtnints

Keys;socialsecuritynumberuniquelyidentifksapenon.

Referentialmicgnfyccnstnunts:ifyouworkforacompany,it

mustexistinIhedatabase.

Docnaincomtraiati:peoples'agesarcbetween0and200.

Oeoeralcomtrainu:allothers(almost#studentsenrollmaclass)

2.鍵:有一個或多個屬性構(gòu)成,要求當(dāng)前實體集合里沒有任何兩個實體在這些

鍵對應(yīng)的屬性上完全一致,用鍵可以對實體集合里的每一個實體進行唯一性的標(biāo)

識,在ER圖中用下劃線標(biāo)識;一個實體集合可以有很多鍵,其中一個被設(shè)計為

主鍵

在子類的層次結(jié)構(gòu)中,只需要為根節(jié)點設(shè)置鍵,該鍵必須為這個層次結(jié)構(gòu)里所

有的實體服務(wù)

KeysinE/RDiagrams

?Underlinethekeyattribute(s).

,InanIsahierarchy,onlytheroo^entitysethas

akey,anditmustserveasthekeyforall

entitiesinthehierarchy.

Example:

nameisKey

torBeers

3.弱實體集合(雙邊矩形表示,雙邊菱形是為了表示對弱實體集合進行唯一性

識別是支持聯(lián)系,沿著雙邊菱形的聯(lián)系可以拿到另一個實體的鍵屬性對弱實體集

合進行唯一性識別,不是所有和弱實體集合連接的菱形都是雙邊菱形)

(1)弱實體集合的屬性都不能對它進行唯一性識別,需要沿著從這個實體集合

出發(fā)的一個或多個多對一聯(lián)系找到另一個實體集合,將另一個實體集合的屬性包

含進來對當(dāng)前的弱實體集合進行唯一形識別

(2)弱實體集合的鍵是他自己的有下劃線的屬性和他的支持實體集合的鍵

?Occasionally,entitiesofanentitysetneed

*helpwtoidentifythemuniquely.

?EntitysetEissaidtobeweakifinorderto

identifyentitiesofEuniquely,weneedto

followoneormoremany-onerelationships

fromEandincludethekeyoftherelated

entitiesfromtheconnectedentitysets.

4.ER模型設(shè)計

(1)忠實(2)避免冗余(3)能用屬性的時候不要用實體集合,盡量少用弱實

體集合

(4)必須用實體集合不能用屬性的情況:有至少一個非鍵屬性或在某一個多對

一或多對多關(guān)系中是多端

5.關(guān)系型數(shù)據(jù)模型

將ER圖轉(zhuǎn)化為關(guān)系模型:(1)為每個實體創(chuàng)造一張表;(2)為每個關(guān)系創(chuàng)造

一張表:關(guān)系的屬性+關(guān)聯(lián)的實體的鍵,當(dāng)一個實體集合在一個聯(lián)系中出現(xiàn)多次

時要在這個聯(lián)系表中多寫幾次該實體集合的鍵(圖2)

TranslatingERDiagramtoRcl.DesignRelationshiptoRelation:AnotherExample

?Basiccases

-entitysetE>relationwithattributesofE

-rdatiomhipR-relationwithattribute!being

ofrelatedentitywb?attributesofR

?Specialcases

-combiningtworalotiom

-tromlotinguzcofoentityMb

-tromlotingi?-arelotionthipi

w

1.關(guān)系模型轉(zhuǎn)換特殊情況

(1)表的合并:多對一的聯(lián)系可能和多段的實體集合進行合并,聯(lián)系不需要單

獨創(chuàng)造表,但不能和一端進行合并,合并多對多聯(lián)系有風(fēng)險

合并方法:多端的實體集合的表加上一端的鍵屬性加上聯(lián)系的屬性

CombiningRelations

ItisOKandmoreefficienttocombinetherelationforan

entitysetEwiththerelationRforamany-one

relationshipfroryEtoanotherentityset.

Example:Drinkers(name.addr)andFavorite(drinker,

beer)combinetomakeDrinker1(name,addr,

favoriteBeer).

(2)弱實體集合

弱實體集合的表:弱實體集合屬性+支持實體集合的鍵屬性

弱實體集合關(guān)系的轉(zhuǎn)化:不需要為支持聯(lián)系單獨創(chuàng)建一張表,原因見圖2

(3)子類實體集合的轉(zhuǎn)化

方法一:面向?qū)ο?00方法,圖1中結(jié)構(gòu)可以表示四張表,每個包含根節(jié)點的子

樹都可以轉(zhuǎn)化出一張表,把這棵子樹里所有的屬性都放到表中

方法二:E/R方法,圖2,為每一個實體集合生成一張表,一個實體的信息可能

分布在多張表中(子類實體集合轉(zhuǎn)化時:該子類實體集合屬性+根節(jié)點鍵屬性)

方法三:圖3,使用空值的方法,只有一張表,所有屬性都在這張表里,有的位

置用空值填充

2.完整性約束

(1)實體完整性:主鍵中的屬性不能為空不能重復(fù)

(2)參照完整性:外鍵或取參照關(guān)系中的某個主鍵值或取空值(表示還未分配)

(3)用戶定義完整性:針對某一具體數(shù)據(jù)庫的約束條件,反應(yīng)某一具體應(yīng)用所

設(shè)計的數(shù)據(jù)必須滿足的語義要求

七、*

1.DDL:數(shù)據(jù)定義語言;DML:數(shù)據(jù)操作語言

DDL-DataDeGnitionLanguage

DML-DataManipulationLanguage

CREATE⑴Table-definetablename,attributes,typesInsert-Addasinglerow

(2)View-dofmeuserv>?wofdata

(3)Index-createindexonnommetedattributesDelete-Deleterowsofdatafromatable

DROP(1)Table?deletetable,attributesandvalues

Update-Amendattributevaluesinrows

(2)View-deleteuserv)ew(s)

(3)Index-deloteindex.mdoxe?

Select-From-Where-Querydata

SomeDBMShaveanALTERcommandtovaryattnbutecharacteristic*

2.numeric(p,d)p-d.d44.5J444.5X0.32X

BasicTypes

?char(o)/character(n)

?varchar(n)/charctervarying5

?int/int?ger3?

:震工—用■?■■y■

?real.doubleprecision?_■?.二5

3.(1)drop:刪除表;deletefrom:清空表但保留表結(jié)構(gòu);改變屬性列:圖1

ChangingColumns

Add/DropanattributeofrelationRwith

ALTERTABLE/?ADD/DROP〈column〉;

ALTERTABLEBarsADDphoneCHAR(16)

DEFAULT'unlisted';

ALTERTABLEBarsDROPCOLUMNlicense;

(2)聲明屬性:圖1用于只有一個屬性時,多個屬性需要獨立于屬性聲明(圖

2、3),但也可以用于一個屬性的聲明

圖2中兩種聲明方法不同,第一種上面三行允許,第二種上面三行不允許

聲明為unique可以為空,但只能有一個為空,聲明為primarykey不能為空

DeclaringSingle-AttributeKeysDeclaringKeys:Example

(\CREATETABLESells(

?PkK?PRIMARYKEVorUNIQUEafterth?typ?in怛jCHAR(20),

thededarationoftheattributebeerVARCHAR(20),

?Exampl*'pnaeREAL,

\UNTQUE(6aGbeert);

CREATETABLEBeers(

isdifferentfrohn-—

nameCHAR(20)UNIQUE,

CREATETABLESells(

manfCHAR(20)

bar^CHAR(20^UNIQUE,

beerVARCHAR(20)UNIQUE,

priceREAL);

聲明外鍵圖4、5

非空、設(shè)置默認值圖6

Example:MultiattributeKey

?Th*barandb??ftogetherareth*brayforS?lk

CREATETABLESells(

barCHAR(20),

boorVARCHAR(20),

priesREAL,

PRIMARYKEY(bar,boor)

Example:AsElement

CREATETABLEBeers(

CREATETABLESells(

nameCHAR(20)PRIMARYKEY,

manf-CHAR(20)D-barCHAR(20),

beerVARCHAR(20)DEFAULT'HouseBeef,

?而NOTNULL,

CREATETABLESells(A"TKIRARYKEY(bad

8rCHAR(20),);

beerCHAR(20),UMTtlot*

priceREAL,valaM

wUct,MUSI

FOREIGNKEY(boor)REFERENCES

Beers(name));insertiqto$ell$(bar)

values量3);

4.有外鍵時要對外鍵參照的鍵的值進行修改或刪除

(1)默認方式default:拒絕修改

(2)級聯(lián)處理cascade:更新時在有外鍵的表中進行同樣的操作,刪除時在有

外鍵的表中刪除相應(yīng)的元組。圖3級聯(lián)刪除,圖4級聯(lián)更新

(3)設(shè)為空值setNULL:更新被參照的表的主鍵時,將有外鍵的表中被影響的

值設(shè)為空值。圖5

ActionsTaken

Thethreepossiblewaystohandlebeen

thatsuddenlyceasetoexistare:

1’Refectthemodification.

MakethesamechangesinSens

□Deletedbwr^deleteSelhtuple.

□UpdatedbyrchangevaluemSeiis.

ChangethebeertoNULLinSeito

Example:Cascade

BudweiserAnheuwr-BuKh

BeenSelb

CK£A?BTABLESalla(

b?rciuutiaoi,

t9??rCKMt(20),

pr$eMAL.

roaeiOHKCir<t>e?t)rannKNCuBe?r*tM

oavrmraciuKAPtit

Example:SetNULL

OtMT*TABUS?U?(

b?rCHAR(30).

bMrCNMt(20).

P*ic?MAL,

ronzxSNKZY(bMr>?xrau?CE3Be?ra(M*e)

anUPWTKss:mnx);

(4)非空、設(shè)置默認值

5.Check約束

圖中check約束只會在sells表發(fā)生元組插入更新時檢查,beer表中元組插入

更新時不會檢查,約束強度比外鍵弱

圖2中最后一行?表示不是(不等于)

AttributebasedCheck:ExampleTupleBasedCheck:Example

CREATETABLESells(OnlyJoe'sBarcansellbeerformorethan$5.

barCHAR(20),CREATETABLESells(

beerCHAR(20)CHECK(beerIN

barCHAR(20)r

(SELECTnameFROMBeers)),beerCHAR(20)

priceREALCHECK(price<=5.00));r

priceREAL,

Checkonbeerislikeaforeign-keyconstraint,CHECK(bar='Joe"sBar'OR

except:price<=5.00));

Checkoccursonlywhenthe'beer'attributeof;

a'Sells'tupleisinsertedorupdated.ALTERTABLESells^DDCHECK(...)

Notwhena'Beers,tupleisdeletedorupdated.

ALTERTABLESdkADDCHECK(bar-'Jo?^Bar1orbeer<>'Mille/);

6.實例

createtableBecrs(

namevarchar(20)primarykey,

manfvarchar("))nolnuTTJ:-

createlatieBars(

namechar(20)primarykey,

addrvarchar(40)nolnull,

licenseintnotnull);

createtableDrinkers(

namechar(10)primarykey,

addrvarchar(40),

phonechart8));

Mysql中聲明外鍵需要顯式聲明

八、

1.union:并集;intersection:交集;except:差集

2.(1)Aggregations

(2)groupby:分組運算在關(guān)系的積運算和投影運算之后進行,如果groupby

屬性上存在空值則空值單獨作為一個分組存在(圖2、3)

Grouping

(na*bvtQgmj

yotiptwprojxtwni

TH1Ass

VXM*bvWbl

(3)having子句:所有聚集屬性(count,avg等)都可以在having子句中出

現(xiàn),但只有g(shù)roupby子句中的屬性可以在having子句中以不聚集的形式出現(xiàn),

如圖4倒數(shù)第三行的beer

SELECTListsWithAggregationHAVINGclause

Sells(bar,beer,price)?HAVINGdausesareselectionsongroups

?PossibleQuerytofindthebarthatsellsBudthebwioirrnanf);S?n$(b4Lbw,pr?c?)

cheapest:

?Findtheavcragepric*ofthosebeenthatareether

SELECTservedinatleast3bootormanufacturedbyBusch.

b?i

FROMpHc*priw

WHERE0.SELECTbw,AVG(pric?)

whmtw%ud、FROMS^ls

?Illegal.Why?

GROUPS

?Rule:Eacheiem6)t卜aSELECT

clausemustHAVING-^OUNT(,)>?3OR

eitherbeaggregatedorappearinagroup-by?嬴rIN(SELECTnamt

dause.

Problem:Howwoutdwefindthotbor,__________WHEREmanf-Bg1一二

3.(1)修改數(shù)據(jù):圖1、2(2)斷言:圖3、4,與創(chuàng)建表時的check不同,每

當(dāng)表發(fā)生改變時都會檢查,能永遠保證斷言中的條件為真(3)觸發(fā)器:圖5、6、

7,插入事件時只能使用NEW(圖6IF后面和value括號里),刪除事件只能使

用OLD(圖7)

DBModificationsUpdates

?Modifkaboninsert,ddrte,CMupdateUPDATEfetationSETjmgnmentsWHEREcondition:

ExampleDnnkers(nimeaddr,phone)

Syntax(

?INSERTINTOrelattonVALUES(fato<va?ue>);?DrinkerFred'sphonenumberis555-1212.

?INSERTINTOreUtion生ubqugfy);UPDATEpnnkers.

?DELETEFROMWHERE_condrtion;-SELfihfine."JS55<j2U'

?UPDATE后訴"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論