數(shù)據(jù)庫系統(tǒng)原理-第二章 關(guān)系數(shù)據(jù)模型_第1頁
數(shù)據(jù)庫系統(tǒng)原理-第二章 關(guān)系數(shù)據(jù)模型_第2頁
數(shù)據(jù)庫系統(tǒng)原理-第二章 關(guān)系數(shù)據(jù)模型_第3頁
數(shù)據(jù)庫系統(tǒng)原理-第二章 關(guān)系數(shù)據(jù)模型_第4頁
數(shù)據(jù)庫系統(tǒng)原理-第二章 關(guān)系數(shù)據(jù)模型_第5頁
已閱讀5頁,還剩81頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第2章章 關(guān)系數(shù)據(jù)模型關(guān)系數(shù)據(jù)模型 2.1 數(shù)據(jù)模型概述2.2 關(guān)系模型基礎(chǔ)2.3 在SQL中定義關(guān)系模式2.4 代數(shù)查詢語言2.5 關(guān)系上的約束Page 12.1 數(shù)據(jù)模型概述數(shù)據(jù)模型概述 數(shù)據(jù)模型數(shù)據(jù)模型(data model)是用于描述數(shù)據(jù)或信是用于描述數(shù)據(jù)或信息的符號(hào)息的符號(hào). 在信息世界內(nèi)采用的是概念模型在信息世界內(nèi)采用的是概念模型. 在數(shù)據(jù)庫中采用的數(shù)據(jù)模型主要由三部分在數(shù)據(jù)庫中采用的數(shù)據(jù)模型主要由三部分組成組成: 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) relational model = tables; network and hierarchical models = graphs/trees.

2、 操作操作 約束約束Page 22.1 數(shù)據(jù)模型概述數(shù)據(jù)模型概述 一些重要的數(shù)據(jù)模型一些重要的數(shù)據(jù)模型: 關(guān)系數(shù)據(jù)模型關(guān)系數(shù)據(jù)模型, 包括對(duì)象關(guān)系模型的拓展包括對(duì)象關(guān)系模型的拓展; 半結(jié)構(gòu)化數(shù)據(jù)模型半結(jié)構(gòu)化數(shù)據(jù)模型, 包括包括 XML(擴(kuò)展標(biāo)記語言擴(kuò)展標(biāo)記語言) 和相關(guān)的標(biāo)準(zhǔn)和相關(guān)的標(biāo)準(zhǔn); 網(wǎng)狀網(wǎng)狀(Network)模型模型 與層次與層次( Hierarchical )模型模型 高級(jí)數(shù)據(jù)模型高級(jí)數(shù)據(jù)模型 The Entity/Relationship Model Object Definition LanguagePage 3 關(guān)系數(shù)據(jù)模型簡介,例如:描述電影信息的movies關(guān)系movies

3、(title, year, length, genre)2.1 數(shù)據(jù)模型概述數(shù)據(jù)模型概述Page 4半結(jié)構(gòu)化模型簡介: 半結(jié)構(gòu)化數(shù)據(jù)類似樹或圖 半結(jié)構(gòu)化模型采用XML(eXtensive Makeup Language, 可擴(kuò)展標(biāo)記語言)描述2.1 數(shù)據(jù)模型概述數(shù)據(jù)模型概述Page 5 1939 length 231 drama 1977 length 124 sciFi 1992 length 95 comedy 2.1 數(shù)據(jù)模型概述數(shù)據(jù)模型概述Page 6幾種建模方法比較: 關(guān)系模型得到普遍應(yīng)用 半結(jié)構(gòu)化模型在互聯(lián)網(wǎng)應(yīng)用中得到發(fā)展2.1 數(shù)據(jù)模型概述數(shù)據(jù)模型概述Page 72.1 數(shù)據(jù)模型

4、概述數(shù)據(jù)模型概述l為什么使用關(guān)系模型為什么使用關(guān)系模型? 它提供了一種簡單的、有限的方法對(duì)數(shù)據(jù)進(jìn)行建模它提供了一種簡單的、有限的方法對(duì)數(shù)據(jù)進(jìn)行建模. 它對(duì)這些數(shù)據(jù)提供了一套有限的,但是很有效的操作集它對(duì)這些數(shù)據(jù)提供了一套有限的,但是很有效的操作集. 它使我們可以使用高級(jí)的程序設(shè)計(jì)語言,如它使我們可以使用高級(jí)的程序設(shè)計(jì)語言,如SQL, 在較高的層次上進(jìn)行在較高的層次上進(jìn)行開發(fā)開發(fā).Page 8titleyearlengthgenre Gone With the Wind1939231 drama Star Wars1977124 sciFi Waynes World1992 95 comedy2

5、.2 關(guān)系模型基礎(chǔ)關(guān)系模型基礎(chǔ) 關(guān)系關(guān)系: 關(guān)系模型為人們提供了一種表達(dá)數(shù)據(jù)的單一的關(guān)系模型為人們提供了一種表達(dá)數(shù)據(jù)的單一的方法方法. 一張二維表被稱作一個(gè)關(guān)系一張二維表被稱作一個(gè)關(guān)系. 每個(gè)關(guān)系有一個(gè)關(guān)系名每個(gè)關(guān)系有一個(gè)關(guān)系名.MoviesPage 92.2.1 屬性屬性 Attribute: 關(guān)系的列稱之為屬性關(guān)系的列稱之為屬性. 關(guān)系的每個(gè)屬性有一個(gè)名稱關(guān)系的每個(gè)屬性有一個(gè)名稱, 描述所在列的語義描述所在列的語義. 一個(gè)關(guān)系中的兩個(gè)屬性不可重名一個(gè)關(guān)系中的兩個(gè)屬性不可重名.titleyearlengthgenreGone With the Wind1939231dramaStar War

