日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

面向对象数据库设计与应用 03

發(fā)布時(shí)間:2024/1/4 综合教程 55 生活家
生活随笔 收集整理的這篇文章主要介紹了 面向对象数据库设计与应用 03 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、實(shí)驗(yàn)?zāi)康?/strong>

本實(shí)驗(yàn)側(cè)重點(diǎn)在于,要求掌握面向?qū)ο髷?shù)據(jù)表的創(chuàng)建,其中也包括對(duì)數(shù)據(jù)類型的創(chuàng)建,以及插入記錄的命令的熟練運(yùn)用;
掌握整個(gè)面向?qū)ο髷?shù)據(jù)庫(kù)在ORACLE中的設(shè)計(jì)和創(chuàng)建流程,把握實(shí)驗(yàn)過(guò)程中的關(guān)鍵細(xì)節(jié),掌握面向?qū)ο髷?shù)據(jù)庫(kù)在ORACLE中記錄插入的兩種方法;

總而言之,就是要求掌握數(shù)據(jù)表類型和數(shù)據(jù)表對(duì)象創(chuàng)建句柄的基本使用方法,熟練運(yùn)用記錄插入的命令,并能初步了解ORACLE函數(shù)的基本創(chuàng)建過(guò)程。

二、實(shí)驗(yàn)內(nèi)容

實(shí)驗(yàn)背景導(dǎo)入:

公司已經(jīng)完成數(shù)據(jù)庫(kù)的創(chuàng)建工作,接下來(lái)要求數(shù)據(jù)庫(kù)管理員對(duì)照在邏輯設(shè)計(jì)階段中對(duì)模式劃分的文檔與參考數(shù)據(jù)字典進(jìn)行數(shù)據(jù)表的創(chuàng)建,根據(jù)進(jìn)度要求完成下列需求:

① 模式的創(chuàng)建。在創(chuàng)建數(shù)據(jù)表之前,考慮到為了更好的去管理整個(gè)數(shù)據(jù)庫(kù),首先要進(jìn)行模式的創(chuàng)建。

② 數(shù)據(jù)表的創(chuàng)建。創(chuàng)建模式后,對(duì)應(yīng)數(shù)據(jù)庫(kù)的設(shè)計(jì)OOM文檔與數(shù)據(jù)字典在該模式下進(jìn)行數(shù)據(jù)類型與數(shù)據(jù)表的創(chuàng)建。分別為會(huì)員信息表,商品類別表,商品信息表、員工信息表、支付方式表、訂單信息表、訂單立詳情表的創(chuàng)建。

③ 對(duì)于上述建好的數(shù)據(jù)表,每張表需添加兩條以上的記錄。

出于對(duì)結(jié)構(gòu)模式明細(xì)設(shè)計(jì)的需要,在實(shí)驗(yàn)一中,將User抽象為一個(gè)超類型對(duì)象,并且下級(jí)繼承屬性的子類對(duì)象有:會(huì)員、商家和管理員。本實(shí)驗(yàn)綜合設(shè)計(jì)的反復(fù)性和在應(yīng)用中的算法復(fù)雜性等需求因素,現(xiàn)將OR模式調(diào)整如下:

三、實(shí)驗(yàn)平臺(tái)

軟件:WORD、ORACLE

四、實(shí)驗(yàn)步驟

① 模式的創(chuàng)建。

先創(chuàng)建用戶,再使用CREATE SCHEMA AUTHORIZATION命令,可直接授權(quán)給該用戶。

圖4-1 創(chuàng)建用戶并授權(quán)

② 數(shù)據(jù)表的創(chuàng)建。

使用CREATE TYPE命令進(jìn)行類型的創(chuàng)建,并且使用CREATE TABLE命令創(chuàng)建數(shù)據(jù)表。

create or replace type RD_Member as object(

                 Member_ID varchar(11),

                 Member_Password varchar(50),

                 Member_name varchar(11),

                 Birth date,

                 Address varchar(20),

                 Mobile varchar(11),

                 WeChat varchar(11),

                 Reputation varchar(15),

                 Hobby varchar(50),

                 Sex varchar(20),

                 Jobe varchar(30));

create or replace type RD_Employee as object(

                 Employee_ID varchar(11),

                 Employee_Password varchar(50),

                 Employee_name varchar(11),

                 Birth date,

                 Address varchar(20),

                 Mobile varchar(11),

                 WeChat varchar(11),

                 Reputation varchar(15),

                 department varchar(50),

                 Sex varchar(20),

                 company varchar(30)

);

create or replace type RD_Payment_type as object(

                   Payment_type_ID varchar(11),

                   Payment_type varchar(11)

);

