数据库课程设计(实训)

1..数据库设计

(1)项目背景   

    已知产品供应与订购的业务关系如下图:

     其中,客户(client)的属性有:客户编码(cno)、客户名称(cname)、所属行业(trades)、客户地址(caddress)、客户联系人(clinkman)、客户电话(ctelephone) ;产品(product)的属性有:产品编号(pno)、产品名称(pname)、规格(spec)、单位(unit)、单价(unitprice);厂家(factory)的属性有:厂家编码(fno)、厂家名称(fname)、厂家地址(faddress)、销售经理(salesmanager)、厂家电话(ftelephone)。

      在客户订购(order)产品中,一个客户可以订购多种产品,一种产品也可以被多个客户订购,客户订购产品时须标明订购的订购数量(amount)和订购日期(date);在厂家供应(supply)产品中,一种产品可以由多个厂家供应,一个厂家也可供应多种产品,厂家供应产品时须标明供应日期(sdate )和供应数量(samount)。

(2)数据库结构设计

概念设计:根据项目背景分析实体和实体之间的关系,画出实体关系图。

逻辑设计:

 将实体关系转化为实体关系模型并要求满足3NF。 

 由关系模型确定数据库的表结构,包括必须的完整性约束及其表之间的联系。

客户表

属性

类型

是否为主键

备注

cno

CHAR(10)

客户编码 PRIMARY  KEY

cname

CHAR(10)

客户名称

trades

CHAR(10)

所属行业

caddress

CHAR(10)

客户地址

clinkman

CHAR(10)

客户联系人

ctelephone

CHAR(15)

客户电话

产品表

属性

类型

是否为主键

备注

pno

CHAR(10)

产品编号 PRIMARY  KEY

pname

VARCHAR(20)

产品名称

spec

VARCHAR(20)

规格

unit

VARCHAR(20)

单位

unitprice

INT(10)

单价

厂家表

属性

类型

是否为主键

备注

fno

CHAR(10)

厂家编码 PRIMARY  KEY

fname

VARCHAR(20)

厂家名称

faddress

VARCHAR(20)

厂家地址

salesmanager

VARCHAR(20)

销售经理

ftelephone

CHAR(20)

厂家电话

订购表

属性

类型

是否为主键

备注

cno

CHAR(20)

客户编码

pno

CHAR(20)

产品编号

amount

INT

订购数量

dates

DATATIME

订购日期

(cno,pno,dates)  

PRIMARY  KEY

FOREIGN  KEY(cno)

REFERENCES  clients(cno)

FOREIGN  KEY(pno)

REFERENCES  product(pno)

供应表

属性

类型

是否为主键

备注

pno

INT(20)

产品编号

fno

INT(20)

厂家编码

sdate

CHAR

供应日期

samount

INT

供应数量

(pno,fno,sdate)

PRIMARY  KEY

FOREIGN  KEY(pno)

REFERENCES  product(Pno)

FOREIGN  KEY(fno)

REFERENCES  Factory(Fno)

3.数据库实现与应用

(1)创建名为“TEST_学号”的数据库;

mysql>CREATE DATABASE test_2020111250;

  1. 创建数据库的所有数据表;

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)编辑数据:给每个表输入至少10个记录(均为模拟数据);

   为调试后续编程,应要求每个客户订购多种产品,每种产品有多个厂家供应。客户、产品有5个记录即可,但订购、供应和厂家要有更多个记录。另外,要求同一种产品不同厂家的单价不相同。

SQL语句:(每个表插入数据)客户数据

insert into clients values('c01','陈东','家电公司','东莞','谢总',12345659112);insert into clients values('c02','陈成','电子厂','深圳','陈总',12895659112);insert into clients values('c03','马白云','人工智能','上海','马总',12785645212);insert into clients values('c04','王小强','化工厂','广州','王总',12325059112);insert into clients values('c05','沈夏','外卖行业','湛江','沈总',12565625012);insert into clients values('c06','吴东','电脑公司','上海','吴总',12345659112);

SQL语句:(每个表插入数据)产品数据

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语句:(每个表插入数据)厂家数据

insert into factory values('f1','电子厂','广东','谢小梅','13654250563');insert into factory values('f2','手机厂','湖北','刘黑仔','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语句:(每个表插入数据)订购数据

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语句:(每个表插入数据)订购数据

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)设计并实现如下对象或应用

●  创建数据库表之间的关系图

●  在客户表上创建关于“所属行业”列的一个升序索引

CREATE INDEX ik_trades ON CLIENTs(trades ASC);

●  创建一个包含“所属行业”、“客户名称”、订购的“产品名称”和“订购数量”等列信息的视图

CREATE VIEW c(所属行业,客户名称,产品名称,订购数量)ASSELECT trades,cname,pname,amountFROM orderS,clientS,productWHERE clientS.cno=orderS.cno AND product.pno=orderS.pno;SHOW CREATE VIEW c;

 

●  编写SQL语句插入一条客户订购产品记录,内容自定。

●  编写SQL语句修改一条厂家供应产品记录,内容自定。

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

 

●  编写查询程序,并将程序存为脚本文件。