6、s1977124sciFiWaynes World199295comedyMoviesAttributes(columnheaders)Page 102.2.2 模式模式 關(guān)系模式關(guān)系模式 = 關(guān)系名關(guān)系名+ 屬性集屬性集. Example: Movies (title, year, length, genre) or Movies (title: string, year: integer, length: integer, genre: string) 改變關(guān)系模式中屬性的順序改變關(guān)系模式中屬性的順序, 不影響關(guān)系的不影響關(guān)系的語義語義. Example: Movies (year, ti

7、tle, length, genre)Page 112.2.2 模式模式 在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)庫是由一個(gè)或多個(gè)關(guān)在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)庫是由一個(gè)或多個(gè)關(guān)系組成。系組成。 關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫 = collection of relations. 關(guān)系數(shù)據(jù)庫模式關(guān)系數(shù)據(jù)庫模式= set of all relation schemas in the database. Page 12titleyearlengthgenre Gone With the Wind1939231 drama Star Wars1977124 sciFi Waynes World1992 95 comedy2.2.3 元組

8、元組 Tuples: 關(guān)系中除含有屬性名所在行以外的其它行稱作元組關(guān)系中除含有屬性名所在行以外的其它行稱作元組. 關(guān)系中可以沒有元組關(guān)系中可以沒有元組. 每個(gè)元組相對(duì)于關(guān)系的每個(gè)屬性,都有一個(gè)對(duì)應(yīng)的每個(gè)元組相對(duì)于關(guān)系的每個(gè)屬性,都有一個(gè)對(duì)應(yīng)的分量值分量值. Tuples(rows)MoviesPage 132.2.3 元組元組 元組的表達(dá)元組的表達(dá) 單獨(dú)表示一個(gè)元組時(shí),常用逗號(hào)隔開各個(gè)分量,單獨(dú)表示一個(gè)元組時(shí),常用逗號(hào)隔開各個(gè)分量,并用圓括號(hào)括起來并用圓括號(hào)括起來. Example: (Star Wars, 1977, 124, sciFi) 當(dāng)單獨(dú)表示元組時(shí),屬性名不出現(xiàn)。當(dāng)單獨(dú)表示元組時(shí),

9、屬性名不出現(xiàn)。 We should always use the order in which the attributes were listed in the relation schema.Page 142.2.4 域域 Domains: 每個(gè)屬性所允許的值集稱之為該屬性的域每個(gè)屬性所允許的值集稱之為該屬性的域. 關(guān)系模型要求每個(gè)屬性的值具有原子性,即不關(guān)系模型要求每個(gè)屬性的值具有原子性,即不可再分可再分. 所以,域必須是基本的數(shù)據(jù)類型所以,域必須是基本的數(shù)據(jù)類型, 如:如: integer, char(n), date, time. We can represent a schema

10、as: Movies ( title: string, year: integer, length: integer, genre: string) Page 152.2.5 關(guān)系的等價(jià)表示關(guān)系的等價(jià)表示 Relations are sets of tuples, not lists of tuples. 在關(guān)系中,元組的排列順序是無關(guān)的在關(guān)系中,元組的排列順序是無關(guān)的. 任一元組在關(guān)系中只能出現(xiàn)一次任一元組在關(guān)系中只能出現(xiàn)一次. We can reorder the tuples of a relation, without changing the relation. We can reo

11、rder the attributes of a relation, without changing the relation. P13/Fig. 2-4.Page 162.2.6 關(guān)系實(shí)例關(guān)系實(shí)例 The schema of a relation is relatively static, while the tuples change over time. Relation instances: 一個(gè)給定關(guān)系在某一時(shí)刻的元組的集合稱為一個(gè)給定關(guān)系在某一時(shí)刻的元組的集合稱為該關(guān)系的一個(gè)實(shí)例該關(guān)系的一個(gè)實(shí)例. 關(guān)系的實(shí)例是隨時(shí)間變化的關(guān)系的實(shí)例是隨時(shí)間變化的. The set of tupl

