




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上目 錄專心-專注-專業(yè)摘 要 隨著計(jì)算機(jī)的飛速發(fā)展及應(yīng)用領(lǐng)域的擴(kuò)大,特別是計(jì)算機(jī)網(wǎng)絡(luò)和電子商務(wù)的發(fā)展,極大的改變了商業(yè)銀行傳統(tǒng)的經(jīng)營(yíng)模式。能夠?yàn)榭蛻籼峁┓奖?、快捷、安全的服?wù),也能夠有效的降低銀行的營(yíng)運(yùn)成本,這是銀行存儲(chǔ)系統(tǒng)追求的目標(biāo)。目前,對(duì)于現(xiàn)代化銀行運(yùn)營(yíng)的要求是客戶可以實(shí)現(xiàn)方便安全的業(yè)務(wù)交易,銀行職員可以進(jìn)行高效合理的工作管理,實(shí)現(xiàn)銀行業(yè)務(wù)電子化。方便用戶快速的進(jìn)行存款、取款、修改密碼以及完成一些轉(zhuǎn)賬的交易,大大提高辦公效率,能夠及時(shí)、準(zhǔn)確、有效的幫用戶辦理各種繁瑣的手續(xù),也減緩了銀行工作人員的壓力。1、 設(shè)計(jì)銀行管理系統(tǒng)結(jié)構(gòu)圖1.1系統(tǒng)結(jié)構(gòu)圖銀行系統(tǒng)信息查詢財(cái)
2、務(wù)管理賬戶管理圖1.1系統(tǒng)結(jié)構(gòu)圖2、 銀行管理系統(tǒng)E-R圖和表結(jié)構(gòu)2.1E-R圖身份證號(hào)開(kāi)戶開(kāi)戶信息表住址聯(lián)系電話開(kāi)戶名聯(lián)系電話開(kāi)戶名身份證號(hào) 圖2.1開(kāi)戶開(kāi)戶金額是否掛失用戶編號(hào)密碼開(kāi)戶日期貨幣種類余額卡號(hào)存款類型銀行信息表 圖2.2卡號(hào)交易金額交易日期交易類型交易信息表交易2.2表結(jié)構(gòu) 通過(guò)對(duì)銀行管理系統(tǒng)的需求分析,應(yīng)該為該系統(tǒng)設(shè)計(jì)3個(gè)表,分別為用戶信息表、銀行卡信息表和交易信息表。 用戶信息表用于存儲(chǔ)用戶的基本信息,包括用戶的編號(hào)、開(kāi)戶名、身份證號(hào)、聯(lián)系電話和家庭住址等信息 表2.1 用戶信息表字段名稱字段描述數(shù)據(jù)類型長(zhǎng)度約束customer用戶編號(hào)Number4主鍵customer開(kāi)戶
3、名Varhcar220必填PID身份證號(hào)Varchar218必填telephone聯(lián)系電話Varchar213必填A(yù)ddress家庭地址Varchar250無(wú) 銀行卡信息表用于存儲(chǔ)銀行卡相關(guān)的信息主要包括卡號(hào)、存儲(chǔ)的貨幣類型,存款方式,開(kāi)戶時(shí)間,開(kāi)戶金額,余額、銀行卡密碼、是否掛失和用戶編號(hào)等信息, 表2.2銀行卡信息表字段名稱字段描述數(shù)據(jù)類型長(zhǎng)度約束cardID卡號(hào)Varchar220主鍵curType貨幣種類Varhcar210必填SavingType存款類型Varchar28非空Opendate開(kāi)戶日期DATETIME必填openmoney開(kāi)戶金額Number8必填Balance帳戶余額
4、Number8必填I(lǐng)sreportloss是否掛失Varchar22必填Customer開(kāi)戶編號(hào)Varchar4外鍵 交易信息表用于存儲(chǔ)用戶的交易記錄,主要包括交易日期,卡號(hào)、交易類型,交易金額等信息。 表2.3交易信息表字段名稱字段描述數(shù)據(jù)類型長(zhǎng)度屬性Transdate交易日期DatetimePKcardID卡號(hào)Varhcar220非空transTYPE交易類型VARCHAR24非空transMoney交易金額NUMBER4非空remark備注VARCHAR250非空 三、創(chuàng)建系統(tǒng)數(shù)據(jù)表3.1創(chuàng)建表空間和用戶 使用system用戶連接數(shù)據(jù)庫(kù)后,創(chuàng)建表空間space_zqp,指定數(shù)據(jù)文件為D:
5、Bank.dbf,代碼如下圖: 圖3.1表空間和用戶3.2創(chuàng)建用戶信息表并添加約束用戶信息表保存了用戶的基本信息,該表的創(chuàng)建語(yǔ)句如下,CREATE TABLE userInfo(customerID NUMBER(4) NOT NULL,customerName VARCHAR2(20) NOT NULL,PID VARCHAR2(18) NOT NULL,telephone VARCHAR2(13) NOT NULL,address VARCHAR2(50)PARTITION BY HASH(PID)( PARTITION pid1, PARTITION pid2, PARTITION pi
6、d3,);ALTER TABLE userInfoADD CONSTRAINT PK_customerID PRIMARY KEY(customerID)ADD CONSTRAINT UK_PID UNIQUE(PID)ADD CONSTRAINT CK_PID CHECK(LENGTH(PID)=18 OR LENGTH(PID)=15)ADD CONSTRAINT CK_telephone CHECK(telephone LIKE 0-90-90-90-9-0-90-90-90-90-90-90-90-9ORLENGTH(telephone)=13);-創(chuàng)建可以自動(dòng)生成自增主列的序列 cu
7、stomerid_seqCREATE SEQUENCE customerid_seqSTART WITH 1INCREMENT BY 1NOCACHE 如上述語(yǔ)句所示,在userInfo表中包含用戶編號(hào)(customerid)、開(kāi)戶名(customername)、身份證號(hào)(PID)、聯(lián)系電話(telephone)、家庭住址(address)。其中,customerid為主鍵,自增(從1開(kāi)始);PID只能是18位或15位,并且是唯一的;telephone必須是xxxx-xxxxxxxx的格式或13位的手機(jī)號(hào)碼。 圖3.2用戶信息表3.3創(chuàng)建銀行卡信息表 銀行卡信息表(cardinfo)中包含了卡
8、號(hào)(cardid),貨幣種類(curType),存款類型(savingtype),開(kāi)戶日期(opendate),開(kāi)戶金額(openmoney),余額(balance),密碼(pass),是否掛失(isREPORTLOSS)和用戶編號(hào)(customerID)的信息。其中,cardID為主鍵,必須為1010 3756 xxxx xxxx的格式;CURTYPE默認(rèn)為RMB,openmoney必須不能低于一元;balance也必須不能低于一元;pass默認(rèn)為;ISREPORTLOSS的值必須是“是/否”中之一,默認(rèn)為否;customerID為外鍵,引用userInfo表中的customerID列。圖3
9、.3 3.4創(chuàng)建交易信息表 交易信息表中包含了五個(gè)字段,分別為transdate(交易日期),cardID(卡號(hào))、TRANSTYPE(交易類型),transmoney(交易金額)和remark(備注)。其中,transdate默認(rèn)為系統(tǒng)當(dāng)前日期;cardid位外鍵,引用cardinfo表中的cardid列,可重復(fù);transtype只能是“存入/取出”之一;transmoney必須大于0.圖3.4交易信息表四、模擬常規(guī)業(yè)務(wù)操作4.1建立更新賬號(hào)觸發(fā)器結(jié)果如下:圖4.1創(chuàng)建before update觸發(fā)器4.2存取款交易操作 當(dāng)用戶辦理取款或存款業(yè)務(wù)時(shí),不僅需要向交易信息表中添加一條交易記錄,
10、還需要修改當(dāng)前賬戶中的余額,如果辦理取款業(yè)務(wù),如果將當(dāng)前賬戶總的余額減去支取余額,如果辦理托管業(yè)務(wù),多叫當(dāng)前賬戶中的金額加上存款金額。 在交易信息表中包含一個(gè)名為transtype的字段,該字段用于表示交易類型,取值范圍必須是存入或者自取,因此可以為transINFO表創(chuàng)建BEFORE INSERTR觸發(fā)器。根據(jù)要辦理里的交易類型,判斷出當(dāng)前的交易類型,如果transtype字段值為“支取”,則表示要辦理取款業(yè)務(wù),檢測(cè)當(dāng)前余額是否大于或等于要支取的金額,如果滿足條件,則要修改cardinfo表中的balance字段值,將該字段值減去交易金額(transmoney),如果transtype字段值
11、為“存入”,則表示要辦理存款業(yè)務(wù),修改cardinfo表中的balance字段值,將該值加上交易金額(transmoney)。代碼如下:reate or replace trigger trig_transbefore insert or update on transinfofor each rowdeclare my_balance number;rate_exception exception;begin select balance into my_balance from cardinfo where cardid=:new.cardid; if :new.transtype=支取
12、then if my_balance:new.transmoney-1 then update cardinfo set balance=balance-:new.transmoney where cardId=:new.cardId; end if;elsif :new.transtype=存入 thenupdate cardinfo set balance=balance+:new.transmoney where cardid=:new.cardId; end if; dbms_output.put_line(交易成功!); exception when rate_exception t
13、hen raise_application_error(-20001,交易失敗); end;select * from cardInfo_vw;insert into transInfo (transdate,cardID,transType,transMoney) values(sysdate,1010 3576 8888 6666,存入,1000);commit;4.3用戶開(kāi)戶 根據(jù)身份證號(hào)查詢是否在該行開(kāi)過(guò)戶,為萬(wàn)無(wú)一失,還需要查詢生成的卡號(hào)是否已經(jīng)被使用,如果這兩個(gè)條件都符合要求(此人從未在該行開(kāi)過(guò)戶,生成的卡號(hào)也無(wú)人使用),則向userinfo表中插入開(kāi)戶人的基本信息記錄,并根據(jù)開(kāi)戶
14、人的身份證號(hào)獲取開(kāi)戶人的編號(hào),從而向cardinfo表中插入開(kāi)戶人的基本信息記錄,同時(shí)還需要將生成的卡號(hào)顯示給開(kāi)戶人。如果收到卡號(hào)已經(jīng)被使用,得提醒用戶開(kāi)戶失敗;如果當(dāng)前開(kāi)戶人已經(jīng)在此行開(kāi)過(guò)戶,則提示用戶此身份證已有賬號(hào)。 結(jié)果如下圖:圖4.24.4更改密碼 一個(gè)銀行賬號(hào)對(duì)應(yīng)一個(gè)密碼,因此當(dāng)用戶輸入的卡號(hào)密碼相對(duì)應(yīng)時(shí),可以為該銀行卡設(shè)置新的密碼,代碼: create or replace procedure proc_updateUserPass(temp_cardid varchar2, -卡號(hào)oldpass varchar2, -舊密碼newpass varchar2 -新密碼)asi n
15、umber;pass_i VARCHAR2(6);beginselect count(*) into i from cardInfo where cardID=temp_cardid;select pass into pass_i from cardInfo where cardID=temp_cardid;if i=0 thendbms_output.put_line(此卡號(hào)不存在!);elsif i0 thenif pass_i=oldpass thenUPDATE cardInfo set pass=newpass where cardid=temp_cardid;dbms_output
16、.put_line(密碼更改成功!);elsedbms_output.put_line(舊密碼不正確!);end if;end if;commit;exceptionwhen others thendbms_output.put_line(密碼更改失敗!);end4.5賬號(hào)掛失 當(dāng)用戶的銀行卡丟失后,可以對(duì)該卡進(jìn)行掛失,銀行管理系統(tǒng)需要驗(yàn)證用戶的真實(shí)性,當(dāng)用戶輸入銀行卡號(hào)和密碼相對(duì)應(yīng),才可以對(duì)該卡進(jìn)行掛失操作,即修改cardinfo表中的IsreportLOSS列為“是”,否則提示“無(wú)權(quán)掛失”。結(jié)果如圖: 圖4.34.6余額查詢 用戶可以使用銀行管理系統(tǒng),辦理余額查詢等業(yè)務(wù),系統(tǒng)要求用戶輸入銀
17、行卡賬號(hào)和密碼,當(dāng)用戶輸入的賬號(hào)和密碼都合法時(shí),系統(tǒng)就查詢?cè)撚脩舻馁~戶余額,否則將提示用戶“賬號(hào)或密碼錯(cuò)誤!”,代碼:CREATE OR REPLACE procedure pro_query_balance(card_id varchar2, -帳戶card_pass varchar2) -密碼asi NUMBER:=0;not_data_found exception;user_balance NUMBER(8);beginselect count(*) into i from cardInfo where cardID=card_id and pass=card_pass;if i=0
18、thenraise not_data_found;elseselect balance into user_balance from cardInfo where cardID=card_id and pass=card_pass;dbms_output.put_line(你帳號(hào)的余額為:|user_balance);end if;exceptionwhen not_data_found thendbms_output.put_line(帳號(hào)或密碼錯(cuò)誤!);end;4.7轉(zhuǎn)賬業(yè)務(wù)設(shè)置 自助銀行管理系統(tǒng)辦理轉(zhuǎn)賬業(yè)務(wù)時(shí),要求用戶輸入正確的用于轉(zhuǎn)賬的卡號(hào)和密碼,以及獲得轉(zhuǎn)賬的卡號(hào)和轉(zhuǎn)賬金額,系統(tǒng)將根
19、據(jù)用戶輸入的卡號(hào)和密碼,檢測(cè)該銀行卡是否存在,如果存在,則判斷該銀行卡余額是否大于要轉(zhuǎn)賬的余額;如果大于,則向表中插入兩條交易記錄,一條支取的記錄,一條為存入的記錄,并提示用戶轉(zhuǎn)賬成功;如果用戶輸入的卡號(hào)和密碼不正確,則提示“你的卡號(hào)或密碼有誤!”。4.8銀行盈利結(jié)算 銀行的管理人員可以統(tǒng)計(jì)銀行的資金流通余額和盈利結(jié)算,資金流動(dòng)金額等于總存入-總支數(shù)金額;盈利結(jié)算,等于總支出金額乘以8%-總存入金額乘以3%,代碼如圖:圖4.44.9撤戶操作 當(dāng)用戶不再需要使用某張銀行卡時(shí),可去銀行辦理撤戶操作,撤戶操作需要用戶輸入正確的卡號(hào)和密碼,系統(tǒng)將根據(jù)用戶輸入的數(shù)據(jù)對(duì)該銀行卡進(jìn)行驗(yàn)證,如果該銀行卡存在,
20、都需要將卡上的余額全部取出,并刪除該卡在cardinfo表中的記錄,以及在transinfo表中所有的交易記錄。代碼如下圖圖4.5五、總 結(jié) 通過(guò)此次課程設(shè)計(jì),使我更加扎實(shí)的掌握了有關(guān)數(shù)據(jù)庫(kù)方面的知識(shí),在設(shè)計(jì)過(guò)程中雖然遇到了一些問(wèn)題,但經(jīng)過(guò)一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。實(shí)踐出真知,通過(guò)親自動(dòng)手制作,使我們掌握的知識(shí)不再是紙上談兵。在課程設(shè)計(jì)過(guò)程中,我們不斷發(fā)現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。最終的檢測(cè)調(diào)試環(huán)節(jié),本身就是在踐行“過(guò)而能改,善莫大焉”的知行觀。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多問(wèn)題,最后在老師的指
21、導(dǎo)下,終于游逆而解。在今后社會(huì)的發(fā)展和學(xué)習(xí)實(shí)踐過(guò)程中,一定要不懈努力,不能遇到問(wèn)題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問(wèn)題所在,然后一一進(jìn)行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠(yuǎn)不可能收獲成功,收獲喜悅,也永遠(yuǎn)不可能得到社會(huì)及他人對(duì)你的認(rèn)可!參考文獻(xiàn)1郝安林,Oracle 11g基礎(chǔ)教程與實(shí)驗(yàn)指導(dǎo),清華大學(xué)出版社 2王珊,數(shù)據(jù)庫(kù)系統(tǒng)概論,高等教育出版社3王霓虹,數(shù)據(jù)庫(kù)系統(tǒng)原理 ,哈爾濱工業(yè)出版社(十二五規(guī)劃教材)4李建中,數(shù)據(jù)庫(kù)系統(tǒng)原理,電子工業(yè)出版社(原理)5Stephens著,數(shù)據(jù)庫(kù)設(shè)計(jì),機(jī)械工業(yè)出版社6李丙洋.涂抹oracle-三思筆記
22、之一步一步學(xué)oracleM中國(guó)水利水電出版社,2010.17KarenMorton.OracleSQL高級(jí)編程M.人民郵電出版社,2011.118梁敬彬,梁敬弘.收獲不止oracleM.電子工業(yè)出版社,2013.59蓋國(guó)強(qiáng).循序漸進(jìn)oracle數(shù)據(jù)庫(kù)管理、優(yōu)化與備份恢復(fù)M.人民郵電出版社,2011.810LanAbramson,MicheaelAbbey,MichaelJ.Corey,竇朝輝.oracledatabase11g:初學(xué)者指南M.清華大學(xué)出版社,2010-01附錄程序源代碼:CREATE TABLESPACE space_zqpDATAFILE D:Bank.dbf SIZE 50
23、MAUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED;創(chuàng)建用戶zqp,用戶密碼:zqpCREATE USER zqpIDENTIFIED BY zqpDEFAULT TABLESPACE space_zqp;TEMPORARY TABLESPACE tempQUOTA 20M ON space_xianglin;/用戶已創(chuàng)建GRANT DBA TO XIANGLIN;/授權(quán)成功CONNECT xianglin/accp;/已連接REATE TABLE userInfo(customerID NUMBER(4) NOT NULL,customerName VARCHA
24、R2(20) NOT NULL,PID VARCHAR2(18) NOT NULL,telephone VARCHAR2(13) NOT NULL,address VARCHAR2(50)-根據(jù)身份證ID創(chuàng)建散列分區(qū)PARTITION BY HASH(PID)( PARTITION pid1, PARTITION pid2, PARTITION pid3,);-為userInfo表添加約束條件ALTER TABLE userInfoADD CONSTRAINT PK_customerID PRIMARY KEY(customerID)ADD CONSTRAINT UK_PID UNIQUE(P
25、ID)ADD CONSTRAINT CK_PID CHECK(LENGTH(PID)=18 OR LENGTH(PID)=15)ADD CONSTRAINT CK_telephone CHECK(telephone LIKE 0-90-90-90-9-0-90-90-90-90-90-90-90-9ORLENGTH(telephone)=13);/表已更改-創(chuàng)建可以自動(dòng)生成自增主列的序列 customerid_seqCREATE SEQUENCE customerid_seqSTART WITH 1INCREMENT BY 1NOCACHE;/序列已創(chuàng)建CREATE TABLE cardIof
26、o(cardID VARCHAR2(20) NOT NULL,curType VARCHAR2(10) NOT NULL,savingType VARCHAR2(8) NOT NULL,openDate DATE NOT NULL,openMoney NUMBER(8) NOT NULL,balance NUMBER(8) NOT NULL,pass VARCHAR2(6) NOT NULL,IsReportLoss VARCHAR2(2) NOT NULL,customerID NUMBER(4) NOT NULL)-根據(jù)開(kāi)戶日期創(chuàng)建表分區(qū)PARTITION BY RANGE(openDat
27、e)(PARTITION openDate_p1 VALUES LESS THAN(TO_DATE(01/01/2007,dd/mm/yyyy),PARTITION openDate_p2 VALUES LESS THAN(TO_DATE(01/04/2007,dd/mm/yyyy),PARTITION openDate_p3 VALUES LESS THAN(TO_DATE(01/07/2007,dd/mm/yyyy),PARTITION openDate_p4 VALUES LESS THAN(TO_DATE(01/10/2007,dd/mm/yyyy),PARTITION openDat
28、e_p5 VALUES LESS THAN(TO_DATE(01/01/2008,dd/mm/yyyy),PARTITION openDate_p6 VALUES LESS THAN(TO_DATE(01/04/2008,dd/mm/yyyy),PARTITION openDate_p7 VALUES LESS THAN(TO_DATE(01/07/2008,dd/mm/yyyy),PARTITION openDate_p8 VALUES LESS THAN(TO_DATE(01/10/2008,dd/mm/yyyy),PARTITION openDate_p9 VALUES LESS THA
29、N(TO_DATE(01/01/2009,dd/mm/yyyy),PARTITION openDate_p10 VALUES LESS THAN(TO_DATE(01/04/2009,dd/mm/yyyy),PARTITION openDate_p11 VALUES LESS THAN(TO_DATE(01/07/2009,dd/mm/yyyy),PARTITION openDate_p12 VALUES LESS THAN(maxvalue);/表已創(chuàng)建-為cardInfo表添加約束條件ALTER TABLE cardIofoADD CONSTRAINT PK_cardID PRIMARY
30、KEY(cardID)ADD CONSTRAINT CK_cardID CHECK(TRANSLATE(cardID, ,xxxxxxxxxx )=xxxx xxxx xxxx xxxx ANDINSTR(cardID,1010 3576 )=1)ADD CONSTRAINT CK_sav CHECK(savingType IN (活期,定期兩便,定期)ADD CONSTRAINT CK_openMoney CHECK (openMoney=1)ADD CONSTRAINT CK_pass CHECK(LENGTH(pass)=6)ADD CONSTRAINT CK_IsRePortLoss
31、CHECK(IsReportLoss IN (是,否)ADD CONSTRAINT FK_customerID FOREIGN KEY(customerID) REFERENCES userInfo(customerID)MODIFY(curType DEFAULT RMB)MODIFY(openDate DEFAULT sysdate)MODIFY(pass DEFAULT )MODIFY(IsReportLoss DEFAULT 否);/表已更改CREATE TABLE transInfo(transDate DATE NOT NULL,cardID VARCHAR2(20) NOT NU
32、LL,transType VARCHAR2(4) NOT NULL,transMoney NUMBER(4) NOT NULL,remark VARCHAR2(50)-根據(jù)交易時(shí)間創(chuàng)建表分區(qū)PARTITION BY RANGE(transDate)(PARTITION transDate_p1 VALUES LESS THAN(to_date(01/01/2007,dd/mm/yyyy),PARTITION transDate_p2 VALUES LESS THAN(to_date(01/04/2007,dd/mm/yyyy),PARTITION transDate_p3 VALUES LES
33、S THAN(to_date(01/07/2007,dd/mm/yyyy),PARTITION transDate_p4 VALUES LESS THAN(to_date(01/10/2007,dd/mm/yyyy),PARTITION transDate_p5 VALUES LESS THAN(to_date(01/01/2008,dd/mm/yyyy),PARTITION transDate_p6 VALUES LESS THAN(to_date(01/04/2008,dd/mm/yyyy),PARTITION transDate_p7 VALUES LESS THAN(to_date(0
34、1/07/2008,dd/mm/yyyy),PARTITION transDate_p8 VALUES LESS THAN(to_date(01/10/2008,dd/mm/yyyy),PARTITION transDate_p9 VALUES LESS THAN(to_date(01/01/2009,dd/mm/yyyy),PARTITION transDate_p10 VALUES LESS THAN(to_date(01/04/2009,dd/mm/yyyy),PARTITION transDate_p11 VALUES LESS THAN(to_date(01/07/2009,dd/m
35、m/yyyy),PARTITION transDate_p12 VALUES LESS THAN(maxvalue);/表已創(chuàng)建-為transInfo表添加表約束ALTER TABLE transInfoADD CONSTRAINT FK_cardID FOREIGN KEY(cardID) REFERENCES cardIofo(cardID)ADD CONSTRAINT CK_transType CHECK(transType IN (存入,支取)ADD CONSTRAINT CK_transMoney CHECK(transMoney0)MODIFY(transDate DEFAULT
36、sysdate);/表已更改-創(chuàng)建 userInfo表視圖CREATE OR REPLACE VIEW userInfo_vwASSELECT customerID as 用戶編號(hào),customerName as 用戶名稱,PID as 身份證號(hào),telephone as 聯(lián)系電話,address as 家庭住址 FROM userInfo;-創(chuàng)建 cardInfo表視圖CREATE OR REPLACE VIEW cardInfo_vw ASSELECT cardID as 銀行卡號(hào),curType as 貨幣類型,savingTYpe as 存款類型,openDate as 開(kāi)戶日期,op
37、enMoney as 開(kāi)戶金額,balance as 余額,pass as 密碼,IsReportLoss as 是否掛失,customerID as 用戶編號(hào) FROM cardInfo;-創(chuàng)建 transInfo表視圖CREATE OR REPLACE VIEW transInfo_vw ASselect transDate as 交易日期,cardID as 卡號(hào),transType as 交易類型,transMoney as 交易金額,remark as 備注 FROM transInfo;-創(chuàng)建 查詢掛失的客戶信息視圖CREATE OR REPLACE VIEW userInfo_I
38、sReportLoss_vw ASselect u.customerID as 用戶編號(hào),u.customerName as 開(kāi)戶名,u.pid as 身份證號(hào),u.telephone as 聯(lián)系電話,u.address as 家庭地址 FROM userInfo u INNER JOIN cardInfo c ON u.customerID=c.customerID WHERE IsReportLoss=是;-創(chuàng)建 查詢本周開(kāi)戶的卡號(hào) 顯示相關(guān)信息視圖CREATE OR REPLACE VIEW query_week_information_vw ASSELECT cardID as 卡號(hào),
39、curType as 貨幣類型,savingType as 存款類型,openDate as 開(kāi)戶日期,openMoney as 開(kāi)戶金額,balance as 余額,pass as 密碼,IsReportLoss as 是否掛失,customerID as 用戶編號(hào)FROM cardInfo WHERE openDate BETWEEN TRUNC(sysdate,day) AND sysdate;-創(chuàng)建 查詢本月交易金額最高的卡號(hào) 的視圖CREATE OR REPLACE VIEW top_balance_vw ASSELECT DISTINCT cardID as 交易最高的卡號(hào),tra
40、nsMoney as 交易金額 FROM transInfo WHERE transMoney=(SELECT Max(transMoney) FROM transInfo);- 查看視圖 -select * from userInfo_vw; -userInfo表視圖select * from cardInfo_vw; -cardInfo表視圖select * from transInfo_vw; -transInfo表視圖select * from userInfo_IsReportLoss_vw; -查詢掛失的客戶信息視圖select * from query_week_informat
41、ion_vw; -查詢本周開(kāi)戶的卡號(hào)select * from top_balance_vw; -查詢本月交易金額最高的卡號(hào)/*select u.customerName as 客戶名字,c.balance as 余額,t.transMoney as 交易金額 from userInfo u ,cardInfo c ,transInfo t where u.customerName=張三and u.customerid=c.customerid and c.cardid=t.cardid;select u.customerName as 客戶名稱,c.balance as 余額 from us
42、erInfo u INNER JOIN cardInfo c on u.customername=張三and u.customerid=c.customerid;*/-不允許更新cardInfo表的cardID列-不能更新卡號(hào)的觸發(fā)器create or replace trigger trg_cardInfo_cardID_notUpdatebefore update of cardIDon cardInfofor each rowbeginraise_application_error(-20001,此列不允許修改!);end;-創(chuàng)建觸發(fā)器實(shí)現(xiàn)交易操作create or replace tr
43、igger trig_transbefore insert or update on transinfofor each rowdeclare my_balance number;rate_exception exception;begin select balance into my_balance from cardinfo where cardid=:new.cardid; if :new.transtype=支取 then if my_balance:new.transmoney-1 then update cardinfo set balance=balance-:new.trans
44、money where cardId=:new.cardId; end if;elsif :new.transtype=存入 thenupdate cardinfo set balance=balance+:new.transmoney where cardid=:new.cardId; end if; dbms_output.put_line(交易成功!); exception when rate_exception then raise_application_error(-20001,交易失敗); end;select * from cardInfo_vw;-插入交易數(shù)據(jù) 自動(dòng)觸發(fā)一系列
45、操作insert into transInfo (transdate,cardID,transType,transMoney) values(sysdate,1010 3576 8888 6666,存入,1000);commit;select * from cardInfo_vw;select * from transInfo_vw;create or replace TRIGGER trg_cardIofo_card_notUpdateBEFORE UPDATE OF cardIDON cardIofoFOR EACH ROW BEGINRAISE_APPLICATION_ERROR(-20
46、001,賬號(hào)不允許修改);END;CREATE OR REPLACE FUNCTION random_cardIdRETURN VARCHAR2AScard_id VARCHAR2(20):=1010 3576;tem CHAR(5);re_card_id_count NUMBER:=0;BEGINLOOPtem:=to_char(dbms_random.value(1000,9999),0000);card_id:=card_id|tem;tem:=to_char(dbms_random.value(1000,9999),0000);card_id:=card_id|tem;SELECT C
47、OUNT(*) INTO re_card_id_count FROM cardInfo WHERE cardID=card_id;EXIT WHEN re_card_id_count=0;END LOOP;RETURN card_id;END;開(kāi)戶過(guò)程:CREATE OR REPLACE procedure proc_openUser( uname varchar2, -開(kāi)戶的姓名 p_id varchar2, -身份證 tel varchar2, -電話號(hào)碼 address varchar2, -地址 savingtype varchar2, -存款類型 curType varchar2,
48、-貨幣類型 openMoney number, -開(kāi)戶金額 pass varchar2 -開(kāi)戶密碼)ascid varchar2(20); -卡號(hào)customer_id number; -顧客IDi NUMBER;c NUMBER;Begin-調(diào)用函數(shù)生成卡號(hào)cid:=random_cardId;-查詢此人是否在此行開(kāi)過(guò)戶select count(*) into i from userinfo where PID=p_id;-查詢卡號(hào)是否應(yīng)該有了select count(*) into c from cardinfo where cardID=cid;if i=0 thenif c=0 the
49、nInsert intouser Info values(customerid_seq.nextval,uname,p_id,tel,address);-根據(jù)身份證號(hào)獲取顧客編號(hào)select customerId into customer_id from userInfo where PID=p_id;insert into cardInfo(cardId,curType,Savingtype,Openmoney,balance,pass,customerId) values(cid,curType,savingType,openMoney,openMoney,pass,customer_i
50、d);DBMS_OUTPUT.PUT_LINE(您已成功開(kāi)戶!);DBMS_OUTPUT.PUT_LINE(您的卡號(hào)為:|cid);elsif c0 thendbms_output.put_line(開(kāi)戶失敗!);end if; elsif i0 thendbms_output.put_line(此身份證已開(kāi)有帳號(hào)!);END IF;EXCEPTIONwhen others thendbms_output.put_line(開(kāi)戶失敗!);end;create or replace procedure proc_updateUserPass(temp_cardid varchar2, -卡號(hào)ol
51、dpass varchar2, -舊密碼newpass varchar2 -新密碼 ) as i number;pass_i VARCHAR2(6);begin select count(*) into i from cardInfo where cardID=temp_cardid; select pass into pass_i from cardInfo where cardID=temp_cardid; if i=0 thendbms_output.put_line(此卡號(hào)不存在!);elsif i0 thenif pass_i=oldpass thenUPDATE cardInfo set pass=newpass where cardid=temp_cardid;dbms_output.put_line(密碼更改成功!);else dbms_output.put_line(舊密碼不
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度環(huán)保設(shè)施工程款撥付及效果評(píng)估協(xié)議
- 二零二五年度儲(chǔ)蓄存款業(yè)務(wù)戰(zhàn)略規(guī)劃合同
- 二零二五年度股權(quán)投資基金投資合同范本
- 二零二五年度個(gè)人間房屋裝修專項(xiàng)借款合同
- 辦公區(qū)域車位出租合同
- 婚禮接送服務(wù)合同
- 反對(duì)抵制協(xié)議
- 保姆離職協(xié)議模板
- 2025年中國(guó)大小貓工藝品市場(chǎng)調(diào)查研究報(bào)告
- 2025至2031年中國(guó)鋁制品機(jī)殼行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年服裝制版師(中級(jí))職業(yè)技能鑒定考試題(附答案)
- 高考模擬作文“中國(guó)游”“city不city”導(dǎo)寫(xiě)及范文
- 福建省福州市2024-2025學(xué)年九年級(jí)上學(xué)期期末語(yǔ)文試題(解析版)
- 一年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)教案2
- 九年級(jí)主題班會(huì)課件:遇見(jiàn)最好的自己(開(kāi)學(xué)第一課)
- 2025版股權(quán)投資基金股份收購(gòu)與退出機(jī)制協(xié)議3篇
- 【營(yíng)銷方案】2025小紅書(shū)平臺(tái)營(yíng)銷通案
- 2025年棗莊科技職業(yè)學(xué)院高職單招語(yǔ)文2018-2024歷年參考題庫(kù)頻考點(diǎn)含答案解析
- 護(hù)苗行動(dòng)安全教育課件
- 2024年山西同文職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 油品庫(kù)房管理規(guī)定(2篇)
評(píng)論
0/150
提交評(píng)論