create or replace type  RD_Commodity_type as object(

                   Commodity_type_ID varchar(11),

                   status varchar(10),

                   Commodity_type varchar(10)

);

create or replace type RD_Good as object(

                 Good_ID varchar(11),

                 Discount varchar(5),

                 Goods varchar(100),

                 Unit_Price number,

    Purchase_Date varchar(10),

                 Good_type ref RD_Commodity_type

);

create or replace type RD_Order_details as object(

    Order_details_id varchar(11),

                 Order_details varchar(11),

                 Good_info ref RD_Good,

                 Payment_type_info ref RD_Payment_type,

                 Employee_info ref RD_Employee,

    Member_info ref RD_Member);

create or replace type RD_Order as object(

                 Order_ID varchar(11),

                 Goods_Number number,

                 Total_price number,

                 Setup_time varchar(20),

    Order_details ref RD_Order_details);

CREATE OR REPLACE FUNCTION cur_datetime

RETURN VARCHAR

IS

BEGIN

 RETURN TO_CHAR(sysdate,

   'YYYY"年"MM"月"DD"日"HH24"時(shí)"MI"分"SS"秒"');

END;

create or replace function Calculated_price(para1 in number, para2 in number)

return number

as

begin

  if para1 > para2 then

      return para1;

  else

      return para2;

  end if;

end Calculated_price;

create or replace FUNCTION login

RETURN VARCHAR2

IS

BEGIN

 RETURN TO_CHAR('用戶已登錄!!');

END;
create table RD_Commodity_types OF RD_Commodity_type;

create table RD_Goods of RD_Good;

create table RD_Payment_types of RD_Payment_type;

create table RD_Employees of RD_Employee;

create table RD_Members of RD_Member;

create table RD_Order_detailss of RD_Order_details;

create table RD_Orders of RD_Order;

③ 對(duì)于上述建好的數(shù)據(jù)表,每張表需使用INSERT INTO命令添加兩條以上的記錄。

Insert into C##RD.RD_MEMBERS (MEMBER_ID,MEMBER_PASSWORD,MEMBER_NAME,BIRTH,ADDRESS,MOBILE,WECHAT,REPUTATION,HOBBY,SEX,JOBE) values ('0001','123456','昊哥',to_date('18-11月-19','DD-MON-RR'),'廣西南寧','1008611','10010','100','喜歡吃臭豆腐','男','導(dǎo)師');

Insert into C##RD.RD_MEMBERS (MEMBER_ID,MEMBER_PASSWORD,MEMBER_NAME,BIRTH,ADDRESS,MOBILE,WECHAT,REPUTATION,HOBBY,SEX,JOBE) values ('0002','123456','小弟',to_date('18-11月-19','DD-MON-RR'),'廣西藤縣','10010','1008611','100','喜歡吃臭豆腐','男','學(xué)生');

Insert into C##RD.RD_EMPLOYEES (EMPLOYEE_ID,EMPLOYEE_PASSWORD,EMPLOYEE_NAME,BIRTH,ADDRESS,MOBILE,WECHAT,REPUTATION,DEPARTMENT,SEX,COMPANY) values ('0001','123456','張三',to_date('03-3月 -19','DD-MON-RR'),'北京八達(dá)嶺','1109635','53425223','98','銷售部門','男','北京嶺科技有限公司');

Insert into C##RD.RD_EMPLOYEES (EMPLOYEE_ID,EMPLOYEE_PASSWORD,EMPLOYEE_NAME,BIRTH,ADDRESS,MOBILE,WECHAT,REPUTATION,DEPARTMENT,SEX,COMPANY) values ('0002','123456','李四',to_date('03-3月 -19','DD-MON-RR'),'杭州西湖邊','1109635','53425223','98','作坊','男','西湖臭豆腐西施作坊');

Insert into RD_PAYMENT_TYPES (PAYMENT_TYPE_ID,PAYMENT_TYPE) values ('0001','支付寶');

Insert into RD_PAYMENT_TYPES (PAYMENT_TYPE_ID,PAYMENT_TYPE) values ('0002','微信');

 

Insert into RD_COMMODITY_TYPES (COMMODITY_TYPE_ID,STATUS,COMMODITY_TYPE) values ('0001','1','推薦');

Insert into RD_COMMODITY_TYPES (COMMODITY_TYPE_ID,STATUS,COMMODITY_TYPE) values ('0002','0','推薦');

 

Insert into C##RD.RD_GOODS (GOOD_ID,DISCOUNT,GOODS,UNIT_PRICE,PURCHASE_DATE,GOOD_TYPE) values ('0001','0.8','豆?jié){',23.5,'2017-32-23', (select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0001'));

