订货系统对象关系的设计与实现课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《订货系统对象关系的设计与实现课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 订货 系统 对象 关系 设计 实现 课件
- 资源描述:
-
1、8/16/20221第1页,共79页。8/16/20222订货系统订货系统-对象关系的设计与实现对象关系的设计与实现l一、系统简介l二、采用关系方法l三、采用对象表l四、采用对象视图第2页,共79页。8/16/20223一、系统简介一、系统简介l1.1 建模方法l1.2 系统涉及的实体和关系l1.3 实体包含的信息第3页,共79页。8/16/20224l首先采用关系模型,实体联系模型实现,称为关系方法l然后使用UDTs将实体关系转换为模式对象,称为对象关系方法l数据源取自对象表,而非关系模型中的关系表l数据源使用关系表,而不是直接定义对象表,采用对象视图表示虚拟对象表1.1 建模方法建模方法第
2、4页,共79页。8/16/202251.2 系统涉及的实体和关系系统涉及的实体和关系Customer_InfoPurchase_OrderStock_InfoLine_Itemsmn1mmn11顾客表,Customer_Info货物表,Stock_Info订货单,Purchase_Order第5页,共79页。8/16/20226顾客信息顾客信息编编号号顾顾客客名名地地址址邮邮编编电电话话1电电话话2电电话话31Jean Nance2 Avocet Drive,Redwood Shores,CA95054415-555-12122John Nike323 CollegeDrive,Edison,
3、NJ08820609-555-1212201-555-1212第6页,共79页。8/16/20227货物信息货物信息货货物物号号价价格格税税率率10046750.00210114500.23215342234.00215353456.232第7页,共79页。8/16/20228定货信息定货信息单单号号顾顾客客定定货货日日期期到到货货日日期期到到货货街街道道到到货货城城市市邮邮编编200121-1-9620-5-9810011条条目目编编号号单单号号货货物物数数量量折折扣扣011001153412002100115351010102001100410112001101121第8页,共79页。8/
4、16/202291.3 实体包含的信息实体包含的信息l顾客表:顾客联系信息l货物表:货物标识,价格l订货单:顾客,订货条目,发货日期,发货地址l订货条目清单:货物,数量,折扣有些实体属性很复杂:复合属性,如地址属性包括(省市,街道,邮编)一个顾客的电话可能有多部货物条目清单中应包含一个属性标识相应的订货单第9页,共79页。8/16/202210二、二、采用关系方法采用关系方法2.1 采用关系的解决方案2.2 关系表的定义方法2.3 对关系表的数据操纵第10页,共79页。8/16/2022112.1采用采用关系的解决方案关系的解决方案采用关系方法将顾客信息,订货单,货物条目清单组织成表将地址拆成
5、为基本元素,如省市,街道,邮编设置一个可能拥有电话的最大限度,每一个电话表示为表的一列关系方法将订货条目从订货单中分离出来单独存放在一张表中,该表中有指向货物表和订货单表的外键第11页,共79页。8/16/2022122.2 表的定义表的定义l采用关系模型实现对现实世界的反映l将实体定义为关系(表)l实体间的联系通过外键或关系(表)来实现l表中的字段必须是不可分割的基本单位l不允许表中嵌表l多表联合实现查询第12页,共79页。8/16/202213CREATE TABLE customer_info(custnoNUMBER PRIMARY KEY,custnameVARCHAR2(200),
6、streetVARCHAR2(200),cityVARCHAR2(200),state VARCHAR2(2),zipVARCHAR2(6),phone1VARCHAR2(20),phone2VARCHAR2(20),phone3VARCHAR2(20);建立顾客表建立顾客表第13页,共79页。8/16/202214建立货物表建立货物表CREATE TABLE stock_info(stocknoNUMBER PRIMARY KEY,price NUMBER tax_code NUMBER);第14页,共79页。8/16/202215CREATE TABLE purchase_order(po
7、noNUMBER PRIMARY KEY,custnoNUMBER REFERENCES customer_info,orderdateDATE,shiptodateDATE,shiptostreetVARCHAR2(200),shiptocityVARCHAR2(200),shiptostate VARCHAR2(2),shiptozipVARCHAR2(20);建立定货表建立定货表第15页,共79页。8/16/202216建立定货表的详细条目建立定货表的详细条目CREATE TABLE line_items(lineitemno NUMBER,p o n o N U M B E R R E
8、 F E R E N C E S purchase_order,stockno NUMBER REFERENCES stock_info,quantity NUMBER,discount NUMBERPRIMARY KEY(pono,lineitemno);第16页,共79页。8/16/202217l向顾客表插入数据向顾客表插入数据INSERT INTO customer_info VALUES(1,Jean Nance,2 Avocet Drive,Redwood Shores,CA,95054,415-555-1212,NULL,NULL);INSERT INTO customer_inf
9、o VALUES(2,John Nike,323 College Drive,Edison,NJ,08820,609-555-1212,201-555-1212,NULL);l向货物表插入数据向货物表插入数据INSERT INTO stock_info VALUES(1004,6750.00,2);INSERT INTO stock_info VALUES(1011,4500.23,2);INSERT INTO stock_info VALUES(1534,2234.00,2);INSERT INTO stock_info VALUES(1535,3456.23,2);2.3 数据操纵数据操纵
10、-构造数据第17页,共79页。8/16/2022182.3 数据操纵数据操纵-构造数据l向定货单表插入数据向定货单表插入数据 INSERT INTO purchase_order VALUES(1001,1,SYSDATE,10-MAY-1997,NULL,NULL,NULL,NULL);INSERT INTO purchase_order VALUES(2001,2,SYSDATE,20-MAY-1997,55 Madison Ave,Madison,WI,53715);l向定货单条目插入数据向定货单条目插入数据INSERT INTO line_items VALUES(01,1001,15
11、34,12,0);INSERT INTO line_items VALUES(02,1001,1535,10,10);INSERT INTO line_items VALUES(10,2001,1004,1,0);INSERT INTO line_items VALUES(11,2001,1011,2,1);第18页,共79页。8/16/202219SELECT C.custno,C.custname,C.street,C.city,C.state,C.zip,C.phone1,C.phone2,C.phone3,P.pono,P.orderdate,L.stockno,L.lineitemn
12、o,L.quantity,L.discount FROM customer_info C,purchase_order P,line_items L WHERE C.custno=P.custno AND P.pono=L.pono AND P.pono=1001;2.3 数据操纵数据操纵-查询数据查询订货单1001的顾客信息和订货详细信息第19页,共79页。8/16/202220每一个订货单的总价值SELECT P.pono,SUM(S.cost*L.quantity)FROM purchase_order P,line_items L,stock_info SWHERE P.pono=L.
13、pono AND L.stockno=S.stockno GROUP BY P.pono;2.3 数据操纵数据操纵-查询数据涉及货物1004 的订货单及订货条目信息SELECT P.pono,P.custno,L.stockno,L.lineitemno,L.quantity,L.discount FROM purchase_order P,line_items L WHERE P.pono=L.pono AND L.stockno=1004;第20页,共79页。8/16/202221l更新数据:更改订货单1001,货物号为1535的订货量UPDATE line_items SET quant
14、ity=20 WHERE pono=1001 AND stockno=1535;l删除数据:删除订货单1001DELETE FROM line_items WHERE pono=1001;DELETE FROM purchase_order WHERE pono=1001;2.3 数据操纵数据操纵-维护数据第21页,共79页。8/16/202222三、采用对象表三、采用对象表3.1 对象-关系解决方案3.2 定义类型3.3 定义方法3.4 创建对象表3.5 数据操纵第22页,共79页。8/16/2022233.1 对象对象-关系解决方案关系解决方案l3GL可以实现数据封装,复杂的用户定义类型(
15、封装了方法)lSQL只能提供基本类型,无法封装对数据的相关操作l3GL语言很难实现数据的一致性和安全性l将复杂数据类型映射为SQL APP logic DATA logic第23页,共79页。8/16/202224实现对象关系的方法实现对象关系的方法O-R方法lUDT使得复杂数据结构进入数据库模式中l不将address拆散,也不将联系电话存为不相关的多列,在OR中可以定义特殊的类型表示l不将订货条目以单独表管理,OR中将他们作为相应订货表的嵌套表l在OR方法中,主要实体:顾客,货物,订货单变为对象l对象引用表示他们之间n:1的关系,收集类型作为多值属性第24页,共79页。8/16/202225
16、l有两种方法实现OR策略:创建对象表并装入数据使用对象视图表示已存在关系数据的虚拟对象表l采用对象表的O-R方法l采用对象视图的O-R方法实现对象关系的方法实现对象关系的方法第25页,共79页。8/16/202226l查看属于用户的所有类型 用户字典 user_typesl查看某类型的详细定义desc 类型名3.2 定义类型定义类型第26页,共79页。8/16/2022273.2 定义类型定义类型l定货系统中的类型地址 address_t :对象类型多个电话 phone_list_t:变长数组顾客 customer_info_t:对象类型货物 stock_info_t:对象类型货物条目 lin
17、e_item_t:对象类型多个货物条目 line_item_list_t:嵌套表定货单 purchase_order_t:对象类型第27页,共79页。8/16/202228定义一个对象类型表示地址信息CREATE TYPE address_t AS OBJECT(street VARCHAR2(200),city VARCHAR2(200),state CHAR(2),zip VARCHAR2(20);3.2 定义类型定义类型第28页,共79页。8/16/202229l定义一个数组类型(collection type)表示电话CREATE TYPE phone_list_t AS VARRAY
18、(10)OF VARCHAR2(20);3.2 定义类型定义类型第29页,共79页。8/16/202230定义一个对象类型表示顾客定义一个对象类型表示顾客CREATE TYPE customer_info_t AS OBJECT(custno NUMBER,custname VARCHAR2(200),address address_t,phone_list phone_list_t,ORDER MEMBER FUNCTION cust_order(x IN customer_info_t)RETURN INTEGER,PRAGMA RESTRICT_REFERENCES(cust_order
19、,WNDS,WNPS,RNPS,RNDS);3.2 定义类型定义类型第30页,共79页。8/16/202231定义一个对象类型表示货物信息CREATE TYPE stock_info_t AS OBJECT(stockno NUMBER,cost NUMBER,tax_code NUMBER );3.2 定义类型定义类型第31页,共79页。8/16/202232定义一个对象类型表示货物条目信息CREATE TYPE line_item_t AS OBJECT(lineitemno NUMBER,STOCKREF REF stock_info_t,quantity NUMBER,discount
20、 NUMBER );3.2 定义类型定义类型第32页,共79页。8/16/202233定义一个嵌套表类型表示定货单中的所有货物条目信息 CREATE TYPE line_item_list_t AS TABLE OF line_item_t;3.2 定义类型定义类型第33页,共79页。8/16/202234定义一个对象类型表示定货单定义一个对象类型表示定货单CREATE TYPE purchase_order_t AS OBJECT(pono NUMBER,custref REF customer_info_t,orderdate DATE,shipdate DATE,line_item_li
21、st line_item_list_t,shiptoaddr address_t,3.2 定义类型定义类型第34页,共79页。8/16/202235MAP MEMBER FUNCTION ret_value RETURN NUMBER,PRAGMA RESTRICT_REFERENCES(ret_value,WNDS,WNPS,RNPS,RNDS),MEMBER FUNCTION total_value RETURN NUMBER,PRAGMA RESTRICT_REFERENCES (total_value,WNDS,WNPS);一个订货单(purchase_order_t)中包含一个订货条
22、目(line_item_t)的清单(line_item_list),每一个订货条目包含一个对于货物(stock_info_t)的引用(stockref)3.2 定义类型定义类型第35页,共79页。8/16/202236嵌套表和VARRAY的比较(collection type)l对顾客中的电话来说VARRAY的元素是有序的VARRAY要求预置元素数目l对定货单中的货物条目来说嵌套表没有上界的限制嵌套表可以直接做查询可以对嵌套表做索引3.2 定义类型定义类型第36页,共79页。8/16/202237定义定义customer_info_t对象类型的方法:对象类型的方法:CREATE OR REPL
23、ACE TYPE BODY customer_info_t AS ORDER MEMBER FUNCTION cust_order(x IN customer_info_t)RETURN INTEGER IS BEGIN RETURN custno-x.custno;END;END;3.3 定义方法定义方法第37页,共79页。8/16/2022383.3 定义方法purchase_order_t对象类型的方法:对象类型的方法:CREATE OR REPLACE TYPE BODY purchase_order_t ASBEGIN MAP MEMBER FUNCTION ret_value RE
24、TURN NUMBER IS BEGIN RETURN pono;END;第38页,共79页。8/16/202239MEMBER FUNCTION total_value RETURN NUMBER IS i INTEGER;stock stock_info_t;line_item line_item_t;total NUMBER:=0;BEGIN FOR i IN 1.SELF.line_item_list.COUNT LOOP line_item:=SELF.line_item_list(i);SELECT DEREF(line_item.stockref)INTO stock FROM
25、DUAL;total:=total+line_item.quantity*stock.price;END LOOP;RETURN total;END;END;3.3 定义方法定义方法第39页,共79页。8/16/202240l SELF作为每一个函数的隐式参数,代表对象自身l COUNT给定嵌套表或数组中元素个数l DEREF操作符以一个引用为参数,返回一个行对象l显示错误信息 show errors;3.3 定义方法定义方法第40页,共79页。8/16/202241l表是一个事物的表示,有一些特征和行为l也称为类(Class)或抽象数据类型(ADT)lOracle不使用这些术语l特征定义为对
展开阅读全文