12、es that are in the relation “now” is “current instance(當(dāng)前實(shí)例當(dāng)前實(shí)例)”. 數(shù)據(jù)庫中常常只保存關(guān)系的當(dāng)前實(shí)例。數(shù)據(jù)庫中常常只保存關(guān)系的當(dāng)前實(shí)例。Page 172.2.7 關(guān)系上的鍵關(guān)系上的鍵 Key(鍵鍵): 鍵由關(guān)系的一組屬性構(gòu)成,通過定義鍵,可以鍵由關(guān)系的一組屬性構(gòu)成,通過定義鍵,可以保證在關(guān)系實(shí)例中,任意兩個(gè)元組在定義為鍵保證在關(guān)系實(shí)例中,任意兩個(gè)元組在定義為鍵的屬性集上取值不完全相同的屬性集上取值不完全相同. Example: Students ( Sno, name, gender, birthdate ) Movies (

13、title, year, length, genre )Page 182.2.7 關(guān)系上的鍵關(guān)系上的鍵l Example: Movies ( title, year, length, genre, studioName, starName ) title, year 是鍵嗎是鍵嗎? title, year, starName 成績成績 ( 學(xué)號(hào)學(xué)號(hào), 課號(hào)課號(hào), 成績成績 ) 學(xué)號(hào)學(xué)號(hào), 課號(hào)課號(hào)Page 192.2.8 數(shù)據(jù)庫模式示例數(shù)據(jù)庫模式示例 The database schema in this book: Movies(title, year, length, genre, stu

14、dioName, producerC#) MovieStar(name, address, gender, birthdate) StarsIn(movieTitle, movieYear, starName) MovieExec(name, address, cert#, netWorth) Studio(name, address, presC#) cert# - 證書號(hào)證書號(hào) MovieExec 電影制片電影制片Page 202.2.8 數(shù)據(jù)庫模式示例數(shù)據(jù)庫模式示例為某商品銷售公司構(gòu)作一個(gè)銷售業(yè)務(wù)數(shù)據(jù)庫系統(tǒng),該系統(tǒng)至少應(yīng)管理為某商品銷售公司構(gòu)作一個(gè)銷售業(yè)務(wù)數(shù)據(jù)庫系統(tǒng),該系統(tǒng)至少應(yīng)管理以下

15、內(nèi)容:以下內(nèi)容: 公司分為多個(gè)下屬部門公司分為多個(gè)下屬部門(Department),如,如“江蘇銷售部江蘇銷售部”,“上海銷上海銷售部售部”等。每個(gè)部門有若干銷售員等。每個(gè)部門有若干銷售員(Salesman),每個(gè)銷售員有唯一,每個(gè)銷售員有唯一的員工號(hào)的員工號(hào)(如如“E0025”)和身份證號(hào),也包含姓名、性別、出生日期和身份證號(hào),也包含姓名、性別、出生日期、電話等信息。一個(gè)銷售員僅屬于一個(gè)部門,且每個(gè)部門有一個(gè)、電話等信息。一個(gè)銷售員僅屬于一個(gè)部門,且每個(gè)部門有一個(gè)銷售員擔(dān)任部門經(jīng)理。銷售員擔(dān)任部門經(jīng)理。 。 系統(tǒng)應(yīng)管理客戶信息系統(tǒng)應(yīng)管理客戶信息(Customer)(Customer),包含:

16、名稱、省、市、單位名,包含:名稱、省、市、單位名稱、電話等。稱、電話等。 系統(tǒng)應(yīng)管理所有銷售的商品系統(tǒng)應(yīng)管理所有銷售的商品(Product):制造商:制造商(如如“春蘭春蘭”、“海爾海爾”)、種類、種類(如如“摩托車摩托車”、“空調(diào)機(jī)空調(diào)機(jī)”)、規(guī)格、規(guī)格(如如“MT125”型摩托車、型摩托車、“RE1500”型空調(diào)型空調(diào))、價(jià)格、功能及性能描述。、價(jià)格、功能及性能描述。 該系統(tǒng)用銷售訂單該系統(tǒng)用銷售訂單(Sales order)表示銷售業(yè)務(wù)。每個(gè)訂單有一個(gè)訂表示銷售業(yè)務(wù)。每個(gè)訂單有一個(gè)訂單號(hào)和簽訂日期,且對(duì)應(yīng)一個(gè)客戶和一個(gè)銷售員。一個(gè)訂單至少單號(hào)和簽訂日期,且對(duì)應(yīng)一個(gè)客戶和一個(gè)銷售員。一個(gè)訂

17、單至少銷售一種產(chǎn)品銷售一種產(chǎn)品( (Salesitem) ),并可銷售多種產(chǎn)品,且每種產(chǎn)品應(yīng)確,并可銷售多種產(chǎn)品,且每種產(chǎn)品應(yīng)確定其銷售數(shù)量和單價(jià),以計(jì)算銷售金額。定其銷售數(shù)量和單價(jià),以計(jì)算銷售金額。Page 212.2.8 數(shù)據(jù)庫模式示例數(shù)據(jù)庫模式示例l 關(guān)系數(shù)據(jù)庫模式:關(guān)系數(shù)據(jù)庫模式: Customer (custid, name, prov, city, phone, unit) Product (prodid, factory, type, spec, price, desc) Salesman (empid, idno, name, gender, phone, deptid) De

18、partment (deptid, name, headerid) Salesorder (orderno, signdate, empid, custid) Salesitem (orderno, lineno, prodid, unitprice, quantity) Page 222.2 關(guān)系模型基礎(chǔ)關(guān)系模型基礎(chǔ) Exercise:p15 2.2.1 課內(nèi)練習(xí)課內(nèi)練習(xí)Page 232.3 在在SQL中定義關(guān)系模式中定義關(guān)系模式 SQL:Structured Query Language SQL的主要內(nèi)容的主要內(nèi)容: DQL (select):DQL is primarily a quer

19、y language, for getting information from a database. DML (insert, delete, update) DDL (create, drop, alter, .):SQL also includes a data-definition component for describing database schemas. DCL (grant, revoke, .)Page 242.3.1 SQL中的關(guān)系中的關(guān)系 SQL 區(qū)分三類關(guān)系區(qū)分三類關(guān)系: 存儲(chǔ)的關(guān)系,稱為表。這是通常要處理的一種關(guān)系,存儲(chǔ)的關(guān)系,稱為表。這是通常要處理的一種關(guān)系

20、,它在數(shù)據(jù)庫中存儲(chǔ),可以對(duì)其元組進(jìn)行查詢和更新它在數(shù)據(jù)庫中存儲(chǔ),可以對(duì)其元組進(jìn)行查詢和更新. 視圖,視圖, 通過計(jì)算來定義的關(guān)系。這種關(guān)系的數(shù)據(jù)并通過計(jì)算來定義的關(guān)系。這種關(guān)系的數(shù)據(jù)并不真正存儲(chǔ)在數(shù)據(jù)庫中不真正存儲(chǔ)在數(shù)據(jù)庫中, 但是可以在需要的時(shí)候被構(gòu)但是可以在需要的時(shí)候被構(gòu)造出來。造出來。 臨時(shí)表臨時(shí)表, 它在執(zhí)行查詢或更新時(shí),由它在執(zhí)行查詢或更新時(shí),由 SQL 處理程序臨處理程序臨時(shí)構(gòu)造。這些臨時(shí)表會(huì)在處理結(jié)束后被刪除,不會(huì)寫時(shí)構(gòu)造。這些臨時(shí)表會(huì)在處理結(jié)束后被刪除,不會(huì)寫入數(shù)據(jù)庫中入數(shù)據(jù)庫中.Page 252.3.2 數(shù)據(jù)類型數(shù)據(jù)類型 關(guān)系中的所有屬性都必須有一個(gè)數(shù)據(jù)類型關(guān)系中的所有屬性都

21、必須有一個(gè)數(shù)據(jù)類型.1. Character strings of fixed or varying length. Char(n), Varchar(n) 2. Bit strings of fixed or varying length. Bit(n), bit varying(n)3. Integer values.Tinyint, Smallint, Int | Integer, Bigint4. Floating-point numbers Real, double, float Decimal | dec(precision, scale), numeric(precision,

22、scale) 5. Dates and timesDate yyyy-mm-ddTime hh:mm:ss.sssss6. Boolean True, False, UnknownPage 26create table movies ( title char(30), year int, length int, genre char(10), studioname char(30), producerc int );2.3.3 簡單的表定義簡單的表定義 Page 27create table students ( sid char(9), name char(8), sex char(2) )

23、;sidnamesexB12070101劉夢(mèng)女B12070102朱正潔女B12070103閆文柯女B12070104季曉倩女B12070105吳塵女B12070106曹雪寧女students2.3.3 簡單的表定義簡單的表定義 Page 282.3.3 簡單的表定義簡單的表定義 Create a tableCREATE TABLE salesman( empid char(5) PRIMARY KEY, idno char(18) UNIQUE, name char(8) NOT NULL, gender bit NOT NULL, phone char(20), deptid int NUL

24、L); 注意,在一個(gè)數(shù)據(jù)庫中,不可以出現(xiàn)重名的表注意,在一個(gè)數(shù)據(jù)庫中,不可以出現(xiàn)重名的表.說明主鍵說明主鍵說明唯一性說明唯一性說明不可為空說明不可為空默認(rèn)允許空值默認(rèn)允許空值Page 292.3.4 修改關(guān)系模式修改關(guān)系模式 Delete a table DROP TABLE salesman; Modify the schema of an existing relation ALTER TABLE R Add column-name datatype NOT NULL; ALTER TABLE R Drop column-name; Example:Alter Table salesman

25、 Add birthdate date;Page 302.3.5 缺省值缺省值 使用缺省值使用缺省值: 創(chuàng)建或修改元組時(shí)創(chuàng)建或修改元組時(shí), 有時(shí)并不知道元組的所有分有時(shí)并不知道元組的所有分量值量值. SQL provides the NULL value as default value. 當(dāng)我們說明屬性及其數(shù)據(jù)類型時(shí),我們可以加當(dāng)我們說明屬性及其數(shù)據(jù)類型時(shí),我們可以加上關(guān)鍵字上關(guān)鍵字 DEFAULT 以及一個(gè)適當(dāng)?shù)闹祦碚f明缺以及一個(gè)適當(dāng)?shù)闹祦碚f明缺省值省值(默認(rèn)值默認(rèn)值).Page 312.3.5 缺省值缺省值 Example:CREATE TABLE salesorder ( ordern

26、o int PRIMARY KEY, signdate date NOT NULL DEFAULT getdate(), empid char(5) NOT NULL, custid char(4) NOT NULL,) ; 對(duì)于整型數(shù),對(duì)于整型數(shù), SQL Server中有一種常用的缺省值:中有一種常用的缺省值:IDENTITY(n1, n2) orderno int IDENTITY(1000, 1) PRIMARY KEY, DEFAULT DATE 1900-01-01Page 322.3.6 說明鍵說明鍵 SQL 語句中有兩種說明主鍵的方式語句中有兩種說明主鍵的方式.1. 在屬性被列

