资料库系统DatabaseSystems.ppt

上传人:小飞机 文档编号:4947372 上传时间:2023-05-25 格式:PPT 页数:98 大小:493.50KB
返回 下载 相关 举报
资料库系统DatabaseSystems.ppt_第1页
第1页 / 共98页
资料库系统DatabaseSystems.ppt_第2页
第2页 / 共98页
资料库系统DatabaseSystems.ppt_第3页
第3页 / 共98页
资料库系统DatabaseSystems.ppt_第4页
第4页 / 共98页
资料库系统DatabaseSystems.ppt_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《资料库系统DatabaseSystems.ppt》由会员分享,可在线阅读,更多相关《资料库系统DatabaseSystems.ppt(98页珍藏版)》请在三一办公上搜索。

1、1,資料庫系統Database Systems,Introduction主講人:劉佳灝,2,相關名詞,資料庫(database)集合的特性資料庫系統資料庫管理系統(database management systems),3,資料庫,資料庫(DB)資料庫是相關資料的集合集合的特性集合中的元素沒有順序性集合中的元素不會重複集合可以是空的,4,資料庫管理系統,資料庫管理系統(DBMS)是許多程式的集合,讓使用者得以定義、建構,與處理資料庫定義:資料的型態、結構與限制建構:在DBMS的控制下,將資料儲存到媒體處理:查詢、更新,5,資料庫系統,使用者,SQL查詢/應用程式,資料庫管理系統,儲存綱要,儲

2、存資料庫,6,資料庫系統Database Systems,Database System Concepts,7,簡介,資料模型(Data Model)是提供資料抽象化的主要工具Data Model 是用來描述資料庫結構的一種概念Data Model的內容包含結構的表示方式限制運算(操作),8,資料模型 Data Model,Data Model使用的概念實體 Entity屬性 Attribute關係 Relationship,客戶,9,關聯式資料模型概念 Relational Model Concepts,關聯式模型將資料庫表示成一個關聯的集合相關名詞關聯(Relation)值組(Tuple)

3、屬性(Attribute)定義域(Domain),10,Relation Schemas 名詞簡介,PRODUCT,值組,屬性集合,關聯表名稱,顏色屬性,尺寸屬性,品名屬性,價格屬性,品號屬性,主鍵,價格資料,11,Relation Schemas 特性與內容,關聯表的屬性數目稱為它的維度一個關聯表中任兩個屬性名稱不可以重覆關聯表綱要(Relation Schema)包含:關聯表名稱屬性集宣告所有屬性的相對資料型態宣告主鍵的宣告外來鍵(Foreign Key)之宣告,12,DBMS的架構與資料獨立,Three Schema(三綱要架構)外層(景觀層)External Level:外部綱要概念層

4、 Conceptual Level:慨念綱要內層 Internal Level:內部綱要資料獨立邏輯資料獨立實體資料獨立,13,Three Schema,外層(又稱為景觀層)External Level:外部綱要描述特定使用者所感興趣的資料庫部分隱藏儲存結構等其他細節概念層 Conceptual Level:慨念綱要描述整個資料庫的結構隱藏儲存等細節著重在實體、資料型態、關係、使用者的操作與限制內層Internal Level:內部綱要用來描述資料庫的實際儲存結構與路徑,14,Data Independence 資料獨立,Logical data independence(邏輯資料獨立)改變

5、conceptual schema 時,不需改變 external schema(or application)Physical data independence(實體資料獨立)改變 internal schema 時,不需改變 conceptual schema,15,SQL,DDL 資料定義語言用來定義 concept schema與資料庫綱要之定義有關的操作,如資料庫的建立、表格的建立等命令DML 資料處理語言對資料庫資料進行擷取、新增、刪除與修改等處理之命令僅對資料有所影響,與資料庫綱要定義無關,16,資料庫系統Database Systems,Modeling Using the