Insert into C##RD.RD_GOODS (GOOD_ID,DISCOUNT,GOODS,UNIT_PRICE,PURCHASE_DATE,GOOD_TYPE) values ('0002','0.8','豆?jié){',23.5,'2017-32-23', (select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0001'));

INSERT INTO RD_GOODS  VALUES (RD_GOOD('0003', '0.8', '豆?jié){', '23.5', '2017-32-23', (select ref(a) from RD_COMMODITY_TYPES a where COMMODITY_TYPE_ID='0001')));

 

Insert into C##RD.RD_ORDER_DETAILSS (ORDER_DETAILS_ID,ORDER_DETAILS,GOOD_INFO,PAYMENT_TYPE_INFO,EMPLOYEE_INFO,MEMBER_INFO) values ('0001','es',(select ref(a) from RD_Goods a where GOOD_ID='0001'),(select ref(a) from RD_PAYMENT_TYPES a where PAYMENT_TYPE_ID='0001'),(select ref(a) from RD_EMPLOYEES a where EMPLOYEE_ID='0001'),(select ref(a) from RD_MEMBERS a where MEMBER_ID='0001'));

Insert into C##RD.RD_ORDER_DETAILSS (ORDER_DETAILS_ID,ORDER_DETAILS,GOOD_INFO,PAYMENT_TYPE_INFO,EMPLOYEE_INFO,MEMBER_INFO) values ('0002','es',(select ref(a) from RD_Goods a where GOOD_ID='0001'),(select ref(a) from RD_PAYMENT_TYPES a where PAYMENT_TYPE_ID='0001'),(select ref(a) from RD_EMPLOYEES a where EMPLOYEE_ID='0001'),(select ref(a) from RD_MEMBERS a where MEMBER_ID='0001'));

 

Insert into C##RD.RD_ORDERS (ORDER_ID,GOODS_NUMBER,TOTAL_PRICE,SETUP_TIME,ORDER_DETAILS)  VALUES ('0001',4,23,'2017-23-07',(select ref(a) from RD_Order_detailss a where ORDER_DETAILS_ID='0001'));

INSERT INTO RD_ORDERS  VALUES (RD_ORDER('0002',4,23,'2017-23-07',(select ref(a) from RD_Order_detailss a where ORDER_DETAILS_ID='0001')));

五、運(yùn)行結(jié)果

① 模式的創(chuàng)建。

圖5-1 用戶模式創(chuàng)建成功

② 數(shù)據(jù)表的創(chuàng)建。

圖5-2 數(shù)據(jù)表創(chuàng)建成功

圖5-3 獲取時(shí)間函數(shù)執(zhí)行成功

③ 添加記錄。

圖5-4 插入數(shù)據(jù)記錄成功

六、實(shí)驗(yàn)總結(jié)

通過(guò)實(shí)驗(yàn),相關(guān)的總結(jié)和經(jīng)驗(yàn)收獲,可分點(diǎn)總結(jié)如下:

通過(guò)本實(shí)驗(yàn),已初步掌握了面向?qū)ο髷?shù)據(jù)表的創(chuàng)建方法,并且對(duì)數(shù)據(jù)類型的創(chuàng)建也有了一定的自我理解;
本實(shí)驗(yàn)過(guò)程中遇到的問(wèn)題比前兩次都要多,例如:在對(duì)象數(shù)據(jù)庫(kù)插入數(shù)據(jù)時(shí)提示,ORA-00984列在此處不允許的錯(cuò)誤,而我的解決辦法首先就是檢查字段的數(shù)據(jù)類型是否匹配,之所以會(huì)出現(xiàn)這種問(wèn)題的原因就是,在插入字符或字符串型字段時(shí),如果插入的數(shù)據(jù)是純數(shù)字,則不會(huì)有錯(cuò)誤;但是如果出現(xiàn)字符,就會(huì)報(bào)ORA-00984列在此處不允許異常;
對(duì)于字符型字段,在插入數(shù)據(jù)時(shí)最好在字段值兩端加上單引號(hào),就可以很好的避免ORA-00984錯(cuò)誤;
在實(shí)驗(yàn)的記錄插入過(guò)程中,發(fā)現(xiàn)對(duì)于對(duì)象數(shù)據(jù)庫(kù)的記錄插入可以有多種方法,而對(duì)于引用類型的字段,在賦值時(shí)需得使用類似于“(select ref(a) from RD_Order_detailss a where ORDER_DETAILS_ID='0001')”的句型,將其認(rèn)為是該字段的內(nèi)容;等。

總結(jié)

以上是生活随笔為你收集整理的面向对象数据库设计与应用 03的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。