27、入關(guān)系模式時(shí),聲明其為主鍵在屬性被列入關(guān)系模式時(shí),聲明其為主鍵.Example: CREATE TABLE department( deptid int PRIMARY KEY, name char(40) NOT NULL, headerid char(5) NULL);Page 332.3.6 說明鍵說明鍵2. 在模式聲明的項(xiàng)目表中增加表項(xiàng),說明一個(gè)或一在模式聲明的項(xiàng)目表中增加表項(xiàng),說明一個(gè)或一組屬性是主鍵組屬性是主鍵.Example: CREATE TABLE salesitem( orderno int, lineno int, prodid char(6) NOT NULL, uni

28、tprice decimal(8, 2) NOT NULL, quantity int NOT NULL, Primary Key (orderno, lineno) );Page 342.3.6 說明鍵說明鍵 The distinguish and relationship between Primary Key and Unique. 關(guān)系中的任意兩個(gè)元組不能在關(guān)系中的任意兩個(gè)元組不能在Primary Key的所有屬性或的所有屬性或Unique 的屬性集上完全相同的屬性集上完全相同. 任何違反該約束的操作企圖都會(huì)被系統(tǒng)拒絕任何違反該約束的操作企圖都會(huì)被系統(tǒng)拒絕. 每張表有且僅有一個(gè)每張表有