6、Entity-Relationship Approach,17,屬性型態,簡單(Simple)複合(Composite)單值(Single-valued)多值(Multi-valued)儲存(Stored)導出(Derived),18,屬性型態,簡單(simple)與 複合(composite),姓,名,生日,地址,員工編號,電話,薪資,員工,姓名,19,地址,里別,隣號,郵遞區號,路別,縣市別,里隣,應該是簡單還是複合屬性?,20,屬性型態,單值(single-valued)與多值(multi-valued)Ex:一個部門只有一個部門編號與部門名稱,某些部門可能存同時在兩個地點(例如:一個部

7、門分別在 台中 與 彰化 各有據點),部門,名稱,部門編號,地點,21,屬性型態,儲存(stored)與 導出(derived)Ex:年紀可以經由生日換算得到,姓名,姓,名,生日,地址,員工編號,電話,薪資,員工,年紀,22,屬性型態(範例二),Ex:一個客戶的交易次數可以經由訂購紀錄中計算出來,客戶,編號,交易次數,姓名,電話,商品,編號,名稱,價格,日期,交易量,訂購,23,鍵值屬性,一個具有唯一性的屬性 假設:每一個客戶的編號會唯一每一個商品的編號會唯一,且每一商品的名稱也會唯一,客戶,編號,交易次數,姓名,電話,商品,編號,名稱,價格,日期,交易量,訂購,24,實體,關係,屬性,實體型

8、態具有相同屬性集合的元素所形成的集合關係型態用來連接某些相關的實體型態屬性可以用來描述實體或關係,學生,學號,姓名,性別,課程,編號,名稱,教師,日期,成績,選修,25,關係,關係型態的Degree是參與此關係的實體型態數目Ex:Works_for的Degree為2,又稱二元關係,Relationship,26,關係型態的限制,Constraints on Relationship Types基數率與參與基數率一個實體所能參與的關係案例數Ex:一個部門僅會有一個主管參與Ex:任何一個部門一定有一個主管(去管理它),27,基數率(cardinality ratio),1:1的範例,員工,部門,管

9、理,e1e2e3e4,d1 d2d3,r1r2r3,28,基數率,1:N的範例,員工,部門,屬於,e1e2e3e4,d1 d2d3,r1r2r3r4,29,基數率,N:M的範例,員工,專案,參與,e1e2e3e4,P1 p2p3,r1r2r3r4r5r6,30,參與限制,實體的存在是否依靠關係型態與另一實體產生關聯來決定部份參與(以單線表示)全部參與(以雙線表示),員工,部門,管理,部份參與,全部參與,31,參與限制(範例二),課程實體的存在是否依靠開設關係型態與另一教師實體產生關聯來決定課程實體要存在必須所對應的教師實體與開設關係都存在,該課程才會存在任何一個課程一定要有教師去開設它,教師,

10、課程,開設,部份參與,全部參與,32,弱實體型態(Weak Entity Type),Weak Entity Types 本身可以沒有任何的鍵值屬性透過另一實體型態的一些屬性所組成的相關特定實體(Identifying Owner)來辨認辨認關係(Identifying Relationship)Weak Entity在沒有Identifying Owner 的狀況下是無法辨認的,所以Weak Entity 總是有一個完全參與的限制來與它的辨認關係產生關聯,33,姓名,生日,性別,關係,Weak entity,Identifying relationship,員工,眷屬,擁有,全部參與,Ide

11、ntifying owner,員工編號,弱實體型態(Weak Entity Type),34,適當名稱,大寫字母表示實體與關係型態屬性名稱字首大寫實體多使用名詞關係則採用動詞方向:由左到右,由上到下,35,範例:讀者借閱書籍,系統必須紀錄讀者的身份證號碼、姓名、生日,與聯絡方式,其中聯絡方式包含了電話與地址資料系統紀錄了館藏中每一本書籍的書名與作者,雖然有些書籍有兩個以上的作者,但一定都只有一個唯一書號.為了掌握每本書的熱門程度,系統必須提供每本書籍的曾經被借閱的次數,以提供讀者參考當一個讀者要借閱書籍時,系統必須紀錄借閱的日期,以便管理.而每一位讀者至少都有借閱過一次以上書籍的紀錄,36,範