① 查询各客户订购某同一种产品总数量平均单价

要求首先按客户分组,然后每一组内再按产品分组。

SELECT cname AS 客户名称, pname AS 产品名称,SUM(amount) AS 总数量,AVG(unitprice) AS 平均单价FROM clients,orders,productWHERE clients.cno=orders.cno AND product.pno=orders.pnoGROUP BY clients.cno,pname;

 

② 查询各种产品的所有厂家的名称和单价,并按单价从低到高的顺序排列。

SELECT pname AS 产品名称,fname AS 厂家名称, unitprice AS 单价FROM factory,product,supplyWHERE factory.fno=supply.fno AND product.pno=supply.pnoORDER BY unitprice ASC;

 

创建一个存储过程,实现对指定客户订购某种产品总数量的统计(其中,指定客户和特定产品以存储过程的输入参数设定),并自行检查执行该存储过程的正确性。

DELIMITER//CREATE PROCEDURE t_amount(IN cno1 CHAR(10),IN pno1 CHAR(10))BEGINSELECT  cno,product.pname,SUM(amount) AS 总数量FROM `orders`JOIN `product` ON orders.pno=product.pnoWHERE product.pname=pno1  AND  orders.cno=cno1;END;//DELIMITER;CALL t_amount('c01','电脑');

 

创建一个存放厂家供应产品数量的统计表(包括厂家编码、厂家名称、产品编码、产品名称和供应数量等列信息);然后创建一个触发器,使得厂家修改产品供应数量时,与统计表的数据保持一致。

CREATE TABLE 统计表ASSELECT factory.fno,fname ,product.pno,pname,samountFROM supply,factory,productWHERE factory.fno=supply.fno AND product.pno=supply.pno;触发器DELIMITER//create trigger 统计表_update AFTER update on supplyfor each rowbeginupdate 统计表 set samount=new.samountwhere fno=OLD.fno AND PNO=OLD.PNO;END;//delimiter;

供应表更新之前

统计表 

更新之后UPDATE supply

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

 

统计表

 

4. 数据库管理与维护

通过SQL语句添加数据库用户user01,并授予该用户对订购数据表的insert、select、update和delete权限;

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语句实现对数据库的完全备份和还原。

备份:

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

  

还原:

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12087.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库课设 (3)

一、课程设计题目 医院管理系统 二、课程设计目的 数据库系统课程设计是为了配合学习数据库系统原理及应用开发而设置的&#xff0c;是计算机科学与技术、大数据、信息安全、物联网工程、软件工程、智能制造等专业集中实践的教学环节&#xff0c;是将关系数据库理论知识转化…

学生成绩管理系统数据库设计--MySQLSQL Server

MySQL 数据库设计-学生成绩管理系统 设计大纲友情链接 1、医疗信息管理系统数据库–MySQL2、邮件管理数据库设计–MySQL3、点餐系统数据库设计–SQL Server4、商品管理系统数据库设计–SQL Server5、SQL Server医疗信息管理系统数据库【英文版-源码】–&#xff08;Medical Ma…

chatGPT一笑

不得不说chatGPT真的超出了我对以往ai的认知&#xff0c;甚至连敷衍都学会了&#xff01; 突然想起了神鸟图与小鸡吃米图区别&#xff0c;哈哈

《花雕学AI》02:人工智能挺麻利,十分钟就为我写了一篇长长的故事

ChatGPT最近火爆全网&#xff0c;上线短短两个多月&#xff0c;活跃用户就过亿了&#xff0c;刷新了历史最火应用记录&#xff0c;网上几乎每天也都是ChatGPT各种消息。国内用户由于无法直接访问ChatGPT&#xff0c;所以大部分用户都无缘体验。不过呢&#xff0c;前段时间微软正…

研究开源gpt-2-simple项目,跑一个简单的模型,然后生成一段对话。用的是 Intel(R) Core(TM) i7-9700,8核8线程,训练最小的模型200次跑1个小时20分钟

目录 前言1&#xff0c;关于gpt2的几个例子学习2&#xff0c;使用docker配置环境3&#xff0c;使用uget工具下载模型&#xff0c;文件大容易卡死4&#xff0c;研究使用gpt2-simple执行demo&#xff0c;训练200次5&#xff0c;总结 前言 本文的原文连接是: https://blog.csdn.ne…

基于GPT-4的神仙插件Bito,亲测好用

基于GPT-4的神仙插件&#xff0c;无需魔法,目前免费 文章目录 基于GPT-4的神仙插件&#xff0c;无需魔法,目前免费一、Bito简介可以做哪些事情 二、如何安装插件三、使用步骤提问示例一、写一个快速排序算法二、解释mysql的原子性三、询问天气,非技术问题不回答 :joy: 四、官网…

One-shot就能做事件抽取?ChatGPT在信息抽取上的强大应用

One-shot就能做事件抽取&#xff1f;ChatGPT在信息抽取上的强大应用 0. 前言1. 灵感2. 实验3. 结论 0. 前言 近期&#xff0c;OpenAI发布的chat GPT可谓是各种刷屏&#xff0c;很多人都在关注这种模式是否可以应用于搜索引擎&#xff0c;这给做搜索的朋友们带来了很大的危机感…