29、且僅有一個(gè)Primary Key, 但可以有任意多個(gè)但可以有任意多個(gè) Unique 項(xiàng)項(xiàng). An Unique attribute can be NULL. Attributes in Primary Key are not allowed to have NULL.Page 352.3 在在SQL中定義關(guān)系模式中定義關(guān)系模式 Exercise:P20 2.3.1 a) - d) 屬性的數(shù)據(jù)類型可參考屬性的數(shù)據(jù)類型可參考 P29 2.4.1給出的數(shù)據(jù)值來確定。給出的數(shù)據(jù)值來確定。Page 362.4 代數(shù)查詢語言代數(shù)查詢語言 數(shù)據(jù)模型不僅僅是用來描述數(shù)據(jù)的結(jié)構(gòu),也包含數(shù)據(jù)模型不僅僅是用來描述數(shù)

30、據(jù)的結(jié)構(gòu),也包含對(duì)這些數(shù)據(jù)進(jìn)行查詢或更新的方法,即運(yùn)算對(duì)這些數(shù)據(jù)進(jìn)行查詢或更新的方法,即運(yùn)算. 關(guān)系模型上的運(yùn)算有兩種方式,一種是代數(shù)的方關(guān)系模型上的運(yùn)算有兩種方式,一種是代數(shù)的方式,叫做關(guān)系代數(shù);一種是邏輯的方式,稱作關(guān)式,叫做關(guān)系代數(shù);一種是邏輯的方式,稱作關(guān)系演算,例如:系演算,例如:Datalog. 關(guān)系代數(shù)包含一些簡單但是功能強(qiáng)大的方法,可關(guān)系代數(shù)包含一些簡單但是功能強(qiáng)大的方法,可以從給定關(guān)系構(gòu)造出新關(guān)系。以從給定關(guān)系構(gòu)造出新關(guān)系。Page 372.4.2 關(guān)系代數(shù)關(guān)系代數(shù) 代數(shù)表達(dá)式由一些操作符和操作數(shù)組成。代數(shù)表達(dá)式由一些操作符和操作數(shù)組成。在關(guān)系代數(shù)中:在關(guān)系代數(shù)中: 操作數(shù)是

31、關(guān)系或表示關(guān)系的變量,操作數(shù)是關(guān)系或表示關(guān)系的變量, 它們可它們可以通過運(yùn)算產(chǎn)生新的關(guān)系以通過運(yùn)算產(chǎn)生新的關(guān)系. 操作符是表示特定運(yùn)算的符號(hào),這些運(yùn)算可操作符是表示特定運(yùn)算的符號(hào),這些運(yùn)算可以由給定關(guān)系構(gòu)造出新關(guān)系以由給定關(guān)系構(gòu)造出新關(guān)系. 關(guān)系代數(shù)可以作為關(guān)系的查詢語言關(guān)系代數(shù)可以作為關(guān)系的查詢語言.Page 382.4.3 關(guān)系代數(shù)概述關(guān)系代數(shù)概述傳統(tǒng)的關(guān)系代數(shù)運(yùn)算主要有以下四類傳統(tǒng)的關(guān)系代數(shù)運(yùn)算主要有以下四類:通常的集合運(yùn)算通常的集合運(yùn)算: 并并, 交,差交,差除去關(guān)系的某一部分的運(yùn)算除去關(guān)系的某一部分的運(yùn)算: 選擇選擇: 消除關(guān)系的某些行消除關(guān)系的某些行 (tuples)投影投影: 消

32、除關(guān)系的某些列消除關(guān)系的某些列 (attributes)組合兩個(gè)關(guān)系的元組的操作:組合兩個(gè)關(guān)系的元組的操作:笛卡爾積笛卡爾積: 將兩個(gè)關(guān)系中的元組以所有可能的方式配對(duì),將兩個(gè)關(guān)系中的元組以所有可能的方式配對(duì),形成一個(gè)新關(guān)系。形成一個(gè)新關(guān)系。連接連接:將兩個(gè)關(guān)系中的元組按一定的條件配對(duì),形成一將兩個(gè)關(guān)系中的元組按一定的條件配對(duì),形成一個(gè)新關(guān)系。個(gè)新關(guān)系。Natural joinTheta-join1.重命名重命名: 不影響關(guān)系中的元組不影響關(guān)系中的元組, 但是改變關(guān)系的屬性名或關(guān)但是改變關(guān)系的屬性名或關(guān)系名,即改變關(guān)系的模式系名,即改變關(guān)系的模式.Page 392.4.4 關(guān)系上的集合操作關(guān)系上

33、的集合操作 Operations on sets R and S: RS = t | tR or tS ,R與與S的并集,是由的并集,是由屬于屬于R或?qū)儆诨驅(qū)儆赟, 或既屬于或既屬于R又屬于又屬于S的元素構(gòu)成的元素構(gòu)成的集合的集合, 每個(gè)元素在集合中只出現(xiàn)一次每個(gè)元素在集合中只出現(xiàn)一次. RS = t | t R and tS , R與與S的交集,是的交集,是由既屬于由既屬于R又屬于又屬于S的元素構(gòu)成的集合的元素構(gòu)成的集合. R S = t | tR and not tS , R與與S的差集,的差集,是由屬于是由屬于R但不屬于但不屬于S的元素構(gòu)成的集合的元素構(gòu)成的集合. 注意注意 R S 不同

