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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库课程设计(实训)

發(fā)布時間:2023/12/10 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库课程设计(实训) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1..數(shù)據(jù)庫設(shè)計

(1)項目背景 ??

? ? 已知產(chǎn)品供應(yīng)與訂購的業(yè)務(wù)關(guān)系如下圖:

? ? ?其中,客戶(client)的屬性有:客戶編碼(cno)、客戶名稱(cname)、所屬行業(yè)(trades)、客戶地址(caddress)、客戶聯(lián)系人(clinkman)、客戶電話(ctelephone) ;產(chǎn)品(product)的屬性有:產(chǎn)品編號(pno)、產(chǎn)品名稱(pname)、規(guī)格(spec)、單位(unit)、單價(unitprice);廠家(factory)的屬性有:廠家編碼(fno)、廠家名稱(fname)、廠家地址(faddress)、銷售經(jīng)理(salesmanager)、廠家電話(ftelephone)。

? ? ? 在客戶訂購(order)產(chǎn)品中,一個客戶可以訂購多種產(chǎn)品,一種產(chǎn)品也可以被多個客戶訂購,客戶訂購產(chǎn)品時須標(biāo)明訂購的訂購數(shù)量(amount)和訂購日期(date);在廠家供應(yīng)(supply)產(chǎn)品中,一種產(chǎn)品可以由多個廠家供應(yīng),一個廠家也可供應(yīng)多種產(chǎn)品,廠家供應(yīng)產(chǎn)品時須標(biāo)明供應(yīng)日期(sdate )和供應(yīng)數(shù)量(samount)。

(2)數(shù)據(jù)庫結(jié)構(gòu)設(shè)計

概念設(shè)計:根據(jù)項目背景分析實體和實體之間的關(guān)系,畫出實體關(guān)系圖。

邏輯設(shè)計:

?將實體關(guān)系轉(zhuǎn)化為實體關(guān)系模型并要求滿足3NF。?

?由關(guān)系模型確定數(shù)據(jù)庫的表結(jié)構(gòu),包括必須的完整性約束及其表之間的聯(lián)系。

客戶表

屬性

類型

是否為主鍵

備注

cno

CHAR(10)

客戶編碼?PRIMARY ?KEY

cname

CHAR(10)

客戶名稱

trades

CHAR(10)

所屬行業(yè)

caddress

CHAR(10)

客戶地址

clinkman

CHAR(10)

客戶聯(lián)系人

ctelephone

CHAR(15)

客戶電話

產(chǎn)品表

屬性

類型

是否為主鍵

備注

pno

CHAR(10)

產(chǎn)品編號 PRIMARY??KEY

pname

VARCHAR(20)

產(chǎn)品名稱

spec

VARCHAR(20)

規(guī)格

unit

VARCHAR(20)

單位

unitprice

INT(10)

單價

廠家表

屬性

類型

是否為主鍵

備注

fno

CHAR(10)

廠家編碼 PRIMARY??KEY

fname

VARCHAR(20)

廠家名稱

faddress

VARCHAR(20)

廠家地址

salesmanager

VARCHAR(20)

銷售經(jīng)理

ftelephone

CHAR(20)

廠家電話

訂購表

屬性

類型

是否為主鍵

備注

cno

CHAR(20)

客戶編碼

pno

CHAR(20)

產(chǎn)品編號

amount

INT

訂購數(shù)量

dates

DATATIME

訂購日期

(cno,pno,dates) ?

PRIMARY??KEY

FOREIGN ?KEY(cno)

REFERENCES ?clients(cno)

FOREIGN ?KEY(pno)

REFERENCES ?product(pno)

供應(yīng)表

屬性

類型

是否為主鍵

備注

pno

INT(20)

產(chǎn)品編號

fno

INT(20)

廠家編碼

sdate

CHAR

供應(yīng)日期

samount

INT

供應(yīng)數(shù)量

(pno,fno,sdate)

PRIMARY??KEY

FOREIGN ?KEY(pno)

REFERENCES ?product(Pno)

FOREIGN ?KEY(fno)

REFERENCES ?Factory(Fno)

3.數(shù)據(jù)庫實現(xiàn)與應(yīng)用

(1)創(chuàng)建名為“TEST_學(xué)號”的數(shù)據(jù)庫;