12、例:讀者借閱書籍,讀者,書籍,借閱,身份證號碼,生日,聯絡方式,電話,地址,姓名,書名,書號,作者,借閱次數,日期,作者,37,資料庫系統Database Systems,Relational Database Constraints,38,關聯式資料模型的限制,定義域限制鍵值限制實體完整性限制參考完整性限制,39,屬性與定義域(Domain),欄位中所允許的數值(Value)資料稱為定義域(Domain)定義域D是基元(Atomic)數值資料的集合Domain中的數值是不可分割個所以稱為基元Dom(Sex)=男生,女生 則”男生”與”女生”皆為sex屬性的的合理基元值Ex:age:大於0的整

13、數ID_numbers:一個英文字母加上九位數字的集合年級:介於14之間的數值,40,定義域限制,定義域限制指定了一屬性A的值必須在該屬性值的定義域Dom(A)裡的一個基元值定義方式列舉範圍格式資料型態,41,鍵值限制,關聯可視為一個集合,所含值組必須相異t1SK t2SKSK:超鍵(superkey)每個關聯至少存在一個SK,42,包含SK的屬性集合亦為SK,Ex:Sid是一SK,所以包含Sid的屬性集合皆為SKName,Sid、Sid,Tel_num、Sid,Name,Age鍵值屬性可以用來確認關聯中的唯一的值組鍵值是由關聯綱要中屬性的意義來決定,43,主鍵(Primary Key)的產生

14、,鍵值是一個最小的SuperKey若有一個以上的鍵值,則每一個鍵值都稱為是一個候選鍵(Candidate Key)必須從Candidate Key中選擇一個作為主鍵(Primary Key)主鍵的特性唯一性最小性,44,關聯式資料模型的限制,定義域限制鍵值限制實體完整性限制參考完整性限制,與關聯中的主鍵(PK)有關,45,鍵值限制與實體完整性,鍵值限制(Key Constraint)主鍵值不能重複實體完整性(Entity Integrity Constraint)主鍵值不能有空值,46,參考完整性,若一個關聯滿足定義域限制、鍵值限制、與實體完整性限制,我們只也能相信個別的關聯本身是合理的,但並

15、無法保證關聯與關聯之間的資料狀態是一致的參考完整性限制是指定在兩個關聯之間,用以維持兩個關聯值組的一致性,47,外鍵與參考,R1的外鍵FK(Foreign Key)FK的屬性與另一關聯綱要R2的Primary Key有相同的定義域(FK 參考R2)R1的值組t1中的FK可以和R2的某一值組t2 的PK相符,或是空值t1FK=t2PK,48,參考完整性,FK的屬性值必須在所參考之關聯的PK屬性中被找到,或者為Null關聯式資料庫之參考完整性限制,藉由FK與PK間的參考關係,以達到關聯表之間的一致性,49,EMPLOYEE.Dno 與 DEPARTMENT.Dnum 之間的一致性,EMPLOYEE