34、于不同于 S R.Page 402.4.4 關(guān)系上的集合操作關(guān)系上的集合操作 R 與與 S 應(yīng)滿足的條件應(yīng)滿足的條件: R與與S必須有同樣的模式必須有同樣的模式(有同樣的屬性集,對(duì)應(yīng)有同樣的屬性集,對(duì)應(yīng)相同的數(shù)據(jù)類型相同的數(shù)據(jù)類型). 集合運(yùn)算前,集合運(yùn)算前,R 與與S 的屬性必須調(diào)整為相同的的屬性必須調(diào)整為相同的順序順序.Page 41舉例Page 42舉例Page 43舉例Page 44舉例Page 452.4.5 投影投影 Projection(投影投影): 關(guān)系關(guān)系R的投影產(chǎn)生一個(gè)只包含的投影產(chǎn)生一個(gè)只包含R的部分列的新的部分列的新關(guān)系關(guān)系. R1 := A1,A2,An (R) R1

35、 是一個(gè)只包含關(guān)系是一個(gè)只包含關(guān)系 R 的的A1, A2, , An 列的新列的新關(guān)系關(guān)系. R1 的模式是的模式是: R1(A1, A2, , An). 投影運(yùn)算會(huì)消除運(yùn)算結(jié)果中的重復(fù)元組投影運(yùn)算會(huì)消除運(yùn)算結(jié)果中的重復(fù)元組.Page 462.4.5 投影投影titleyearlengthgenrestudioNameProducerC#ProducerC#Star WarsGalaxy QuestWayness World19771999199212410495sciFicomedycomedyFoxDreamWorksDreamWorksParamount123456789099999ti

36、tleyearlengthStar WarsGalaxy QuestWayness World19771999199212410495genre sciFi comedyMovies title,year,length(Movies)g e n re(Movies)Page 472.4.6 選擇選擇 Selection(選擇選擇): 對(duì)關(guān)系對(duì)關(guān)系R的選擇運(yùn)算產(chǎn)生一個(gè)包含的選擇運(yùn)算產(chǎn)生一個(gè)包含R的元組子的元組子集的新關(guān)系集的新關(guān)系. R1 := C(R) R1 的模式與的模式與R相同相同. R1 中的元組是中的元組是R中滿足給定條件中滿足給定條件C的元組,的元組,C是是一個(gè)含有一個(gè)含有R的屬性的

37、邏輯表達(dá)式的屬性的邏輯表達(dá)式. 條件表達(dá)式條件表達(dá)式 C: 運(yùn)算對(duì)象運(yùn)算對(duì)象: 常數(shù)或常數(shù)或R的屬性的屬性 運(yùn)算符運(yùn)算符: = NOT AND ORPage 482.4.6 選擇選擇titleyearlengthgenrestudioNameProducerC#Star WarsGalaxy Quest19771999124104sciFicomedyFoxDreamWorks1234567890length 100(Movies): titleyearlengthgenrestudioNameProducerC#Star Wars1977124sciFiFox12345length 100

38、AND studioName =FOX(Movies):titleyearlengthgenrestudioNameProducerC#ProducerC#Star WarsGalaxy QuestWayness World19771999199212410495sciFicomedycomedyFoxDreamWorksParamount123456789099999Movies Page 492.4.7 笛卡爾積笛卡爾積 Cartesian product(笛卡爾積笛卡爾積): 兩個(gè)集合兩個(gè)集合R與與S的笛卡爾積是一個(gè)有序的元的笛卡爾積是一個(gè)有序的元素對(duì)的集合,其第一個(gè)元素是素對(duì)的集合,其

39、第一個(gè)元素是R中的任意元中的任意元素,第二個(gè)元素是素,第二個(gè)元素是S中的任意元素中的任意元素 。 is the set of pairs that can be formed by choosing the first element of the pair to be any element of R and the second any element of S. 表示為表示為: RS 若若R和和S是關(guān)系,是關(guān)系, RS也是關(guān)系。也是關(guān)系。Page 502.4.7 笛卡爾積笛卡爾積 RS : 結(jié)果關(guān)系的模式,其屬性集是由結(jié)果關(guān)系的模式,其屬性集是由R的屬性集與的屬性集與S的屬性集的屬性集“

40、并并”起來構(gòu)成的。起來構(gòu)成的。 若屬性若屬性A既是既是R的屬性,也是的屬性,也是S的屬性,為加以的屬性,為加以區(qū)別,我們用區(qū)別,我們用R.A表示來自表示來自R的的A屬性,用屬性,用S.A表表示來自示來自S的的A屬性。屬性。 結(jié)果關(guān)系中的元組是結(jié)果關(guān)系中的元組是R中的元組和中的元組和S中的元組中的元組以所有可能的方式組合所構(gòu)成的,這些元組以所有可能的方式組合所構(gòu)成的,這些元組的前一部分分量值來自的前一部分分量值來自R,后一部分分量值來,后一部分分量值來自自S. 結(jié)果關(guān)系中的元組個(gè)數(shù)是結(jié)果關(guān)系中的元組個(gè)數(shù)是 NRNS.Page 512.4.7 笛卡爾積笛卡爾積AB1324BCD2495710681

41、1AR.BS.BCD1113332224442492495710571068116811RSRS Example:Page 522.4.8 自然連接自然連接 Natural join(自然連接自然連接): 與積相比,我們更經(jīng)常使用與積相比,我們更經(jīng)常使用連接連接操作。此時(shí)操作。此時(shí)兩個(gè)關(guān)系中的一對(duì)元組需要滿足一定的匹配兩個(gè)關(guān)系中的一對(duì)元組需要滿足一定的匹配條件方能連接起來。條件方能連接起來。 自然連接是最常用的連接方式。自然連接是最常用的連接方式。 關(guān)系關(guān)系R與與S自然連接需要滿足自然連接需要滿足: 有同名屬性有同名屬性. 同名屬性值相等同名屬性值相等. 表示為表示為: R S 或或: R S