mysql>CREATE DATABASE test_2020111250;

  • 創(chuàng)建數(shù)據(jù)庫的所有數(shù)據(jù)表;
  • SQL語句:

    CREATE TABLE clientS(cno CHAR(10) primary key,cname CHAR(10),trades CHAR(10),caddress ?CHAR(10),clinkman ?CHAR(10),ctelephone ?CHAR(15));CREATE TABLE product(pno CHAR(10) primary key,pname VARCHAR(20),spec VARCHAR(20),unit VARCHAR(20),unitprice int(10));CREATE TABLE factory(fno CHAR(10)primary key,fname VARCHAR(20),faddress VARCHAR(20),salesmanager VARCHAR(20),ftelephone CHAR(20));CREATE TABLE orderS(cno CHAR(10),pno CHAR(20) ,amount INT,dateS DATETIME,primary key(cno,pno,DATES),foreign key (cno) references clientS(cno),foreign key (pno) references product(pno));CREATE TABLE supply(fno CHAR(10),pno CHAR(20) ,sdate DATETIME,samount ?INT,primary key(pno,fno,sdate),Foreign key (pno) references product(pno),Foreign key (fno) references factory(fno));

    (3)編輯數(shù)據(jù):給每個表輸入至少10個記錄(均為模擬數(shù)據(jù));

    ???為調(diào)試后續(xù)編程,應(yīng)要求每個客戶訂購多種產(chǎn)品,每種產(chǎn)品有多個廠家供應(yīng)。客戶、產(chǎn)品有5個記錄即可,但訂購、供應(yīng)和廠家要有更多個記錄。另外,要求同一種產(chǎn)品不同廠家的單價不相同。

    SQL語句:(每個表插入數(shù)據(jù))客戶數(shù)據(jù)

    insert?into clients?values('c01','陳東','家電公司','東莞','謝總',12345659112);insert into clients?values('c02','陳成','電子廠','深圳','陳總',12895659112);insert into clients?values('c03','馬白云','人工智能','上海','馬總',12785645212);insert into clients?values('c04','王小強(qiáng)','化工廠','廣州','王總',12325059112);insert into clients?values('c05','沈夏','外賣行業(yè)','湛江','沈總',12565625012);insert into clients?values('c06','吳東','電腦公司','上海','吳總',12345659112);

    SQL語句:(每個表插入數(shù)據(jù))產(chǎn)品數(shù)據(jù)

    insert into product values('p01','電腦','臺裝','臺',800);insert into product values('p02','冰箱','臺裝','臺',2300);insert into product values('p03','字典','大盒裝','本',300);insert into product values('p04','電動車','輛裝','輛',3000);insert into product values('p05','感冒藥','100大盒裝','盒',3000);INSERT INTO product VALUES('p06','電腦','臺裝','臺',900);

    ?

    SQL語句:(每個表插入數(shù)據(jù))廠家數(shù)據(jù)

    insert into factory values('f1','電子廠','廣東','謝小梅','13654250563');insert into factory values('f2','手機(jī)廠','湖北','劉黑仔','15425023653');insert into factory values('f3','東廠','廣西','馬仔','15648972505');insert into factory values('f4','北廠','海南','馬海','15642232508');insert into factory values('f5','西北廠','吉林','李菲','15642325045');insert into factory values('f6','東北廠','湖南','李四','10232504231');insert into factory values('f7','東南廠','河北','王六','13564250641');insert into factory values('f8','西北廠','江西','張三','10232509874');insert into factory values('f9','華南廠','新疆','小明','12342505200');insert into factory values('f10','臺北廠','山西','小張','12325056456');insert into factory VALUES('f11','小廠','安徽','姚小桃',13654987563);

    ?

    SQL語句:(每個表插入數(shù)據(jù))訂購數(shù)據(jù)

    insert into orders values('c01','p01',11,'2022-1-2');insert into orders values('c02','p02',22,'2022-2-3');insert into orders values('c03','p03',33,'2022-3-4');insert into orders values('c04','p04',44,'2022-4-5');insert into orders values('c05','p05',55,'2022-5-7');insert into orders values('c05','p05',66,'2022-5-9');insert into orders values('c06','p06',99,'2022-5-10');

    ?

    SQL語句:(每個表插入數(shù)據(jù))訂購數(shù)據(jù)

    insert into supply values('f1','p01','2022-1-1','14');insert into supply values('f2','p02','2022-2-2','25');insert into supply values('f4','p03','2022-3-4','47');insert into supply values('f4','p04','2022-4-4','47');insert into supply values('f5','p05','2022-5-5','58');insert into supply values('f6','p03','2022-1-5','69');insert into supply values('f7','p04','2022-2-4','71');insert into supply values('f8','p05','2022-2-8','82');insert into supply values('f11','p06','2022-2-9','90');insert into supply values('f9','p01','2022-4-1','93');insert into supply values('f10','p02','2022-5-2','91');

    ?

    (4)設(shè)計并實現(xiàn)如下對象或應(yīng)用

    ● ?創(chuàng)建數(shù)據(jù)庫表之間的關(guān)系圖

    ● ?在客戶表上創(chuàng)建關(guān)于“所屬行業(yè)”列的一個升序索引

    CREATE INDEX ik_trades ON CLIENTs(trades ASC);

    ● ?創(chuàng)建一個包含“所屬行業(yè)”、“客戶名稱”、訂購的“產(chǎn)品名稱”和“訂購數(shù)量”等列信息的視圖

    CREATE VIEW c(所屬行業(yè),客戶名稱,產(chǎn)品名稱,訂購數(shù)量)ASSELECT trades,cname,pname,amountFROM orderS,clientS,productWHERE clientS.cno=orderS.cno AND product.pno=orderS.pno;SHOW CREATE VIEW c;

    ?

    ● ?編寫SQL語句插入一條客戶訂購產(chǎn)品記錄,內(nèi)容自定。

    ● ?編寫SQL語句修改一條廠家供應(yīng)產(chǎn)品記錄,內(nèi)容自定。

    UPDATE supplySET sdate='2023-12-3'WHERE fno='f5';

    ?

    ● ?編寫查詢程序,并將程序存為腳本文件。

    ① 查詢各客戶訂購某同一種產(chǎn)品總數(shù)量平均單價

    要求首先按客戶分組,然后每一組內(nèi)再按產(chǎn)品分組。

    SELECT cname AS 客戶名稱, pname AS 產(chǎn)品名稱,SUM(amount) AS 總數(shù)量,AVG(unitprice) AS 平均單價FROM clients,orders,productWHERE clients.cno=orders.cno AND product.pno=orders.pnoGROUP BY clients.cno,pname;

    ?

    ② 查詢各種產(chǎn)品的所有廠家的名稱和單價,并按單價從低到高的順序排列。

    SELECT pname AS 產(chǎn)品名稱,fname AS 廠家名稱, unitprice AS 單價FROM factory,product,supplyWHERE factory.fno=supply.fno AND product.pno=supply.pnoORDER BY unitprice ASC;

    ?

    創(chuàng)建一個存儲過程,實現(xiàn)對指定客戶訂購某種產(chǎn)品總數(shù)量的統(tǒng)計(其中,指定客戶和特定產(chǎn)品以存儲過程的輸入?yún)?shù)設(shè)定),并自行檢查執(zhí)行該存儲過程的正確性。

    DELIMITER//CREATE PROCEDURE t_amount(IN cno1 CHAR(10),IN pno1 CHAR(10))BEGINSELECT ?cno,product.pname,SUM(amount) AS 總數(shù)量FROM `orders`JOIN `product` ON orders.pno=product.pnoWHERE product.pname=pno1 ?AND ?orders.cno=cno1;END;//DELIMITER;CALL t_amount('c01','電腦');

    ?

    創(chuàng)建一個存放廠家供應(yīng)產(chǎn)品數(shù)量的統(tǒng)計表(包括廠家編碼、廠家名稱、產(chǎn)品編碼、產(chǎn)品名稱和供應(yīng)數(shù)量等列信息);然后創(chuàng)建一個觸發(fā)器,使得廠家修改產(chǎn)品供應(yīng)數(shù)量時,與統(tǒng)計表的數(shù)據(jù)保持一致。

    CREATE TABLE 統(tǒng)計表ASSELECT factory.fno,fname ,product.pno,pname,samountFROM supply,factory,productWHERE factory.fno=supply.fno AND product.pno=supply.pno;觸發(fā)器DELIMITER//create trigger 統(tǒng)計表_update AFTER update on supplyfor each rowbeginupdate 統(tǒng)計表 set samount=new.samountwhere fno=OLD.fno AND PNO=OLD.PNO;END;//delimiter;

    供應(yīng)表更新之前

    統(tǒng)計表?

    更新之后UPDATE supply

    SET samount =45 WHERE fno='f2';Supply

    ?

    統(tǒng)計表

    ?

    4. 數(shù)據(jù)庫管理與維護(hù)

    通過SQL語句添加數(shù)據(jù)庫用戶user01,并授予該用戶對訂購數(shù)據(jù)表的insert、select、update和delete權(quán)限;

    CREATE USER 'user01'@'localhost' IDENTIFIED BY '123456';GRANT INSERT ON `order` TO 'user01'@'localhost';GRANT SELECT ON `order` TO 'user01'@'localhost';GRANT UPDATE ON `order` TO 'user01'@'localhost';GRANT DELETE ON `order` TO 'user01'@'localhost';

    通過SQL語句實現(xiàn)對數(shù)據(jù)庫的完全備份和還原。

    備份:

    mysqldump -u root -p ?test_2020111250 >F:\xie\2020111250.sql

    ??

    還原:

    ?

    mysql -u root -p test_2020111250 <F:\xwq\xw.sql

    總結(jié)

    以上是生活随笔為你收集整理的数据库课程设计(实训)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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