16、,DEPARTMENT,50,若一員工不屬任何部門時,EMPLOYEE.Dno 可以是空值,EMPLOYEE,DEPARTMENT,51,限制的實作,使用DDL指定限制,create table orders(no int not null,id int not null,quantity int,odate datetime default getdate(),/*以系統日期及時間為odate的初值*/primary key(no,id,odate),/*宣告複合欄位(no,id,odate)為主鍵*/foreign key(no)references bookstores,foreign

17、key(id)references books,check(quantity0 and quantity5001)/*設定quantity值的限制條件*/,52,資料庫系統Database Systems,Functional Dependencies and Normalization,53,重要觀念,良好的語意減少tuple的重複值減少tuple的空值不允許假值組(Spurious Tuples)的存在,54,語意設計上的優劣,設計易於解釋的Schema一個實體僅描述單一意義,勿結合多個於一關聯不良的設計,EMP_DEPT,55,tuple的重複值問題,EMP_DEPT,56,減少tupl

18、e的空值,57,不允許假值組的存在,適當地分割關聯可以有效減少空間的浪費,並藉由正規化與關聯式運算(處理)來維持資料的完整性並滿足各項操作假值組的問題,係因不良的關聯表格切割所導致關聯表的分割必須考量FK與PK,58,我們可以由 分割成,但無法由回覆成原來的,59,Functional Dependencies,功能相依是資料庫的兩個屬性集合的限制關聯表分割的重要參考依據表示法(XY)與意義Relation R 中的任意兩個tuples t1與t2,若t1X=t2X,則使得t1Y=t2YTuple中attribute Y的值是依靠X來決定稱為X到Y的功能相依,或Y功能相依於XX可以決定Y,60

19、,XY,XY iff r(R)的X值相同,則Y值必定相同Key points若一關聯不存在超過一個以上的X值,則表示X是一個Candidate Key若 XY 並不表示 YX 成立功能相依是一屬性語意的特性功能相依無法從特定的關聯中推論得到,61,功能相依性 與(非)主要屬性,在Relation R 中,若一Attribute(s)為任意R 的成員(每一Tuple都有該屬性),此Attribute(s)稱為主要屬性,否則則稱為非主要屬性EID與PNO為EMP_PROJ的主要屬性,其餘屬非主要屬性,fd1,fd2,fd3,EMP_PROJ,62,正規化,第一正規化型式(1NF)by E.F.Co

20、dd第二正規化型式(2NF)by E.F.Codd第三正規化型式(3NF)by E.F.Codd廣義 3NFBCNF(Boyce/Codd Normal Form)第四正規化型式(4NF)by R.Fagin第五正規化型式(5NF)by R.Fagin又稱為 Projection/Join Normal Form(PJ/NF),63,1NF,1NF:所有屬性定義域僅含基元值(Atomic)(不能有複合屬性/多值的存在),不符合1NF,DLOCS的定義域包含基元值,但某些值組包含這些值組的集合DLOCS屬性並非基元值,DEPARTMENT,64,non-1NF分割(Case1),將違反1NF的屬

21、性從原來的關聯中刪除,並與主鍵放到一個個別的關聯,DEPARTMENT,DEPT_LOCATIONS,65,1NF,1NF不允許有複合屬性的存在,這些屬性本身是屬於多值巢狀關聯:一個值組有一個關聯存在PNO為巢狀關聯PROJS的部份主鍵,EMP_PORJ,66,non-1NF分割,主鍵與部份主鍵形成新關聯的主鍵,EMP_PORJ,1NF,(Case2),67,2NF,2NF是以完全功能相依為基礎完全功能相依若XY為完全功能相依,則從X中移除任一屬性A,將使得此功能相依性不再成立,EID,PNO HOUR(完全相依)EID ENAME(去掉EID後不滿足相依性)PNO PNAME,PLOC(去掉

22、PNO後不滿足相依性)EID,PNO ENAME(不滿足完全相依性,部份相依),fd1,fd2,fd3,EMP_PROJ,68,2NF,2NF若關聯R中的每一個非主要屬性是完全功能相依於R的Primary Key則稱Relation R屬於2NFnon-2NF的處理Non-2NF的Relation可以進一部被分解成多個2NF的Relations所產生的新關聯將只有非主要屬性與在主鍵內其完全功能相依的部份,69,2NF,fd1,fd2,fd3,EMP_PROJ,fd1,fd2,fd3,2NF,70,3NF 概念基礎,3NF是以遞移相依性為基礎遞移相依性Z不屬於任何鍵值的子集合,且XZ,ZY成立,

23、DNUM不屬於任何鍵值的子集合,且 EIDDNUM,DNUMDNAME,DMGR成立 存在遞移相依(不符合3NF),EMP_DEPT,71,3NF 定義,Relation R 是3NF:Relation R 是2NF且沒有非主要屬性是遞移相依於主鍵Non-3NF的Relation可以進一部被分解成多個3NF的Relations所產生的新關聯將只有非主要屬性及與其完全功能相依的部分,72,3NF,員工,部門,EMP_DEPT,3NF,73,Boyce-Codd正規式(BCNF),BCNF比3NF更嚴格,BCNF成立3NF一定成立,但3NF不一定屬於BCNFBCNF的定義在Relation R中每

24、一個功能相依XA都滿足X是R的Super KeyExampleCNAME=M,LASIZE=0.5、0.6、0.7、0.8、0.9、1.0則CNAME=MASIZE=1.1、1.2、2.0則CNAME=L則存在一個FD:ASIZE CNAME假設有數千筆Tuples,74,3NF BCNF,LOTS依舊符合3NF,但其實CNAME只有 M與L兩種值,LOTS,BCNF,75,資料庫系統Database Systems,SQL 語法,76,CUSTOMER,ORDERS,PRODUCT,資料庫範例,77,資料庫的建立與刪除,Create Database語法:Create database 資料

25、庫名稱範例:Create database saledbDrop Database語法:Drop database 資料庫名稱範例:Drop database saledb,78,關聯表的建立與刪除,建立客戶(CUSTOMER)關聯表Create table customer(cid int not null,name varchar(50),rank int,age int,primary key(cid),建立商品(PRODUCT)關聯表Create table product(pid int not null,pname varchar(50),color varchar(10),pri

26、ce int,primary key(pid),79,關聯表的建立與刪除,建立交易(ORDERS)關聯表Create table orders(cid int not null,pid int not null,odate datetime default getdate(),quan int,primary key(cid,pid,odate),foreign key(cid)references customer,foreign key(pid)references product),刪除關聯表 drop table 關聯表名稱,80,SQL-DML,資料的新增資料擷取(查詢)資料修改資料

27、刪除,81,INSERT,指令 INSERT INTO 關聯表(欄位1,欄位2,欄位3)VALUES(值1,值2,值3),Ex1:insert into customer(cid,name,rank,age)VALUES(1,ALEX,1,15),Ex2:INSERT INTO product(pid,pname,price)VALUES(1,襯衫,100),Ex3:INSERT INTO orders(cid,pid,quan)VALUES(1,1,50),82,資料擷取(查詢),select all distinct top|as from where|group by having or

28、der by|,83,SQL QUERY,基本組成SELECT FROM WHERE Ex1:擷取年紀大於20歲的客戶姓名與年紀 SELECT NAME,AGEFROM CUSTOMERWHERE AGE20,CUSTOMER,84,SQL QUERY,Ex2:擷取所有商品編號與品名屬性 SELECT PID,PNAMEFROM PRODUCTEx3:擷取所有價格低於500元且顏色屬於紅色的商品項目資訊 SELECT*FROM PRODUCTWHERE PRICE500 AND COLOR=紅色,PRODUCT,85,SQL QUERY,Ex4:擷取所有交易量大於40的交易,列出這些交易的客戶

29、姓名,商品編號與交易量 SELECT NAME,PID,QUANFROM CUSTOMER,ORDERSWHERE CUSTOMER.CID=ORDERS.CID AND QUAN40 SELECT NAME,PID,QUANFROM CUSTOMER C,ORDERS OWHERE C.CID=O.CID AND QUAN40 Ex5:擷取所有屬於CATHY客戶的交易,列出這些交易的商品名稱,價格,與交易量 SELECT PNAME,PRICE,QUANFROM CUSTOMER C,ORDERS O,PRODUCT PWHERE C.CID=O.CID AND O.PID=P.PID AN

30、D NAME=CATHY,86,DISTINCT 與 IN 的用法,Ex6:擷取客戶等級的類型 SELECT DISTINCT RANKFROM CUSTOMEREx7:擷取曾經銷售過的書籍編號 SELECT DISTINCT PIDFROM ORDERSEx8:擷取屬於1,3,或5號客戶的交易紀錄,列出客戶編號與商品編號SELECT CID,PIDFROM ORDERSWHERE CID=1 OR CID=3 OR CID=5SELECT CID,PIDFROM ORDERSWHERE CID IN(1,3,5),87,IN與巢狀查詢的應用,Ex9:擷取所有交易量大於40的交易,列出這些交易

31、的商品名稱,顏色與價格SELECT PNAME,COLOR,PRICEFROM PRODUCTWHERE PID IN(SELECT DISTINCT PIDFROM ORDERSWHERE QUAN40),88,聚合函數(Aggregates),聚合函數:Count,Sum,Avg,Max,Min計算完後的結果只有一個答案Ex10:擷取所有商品中最大,最小,與平均之價格SELECT MAX(PRICE),MIN(PRICE),AVG(PRICE)FROM PRODUCTEx11:擷取所有屬於ALEX客戶的交易之次數與總交易量SELECT COUNT(*),SUM(QUAN)FROM CUST

32、OMER C,ORDERS OWHERE C.CID=O.CID AND NAME=ALEXEx12:屬於1號商品的交易共有幾筆,總交易量又是多少?SELECT COUNT(*)AS OTIMES,SUM(QUAN)AS OTOTALFROM ORDERS WHERE PID=1,89,GROUP BY 與 HAVING,GROUP BY具有群組化特性,而Having可用來篩選符合條件的Group,正如 Where 子句是用來篩選出符條件的值組Ex13:擷取各項商品的交易次數與總交易量SELECT COUNT(*),SUM(QUAN)FROM ORDERSGROUP BY PIDEx14:擷取

33、各項商品的交易次數與總交易量,列出總交易量高於55的商品交易次數與總交易量SELECT COUNT(*),SUM(QUAN)FROM ORDERSGROUP BY PIDHAVING SUM(QUAN)55,90,範例,Ex15:擷取年紀低於18歲客戶的交易紀錄,求取各項商品的的總交易量,列出其中總交易量高於35的商品編號與總交易量SELECT PID,SUM(QUAN)FROM CUSTOMER C,ORDERS OWHERE C.CID=O.CID AND AGE18GROUP BY PIDHAVING SUM(QUAN)35,91,Like的敘述,%:以百分比符號表示零個或多個字元:以底

34、線符號表示任一個字元僅適用於字元型態的屬性Ex16:擷取商品顏色屬性中,含有 藍 的商品名稱與價格SELECT PNAME,PRICEFROM PRODUCTWHERE COLOR LIKE%藍%Ex17:擷取姓名中第二個字母為 L 的客戶編號與姓名SELECT CID,NAMEFROM CUSTOMERWHERE NAME LIKE _L%,92,排序 ORDER BY,一般語法組成SELECT*FROM TABLEWHERE CONDITIONORDER BY ATTRIBUTE 排列方式ASC(由小至大)DESC(由大至小),93,排序 ORDER BY,Ex18:擷取所有價格低於500

35、的商品名稱與價格,並依價格由低至高排列輸出 SELECT PNAME,PRICEFROM PRODUCTWHERE PRICE 500ORDER BY PRICE ASCEx19:擷取所有交易量低於55的交易紀錄,列出客戶編號,商品編號與交易量,並依交易量由高至低排列,若交易量相同時,則依客戶編號由小至大排列 SELECT CID,PID,QUANFROM ORDERSWHERE QUAN55ORDER BY QUAN DESC,CID ASC,94,UPDATE,指令 UPDATE 關聯表 SET 欄位1=值1,欄位2=值2 WHERE 條件Ex:將1號客戶的年紀修改為20歲UPDATE C

36、USTOMERSET AGE=20WHERE CID=1Ex:將2號客戶的姓名修改為XYZ並將年紀改為18歲UPDATE CUSTOMERSET NAME=XYZ,AGE=18WHERE CID=2,CUSTOMER,95,UPDATE,Ex:將年紀小於20的客戶等級都修改成1UPDATE CUSTOMERSET RANK=1 WHERE AGE500,CUSTOMER,PRODUCT,96,UPDATE,Ex:所有購買過6號商品的客戶等級修改為5UPDATE CUSTOMERSET RANK=5WHERE CID IN(SELECT CID FROM ORDERS WHERE PID=6),CUSTOMER,ORDERS,97,DELETE,指令 DELETE FROM 關聯表 WHERE 刪除條件Ex1:DELETE FROM CUSTOMERWHERE NAME=ELLAEx2:DELETE FROM CUSTOMERWHERE CID=5,CUSTOMER,98,DELETE,Ex3:刪除所屬於BOB客戶的所有交易紀錄DELETE FROM ORDERSWHERE CID IN(SELECT CID FROM CUSTOMER WHERE NAME=BOB)Ex4:DELETE FROM ORDERSEx5:DELETE FROM CUSTOMER,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号