42、Page 532.4.8 自然連接自然連接 設(shè)關(guān)系設(shè)關(guān)系R與與S的模式中有同名屬性的模式中有同名屬性A1, A2, . , An ,r和和s分別是來自分別是來自R和和S的元組,當(dāng)且僅當(dāng)?shù)脑M,當(dāng)且僅當(dāng)r和和s在屬性在屬性A1, A2, . , An 的分量值都對(duì)應(yīng)相等時(shí),的分量值都對(duì)應(yīng)相等時(shí), r和和s才能才能配對(duì),配對(duì), 作為結(jié)果關(guān)系中的元組。作為結(jié)果關(guān)系中的元組。 若若r和和s連接成為連接結(jié)果中的一個(gè)元組,則該元連接成為連接結(jié)果中的一個(gè)元組,則該元組被稱作組被稱作連接元組,連接元組,連接元組在連接元組在R和和S的屬性的屬性并集并集的每個(gè)屬性上均有一個(gè)分量值,且在的每個(gè)屬性上均有一個(gè)分量值,

43、且在R的屬性集的屬性集上的值與上的值與r相同,在相同,在S的屬性集上的值與的屬性集上的值與s相同。相同。 注意,自然連接會(huì)在結(jié)果集中作投影,去掉同名注意,自然連接會(huì)在結(jié)果集中作投影,去掉同名屬性的副本。屬性的副本。Page 542.4.8 自然連接自然連接AB1324BCD24957106811RSExample:R S ABCD13245768 注意:若關(guān)系注意:若關(guān)系R與關(guān)系與關(guān)系S沒有同名屬性,沒有同名屬性, 則則R與與S的的自然連接是無效的。自然連接是無效的。Page 552.4.8 自然連接自然連接BCD227338 4 510UVExample:U V ABC169278 3 8

44、7ABCD116227 3 3 8 4 510 連接時(shí),若某元組與另一關(guān)系中的任何元組皆不匹配,則該元組被稱作懸掛元組懸掛元組. Page 562.4.8 自然連接自然連接Example: 求姓名為張平的學(xué)生的各科成績求姓名為張平的學(xué)生的各科成績.Sname=張平張平(Students Enrollment) snosnameclass01張平230102李立230103王寧2302Students Enrollmentsnosnameclasscnoscore01張平2301c18001張平2301c27802李立2301c29003王寧2302c175snocnoscore01c18003

45、c17501c27802c290EnrollmentStudentssnosnameclasscnoscore01張平2301c18001張平2301c278Page 572.4.9 連接連接Theta-join:使用任意條件配對(duì)元組。使用任意條件配對(duì)元組。表示為表示為: R C S計(jì)算步驟計(jì)算步驟:先計(jì)算先計(jì)算R和和S的積;的積;在計(jì)算結(jié)果中選擇滿足條件在計(jì)算結(jié)果中選擇滿足條件C的元組。的元組。Page 58 = A D (U V) ?2.4.9 Theta-JoinsBCD2273384510UVExample:U A D V ABC169278387AU.BU.CV.BV.CD11169

46、2227833387227773388845101010 = A =100(movies):Page 63舉例:查詢選數(shù)據(jù)庫系統(tǒng)原理課程的同學(xué)姓名sidcidB12070101B1801020SB12070101B1801041SB12070101B1801381SB12070101B1801020Sname(title=數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理 (courses) enroll students)studentsenrollsidnamesexB12070101劉夢(mèng)女B12070102朱正潔女B12070103閆文柯女B12070104季曉倩女B12070105吳塵女B12070106曹

47、雪寧女Page 64舉例:查詢劉夢(mèng)同學(xué)所選的課程名title (name=劉夢(mèng)劉夢(mèng) (students) enroll courses )studentsenrollsidcidB12070101B1801020SB12070101B1801041SB12070101B1801381SB12070101B1801020SsidnamesexB12070101劉夢(mèng)女B12070102朱正潔女B12070103閆文柯女B12070104季曉倩女B12070105吳塵女B12070106曹雪寧女students2.4.11 命名和重命名命名和重命名 Renaming: 算符算符: S (A1, A2

48、,An) (R) 結(jié)果關(guān)系名為結(jié)果關(guān)系名為S,與,與R有完全相同的元組。有完全相同的元組。S的的屬性分別命名為屬性分別命名為A1, A2, ., An, 按從左至右的順按從左至右的順序序. 算符算符: S (R) 結(jié)果關(guān)系名為結(jié)果關(guān)系名為S,與,與R有完全相同的屬性,與有完全相同的屬性,與R有完全相同的元組。有完全相同的元組。Page 662.4.11 命名和重命名命名和重命名AB1324BCD24957106811RSAR.BS.BCD1113332224442492495710571068116811RS RS1 (X, C, D) (S) ABXCD1113332224442492495