吴恩达OpenAI基于ChatGPT的Prompt开发教程

吴恩达OpenAI基于ChatGPT的Prompt开发教程 百度文心千帆示例&#xff1a; 作为一名营养师&#xff0c;我想为 2 人设计一份素食食谱&#xff0c;每份含有大约 500 卡路里的热量&#xff0c;并且血糖指数较低。你能提供一个建议吗&#xff1f; 1.如何给出清晰具体的提示 1.1大…

软银计划大幅减持阿里巴巴;美国将12家中国芯片贸易商纳入“实体清单”;知乎发布中文大模型“知海图AI”丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 企业动态 百度Apollo将在上海车展发布智能汽车开放方案 4月13日&#xff0c;据科创板日报报道&#xff0c;百度Apollo将现身即将开幕的上海车展&#xff0c;并于4月16日举办Apollo汽车智能化业务发布会。届时&#xff0c…

手机之父出生 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2022 年 12 月 26 日&#xff0c;在 1898 年的今天&#xff0c;居里夫人在提交给法国科学院的报告中宣布他们又发现一个比铀的放射性要强百万倍的新元素——镭。这是皮埃…

当CSDN接入ChatGPT,我再也不是百度工程师了

ChitGPT它来了 今天上了下CSDN&#xff0c;才发现新出来一个叫“ChitGPT”的功能&#xff0c;CSDN应该是每个程序员都翻阅的网站&#xff0c;百度一搜&#xff0c;关键词匹配大量CSDN的网站&#xff0c;点进去干货却寥寥无几&#xff0c;大多水文或者搬运文&#xff0c;可倘若C…

特制自己的ChatGPT:多接口统一的轻量级LLM-IFT平台

©PaperWeekly 原创 作者 | 佀庆一 单位 | 中科院信息工程研究所 研究方向 | 视觉问答 项目简称&#xff1a; Alpaca-CoT&#xff08;当羊驼遇上思维链&#xff09; 项目标题&#xff1a; Alpaca-CoT: An Instruction Fine-Tuning Platform with Instruction Data Collect…

Nature立新规:ChatGPT等大模型不可以成为作者

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 内容来自机器之心&#xff08;ID&#xff1a;almosthuman2014&#xff09; 随着研究人员不断涌入先进的 AI 聊天机器人的「新世界」&#xff0c;像《Nature》这样的出版商需要承认它们的合法用途&#xff0c;并…

神奇LLM引擎上线!帮你把GPT-3直接调成ChatGPT

©作者 | 机器之心编辑部 来源 | 机器之心 OpenAI 花几个月完成的事&#xff0c;现在用它直接给你自动化了。 最近一段时间&#xff0c;不论大公司还是开发者都在造大语言模型&#xff08;LLM&#xff09;&#xff0c;但有人认为&#xff0c;大模型应用的速度有点落后。 为…

ChatGPT颠覆的第三个行业-教育领域

引言&#xff1a;随着人工智能技术的飞速发展&#xff0c;越来越多的行业受到了影响。ChatGPT作为一种领先的自然语言处理技术&#xff0c;在内容创作、在线客服等领域取得了显著的成果。如今&#xff0c;它正开始进入另一个领域——教育。本文将探讨ChatGPT如何改变教育行业&a…

代理服务器没有响应解决方案

有时候不知道为什么,电脑无缘无故设置了代理-,导致无法获取网络连接,怎么解决呢? 进入控制面板界面: 如果打钩了,去掉就好了… 为啥会代理,始终是个谜. 应该是在公司的时候是走的固定id端口上网,回到家后要去掉这个.

“代理服务器出现问题,或者地址有误”解决方案

网上查了很多方法&#xff0c;终于解决了&#xff0c;在此分享一下&#xff08;前两个方法为通用方法&#xff0c;都不行的话&#xff0c;可以试试第三种方法&#xff09; 方法一&#xff1a;&#xff08;windows11版&#xff09; 打开设置——网络和Internet——找到代理 进…

代理服务器可能有问题,或地址不正确(已解决)

解决代理服务器可能有问题&#xff0c;或地址不正确 1. 问题描述2. 解决方法 1. 问题描述 如果遇到电脑连上wifi&#xff0c;其他应用可以上网(例如可以登录QQ)&#xff0c;但是浏览器不能浏览网页&#xff0c;出现代理服务器可能有问题&#xff0c;或地址不正确 这个错误&…

影响HTTP代理稳定的因素有哪些?IP为什么会不稳定?

我们在使用HTTP代理的时候&#xff0c;会遇到还存活时间内&#xff0c;就无法使用的时候&#xff0c;或者直接登录不上HTTP代理&#xff0c;导致我们无法很好完成项目&#xff0c;在挑选厂商的时候&#xff0c;也会经常会看到厂商的说自己的HTTP代理稳定&#xff0c;可见HTTP代…

代理服务器可能有问题,或地址不正确的解决方案

可能是设置了代理服务器的原因。 1.先打开代理服务器设置 2.关闭代理服务器。