49、710571068116811Example:An equivalent expression: RS (A, B, X, C, D) (RS) Page 67Snonamebirthdays1 Rose1992-10-10s2 Jack1991-12-10s3 Kate1992-10-102.4.11 命名和重命名命名和重命名 Example: Student(Sno, name, birthday) 求同一天生日的同學(xué)(學(xué)號(hào)對(duì))求同一天生日的同學(xué)(學(xué)號(hào)對(duì)) s1.Sno, s2.Sno, s1.birthday(S1(Student) S2 (Student) s1.birthday s2

50、.birthday AND s1.Sno s2.SnoSnonamebirthdays1 Rose1992-10-10s2 Jack1991-12-10s3 Kate1992-10-10S1S2Page 682.4.12 運(yùn)算之間的聯(lián)系運(yùn)算之間的聯(lián)系 有些運(yùn)算可由其它關(guān)系運(yùn)算表示有些運(yùn)算可由其它關(guān)系運(yùn)算表示. RS R (R S)-join: R c S c (R S)Natural join:R S L (c (R S) C 是形如是形如 R.A1 = S.A1 AND R.A2 = S.A2 AND . AND R.An = S.An 的條件表達(dá)式,的條件表達(dá)式,A1, A2, ., An

51、 是是R 和和S的共有屬的共有屬性性. L是所有是所有R中的屬性以及在中的屬性以及在S中但不在中但不在R中的屬性的列中的屬性的列表表.Page 692.4.12 運(yùn)算之間的聯(lián)系運(yùn)算之間的聯(lián)系 這三類運(yùn)算可由其它運(yùn)算導(dǎo)出的運(yùn)算稱作這三類運(yùn)算可由其它運(yùn)算導(dǎo)出的運(yùn)算稱作派生運(yùn)算派生運(yùn)算或?qū)С鲞\(yùn)算;或?qū)С鲞\(yùn)算; 其它類運(yùn)算:并,差,選擇,投影,笛卡其它類運(yùn)算:并,差,選擇,投影,笛卡爾積,和重命名運(yùn)算則稱作爾積,和重命名運(yùn)算則稱作基本運(yùn)算。基本運(yùn)算。Page 70舉例A B1 26 7B C D2 3 42 3 57 8 10A R.B S.B C D1223412235127810672346723

52、5677810RSR SA R.B S.B C D1223412235677810R.B=S.B(R S)A B C D1 2 3 41 2 3 56 7 8 10A,R.B,C,D(R.B=S.B(R S)Page 71 可通過賦值語句命名一些臨時(shí)關(guān)系,以簡化復(fù)雜可通過賦值語句命名一些臨時(shí)關(guān)系,以簡化復(fù)雜的關(guān)系代數(shù)表達(dá)式的關(guān)系代數(shù)表達(dá)式. 賦值語句中所用到的符號(hào)包括:賦值語句中所用到的符號(hào)包括: 關(guān)系名及用圓括號(hào)括起的屬性名列表關(guān)系名及用圓括號(hào)括起的屬性名列表. 關(guān)系名關(guān)系名Answer 習(xí)慣上用來表示最后一步運(yùn)算的結(jié)果習(xí)慣上用來表示最后一步運(yùn)算的結(jié)果. 賦值號(hào)賦值號(hào) := 賦值號(hào)右邊的任意

53、代數(shù)表達(dá)式賦值號(hào)右邊的任意代數(shù)表達(dá)式.Example: Movies (title, year, length, genre, studioName)R(t, y, l, g, s) := length 100 (Movies) S(t, y, l, g, s) := studioName = FOX (Movies) Answer(title, year) := t, y (R S )2.4.13 代數(shù)表達(dá)式的線性符號(hào)代數(shù)表達(dá)式的線性符號(hào)Page 722.4.14 Example設(shè)設(shè)R(A,B) 與與 S(A,B) 是有相同模式的關(guān)系是有相同模式的關(guān)系, 下列關(guān)下列關(guān)于關(guān)系代數(shù)表達(dá)式的等價(jià)判

54、斷中,哪一個(gè)是正于關(guān)系代數(shù)表達(dá)式的等價(jià)判斷中,哪一個(gè)是正確的確的? I. RS = R - (R - S) II. RS = S - (S - R) III. RS = R SI only I and II only C) I, II, and III D) None of the abovePage 732.4.14 Example下列四個(gè)關(guān)系代數(shù)表達(dá)式中,哪一個(gè)與其余三下列四個(gè)關(guān)系代數(shù)表達(dá)式中,哪一個(gè)與其余三個(gè)不等價(jià)?它們都基于關(guān)系個(gè)不等價(jià)?它們都基于關(guān)系R(A,B) 和和S(B,C). A, B (R S)R B (S)R( A (R) B (S) )A) A, R.B (R S)Pag

55、e 742.4.14 Example求既選修求既選修c1 課程,亦選修課程,亦選修 c2 課程的學(xué)生學(xué)號(hào)課程的學(xué)生學(xué)號(hào). Sno(Cno= c1 (Enrollment) Sno(Cno = c2 (Enrollment)求沒有選修求沒有選修c1課程的學(xué)生學(xué)號(hào)課程的學(xué)生學(xué)號(hào). Sno(Enrollment) Sno(Cno = c1 (Enrollment) )Sno(Cno= c1 and Cno = c2 (Enrollment) ?Sno(Cno c1 (Enrollment) ?SnoCnoScore01c18003c17501c27802c290EnrollmentorPage 75

56、求獲得求獲得c1課最高分的學(xué)生學(xué)號(hào)課最高分的學(xué)生學(xué)號(hào). Sno (Cno= c1 (Enrollment) ) - - E1.Sno (E1(Enrollment) E2 (Enrollment) E1.Score E2.Score AND E1.Cno =c1 AND E2.Cno =c1EnrollmentE1E2E1.SnoE1.CnoE1.ScoreE2.SnoE2.CnoE2.Score01c18002c19003c17501c18003c17502c190SnoCnoScore01c18003c17501c27802c190SnoCnoScore01c18003c17501c278

57、02c190Page 762.4.14 ExampleCustomer (custid, name, prov, city, phone, company) Product (prodid, factory, type, spec, price, desc) Salesman (empid, idno, name, gender, phone, deptid) Department (deptid, name, headerid) Salesorder (orderno, signdate, empid, custid) Salesitem (orderno, lineno, prodid,

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論