数据库——建立ER模型及关系模型转换


【实验内容及要求】

  1. 使用画图工具或MySQL Workbench等建模工具设计出相应的ER图,将局部ER图合并为一个整体ER模型,在ER模型中填加多样性约束,建立显示主键的ER模型,标识实体的属性,确认主键、外键。
  2. 将上述ER图转化为关系模式,要求标出每个关系的主码和外码
  3. 依据创建的模型,生成SQL语句,在MySQL里创建数据库和表

【实验平台】

Windows MySQL + MySQL Workbench

MySQL Workbench: MySQL
Workbench是为MySQL设计的ER/数据库建模工具。是著名的数据库设计工具DBDesigner4的继任者。具有设计和创建新的数据库图示,建立数据库文档,以及进行复杂的MySQL
迁移的作用

【实验步骤】

  1. 新建模型
    在这里插入图片描述

  2. 为表添加字段和完整性约束
    在这里插入图片描述

  3. 导出SQL语句
    在这里插入图片描述

  4. 执行SQL语句,产生数据库和表

【实验结果】

  1. ER模型
    在这里插入图片描述
  2. SQL文件
-- MySQL Script generated by MySQL Workbench
-- Mon May 23 15:15:50 2022
-- Model: New Model    Version: 1.0
-- MySQL Workbench Forward EngineeringSET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `mydb` ;-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;-- -----------------------------------------------------
-- Table `mydb`.`Customer`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Customer` ;CREATE TABLE IF NOT EXISTS `mydb`.`Customer` (`customerNo` INT NOT NULL,
`customerName` VARCHAR(45) NULL,`customerStreet` VARCHAR(45) NULL,`customerCity` VARCHAR(45) NULL,`customerState` VARCHAR(45) NULL,`customerZipCode` VARCHAR(45) NULL,`custTelNo` VARCHAR(45) NULL,`custFaxNo` VARCHAR(45) NULL,`DOB` VARCHAR(45) NULL,`maritalStatus` VARCHAR(45) NULL,`creditRating` VARCHAR(45) NULL,PRIMARY KEY (`customerNo`))
ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`Employee`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Employee` ;CREATE TABLE IF NOT EXISTS `mydb`.`Employee` (`employeeNo` INT NOT NULL,`title` VARCHAR(45) NULL,`firstName` VARCHAR(45) NULL,`middleName` VARCHAR(45) NULL,`lastName` VARCHAR(45) NULL,`address` VARCHAR(45) NULL,`workTelExt` VARCHAR(45) NULL,`homeTelNo` VARCHAR(45) NULL,`empEmailAddress` VARCHAR(45) NULL,`socialSecurityNumber` VARCHAR(45) NULL,`DOB` VARCHAR(45) NULL,`position` VARCHAR(45) NULL,`sex` VARCHAR(45) NULL,`salary` VARCHAR(45) NULL,`dateStarted` VARCHAR(45) NULL,PRIMARY KEY (`employeeNo`))
ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`PaymentMethod`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`PaymentMethod` ;CREATE TABLE IF NOT EXISTS `mydb`.`PaymentMethod` (`pMethodNo` INT NOT NULL,`paymentMethod` VARCHAR(45) NULL,PRIMARY KEY (`pMethodNo`))
ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`Order`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Order` ;
CREATE TABLE IF NOT EXISTS `mydb`.`Order` (`orderNo` INT NOT NULL,`orderDate` VARCHAR(45) NULL,`billingStreet` VARCHAR(45) NULL,`billingCity` VARCHAR(45) NULL,`billingState` VARCHAR(45) NULL,`billingZipCode` VARCHAR(45) NULL,`promisedDate` VARCHAR(45) NULL,`status` VARCHAR(45) NULL,`customerNo` VARCHAR(45) NULL,`employeeNo` VARCHAR(45) NULL,`Invoice_InvoiceNo` INT NOT NULL,`Invoice_PaymentMethod_pMethodNo` INT NOT NULL,`Customer_customerNo` INT NOT NULL,`Employee_employeeNo` INT NOT NULL,PRIMARY KEY (`orderNo`, `Invoice_InvoiceNo`, `Invoice_PaymentMethod_pMethodNo`, `Customer_customerNo`),INDEX `fk_Order_Customer1_idx` (`Customer_customerNo` ASC) VISIBLE,INDEX `fk_Order_Employee1_idx` (`Employee_employeeNo` ASC) VISIBLE,CONSTRAINT `fk_Order_Invoice1`FOREIGN KEY ()REFERENCES `mydb`.`Invoice` ()ON DELETE NO ACTIONON UPDATE NO ACTION,CONSTRAINT `fk_Order_Customer1`FOREIGN KEY (`Customer_customerNo`)REFERENCES `mydb`.`Customer` (`customerNo`)ON DELETE NO ACTIONON UPDATE NO ACTION,CONSTRAINT `fk_Order_Employee1`FOREIGN KEY (`Employee_employeeNo`)REFERENCES `mydb`.`Employee` (`employeeNo`)ON DELETE NO ACTIONON UPDATE NO ACTION)
ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`Invoice`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Invoice` ;CREATE TABLE IF NOT EXISTS `mydb`.`Invoice` (`InvoiceNo` INT NOT NULL,`dateRaised` VARCHAR(45) NULL,`datePaid` VARCHAR(45) NULL,`creditCardNo` VARCHAR(45) NULL,`hodlersName` VARCHAR(45) NULL,`expiryDate` VARCHAR(45) NULL,`orderNo` INT NULL,`pMethodNo` VARCHAR(45) NULL,`PaymentMethod_pMethodNo` INT NOT NULL,PRIMARY KEY (`InvoiceNo`, `PaymentMethod_pMethodNo`),INDEX `fk_Invoice_PaymentMethod_idx` (`PaymentMethod_pMethodNo` ASC) VISIBLE,CONSTRAINT `fk_Invoice_PaymentMethod`FOREIGN KEY (`PaymentMethod_pMethodNo`)REFERENCES `mydb`.`PaymentMethod` (`pMethodNo`)ON DELETE NO ACTIONON UPDATE NO ACTION,CONSTRAINT `orderNo`FOREIGN KEY ()REFERENCES `mydb`.`Order` ()ON DELETE NO ACTIONON UPDATE NO ACTION)
ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`Product`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Product` ;CREATE TABLE IF NOT EXISTS `mydb`.`Product` (`productNo` INT NOT NULL,`productName` VARCHAR(45) NULL,`serialNo` VARCHAR(45) NULL,`unitPrice` VARCHAR(45) NULL,`quantityOnHand` VARCHAR(45) NULL,`reorderLevel` VARCHAR(45) NULL,`reorderQuantity` VARCHAR(45) NULL,`reorderLeadTime` VARCHAR(45) NULL,PRIMARY KEY (`productNo`))
ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`OrderDetail`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`OrderDetail` ;CREATE TABLE IF NOT EXISTS `mydb`.`OrderDetail` (`orderNo` INT NOT NULL,`productNo` VARCHAR(45) NULL,`quantityOrdered` VARCHAR(45) NULL,`Product_productNo` INT NOT NULL,`Order_orderNo` INT NOT NULL,`Order_Invoice_InvoiceNo` INT NOT NULL,`Order_Invoice_PaymentMethod_pMethodNo` INT NOT NULL,`Order_Customer_customerNo` INT NOT NULL,PRIMARY KEY (`orderNo`, `Product_productNo`, `Order_orderNo`, `Order_Invoice_InvoiceNo`, `Order_Invoice_PaymentMethod_pMethodNo`, `Order_Customer_customerNo`),INDEX `fk_OrderDetail_Product1_idx` (`Product_productNo` ASC) VISIBLE,INDEX `fk_OrderDetail_Order1_idx` (`Order_orderNo` ASC, `Order_Invoice_InvoiceNo` ASC, `Order_Invoice_PaymentMethod_pMethodNo` ASC, `Order_Customer_customerNo` ASC) VISIBLE,CONSTRAINT `fk_OrderDetail_Product1`FOREIGN KEY (`Product_productNo`)REFERENCES `mydb`.`Product` (`productNo`)ON DELETE NO ACTIONON UPDATE NO ACTION,CONSTRAINT `fk_OrderDetail_Order1`FOREIGN KEY (`Order_orderNo` , `Order_Invoice_InvoiceNo` , `Order_Invoice_PaymentMethod_pMethodNo` , `Order_Customer_customerNo`)REFERENCES `mydb`.`Order` (`orderNo` , `Invoice_InvoiceNo` , `Invoice_PaymentMethod_pMethodNo` , `Customer_customerNo`)ON DELETE NO ACTIONON UPDATE NO ACTION)
ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`ShipmentMethod`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`ShipmentMethod` ;CREATE TABLE IF NOT EXISTS `mydb`.`ShipmentMethod` (`sMethodNo` INT NOT NULL,`shipmentMethod` VARCHAR(45) NULL,PRIMARY KEY (`sMethodNo`))
ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`Shipment`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Shipment` ;CREATE TABLE IF NOT EXISTS `mydb`.`Shipment` (`shipmentNo` INT NOT NULL,`quantity` VARCHAR(45) NULL,`shipmentDate` VARCHAR(45) NULL,`completeStatus` VARCHAR(45) NULL,`orderNo` INT NULL,`productNo` VARCHAR(45) NULL,`employeeNo` INT NULL,`sMethodNo` INT NULL,`OrderDetail_orderNo` INT NOT NULL,`OrderDetail_Product_productNo` INT NOT NULL,`OrderDetail_Order_orderNo` INT NOT NULL,`OrderDetail_Order_Invoice_InvoiceNo` INT NOT NULL,`OrderDetail_Order_Invoice_PaymentMethod_pMethodNo` INT NOT NULL,`OrderDetail_Order_Customer_customerNo` INT NOT NULL,`ShipmentMethod_sMethodNo` INT NOT NULL,`Employee_employeeNo` INT NOT NULL,PRIMARY KEY (`shipmentNo`, `OrderDetail_orderNo`, `OrderDetail_Product_productNo`, `OrderDetail_Order_orderNo`, `OrderDetail_Order_Invoice_InvoiceNo`, `OrderDetail_Order_Invoice_PaymentMethod_pMethodNo`, `OrderDetail_Order_Customer_customerNo`, `ShipmentMethod_sMethodNo`),INDEX `fk_Shipment_OrderDetail1_idx` (`OrderDetail_orderNo` ASC, `OrderDetail_Product_productNo` ASC, `OrderDetail_Order_orderNo` ASC, `OrderDetail_Order_Invoice_InvoiceNo` ASC, `OrderDetail_Order_Invoice_PaymentMethod_pMethodNo` ASC, `OrderDetail_Order_Customer_customerNo` ASC, `orderNo` ASC) VISIBLE,INDEX `fk_Shipment_ShipmentMethod1_idx` (`ShipmentMethod_sMethodNo` ASC, `sMethodNo` ASC, `OrderDetail_orderNo` ASC, `OrderDetail_Product_productNo` ASC, `OrderDetail_Order_orderNo` ASC, `OrderDetail_Order_Invoice_InvoiceNo` ASC, `OrderDetail_Order_Invoice_PaymentMethod_pMethodNo` ASC, `OrderDetail_Order_Customer_customerNo` ASC) VISIBLE,INDEX `fk_Shipment_Employee1_idx` (`Employee_employeeNo` ASC) VISIBLE,INDEX `orderNo_idx` (`orderNo` ASC) VISIBLE,CONSTRAINT `orderNo`FOREIGN KEY (`OrderDetail_orderNo` , `OrderDetail_Product_productNo` , `OrderDetail_Order_orderNo` , `OrderDetail_Order_Invoice_InvoiceNo` , `OrderDetail_Order_Invoice_PaymentMethod_pMethodNo` , `OrderDetail_Order_Customer_customerNo` , `orderNo`)REFERENCES `mydb`.`OrderDetail` (`orderNo` , `orderNo` , `orderNo` , `orderNo` , `orderNo` , `orderNo` , `orderNo`)ON DELETE NO ACTIONON UPDATE NO ACTION,CONSTRAINT `sMethodNo`FOREIGN KEY (`ShipmentMethod_sMethodNo` , `sMethodNo` , `OrderDetail_orderNo` , `OrderDetail_Product_productNo` , `OrderDetail_Order_orderNo` , `OrderDetail_Order_Invoice_InvoiceNo` , `OrderDetail_Order_Invoice_PaymentMethod_pMethodNo` , `OrderDetail_Order_Customer_customerNo`)REFERENCES `mydb`.`ShipmentMethod` (`sMethodNo` , `sMethodNo` , `sMethodNo` , `sMethodNo` , `sMethodNo` , `sMethodNo` , `sMethodNo` , `sMethodNo`)ON DELETE NO ACTIONON UPDATE NO ACTION,CONSTRAINT `employeeNo`FOREIGN KEY (`Employee_employeeNo`)REFERENCES `mydb`.`Employee` (`employeeNo`)ON DELETE NO ACTIONON UPDATE NO ACTION,CONSTRAINT `orderNo`FOREIGN KEY (`orderNo`)REFERENCES `mydb`.`OrderDetail` (`orderNo`)ON DELETE NO ACTIONON UPDATE NO ACTION)
ENGINE = InnoDB;SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

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

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

相关文章

视频监控EasyCVR如何通过设置sei接口,实现在webrtc视频流中添加画框和文字?

安防视频监控系统基于视频综合管理平台EasyCVR视频系统,采用了开放式的网络结构,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,具备权限管…

染色法判定二分图算法总结

知识概览 一个图是二分图当且仅当图中不含奇数环(奇数环是边数为奇数的环)。图中不含奇数环,染色过程中一定没有矛盾。染色法判定二分图算法时间复杂度O(n m)。 例题展示 题目链接 860. 染色法判定二分图 - AcWing题库https://www.acwing.…

传感器基础:传感器使用与编程使用(三)

目录 常用传感器讲解九--雨滴传感器具体讲解电路连接代码实现 常用传感器讲解十--光传感器根据亮度安排灯具体讲解电路连接代码实现 常用传感器讲解七--light cup(KY-008)具体讲解电路连接代码实现 常用传感器讲解十二--倾斜开关传感器(KY-02…

idea利用JRebel插件,无需重启,实现Spring Boot项目热重载,节省开发时间和精力!

插件介绍 官方介绍 翻译过来的意思是: JRebel 是一款提高开发效率的工具,允许开发者立即重新加载代码更改。它跳过了在Java开发中常见的重新构建、重启和重新部署循环。JRebel 能够让开发者在相同的时间内完成更多工作,并且在编码时能够保持…

centos7.9中离线安装nginx开启ssl,arm架构

一、首先需要去国内相关镜像库下载相关依赖rpm: http://mirrors.bfsu.edu.cn/centos-altarch/7.9.2009/os/aarch64/ http://mirror.nju.edu.cn/centos-altarch/7.9.2009/os/aarch64/ http://mirrors.tuna.tsinghua.edu.cn/centos-altarch/7.9.2009/os/aarch64/ htt…

第2课 使用FFmpeg读取rtmp流并用openCV显示视频

本课对应源文件下载链接: https://download.csdn.net/download/XiBuQiuChong/88680079 这节课我们开始利用ffmpeg和opencv来实现一个rtmp播放器。播放器的最基本功能其实就两个:显示画面和播放声音。在实现这两个功能前,我们需要先用ffmpeg连接到rtmp服…

2007~2016 年税调经纬度及其所处的省市区县乡镇数据

之前给大家分享过一份税调企业经纬度及其所处的省市区县数据: 2007~2016 年税调企业地理信息数据(含经纬度及其所处的省市区县):https://rstata.duanshu.com/#/course/76d38022cd004b09b2aa09647936beb0 最近有培训班的小伙伴提出是否能根据税调企业经纬度来判断其所属的乡…

Java:IO流——字节流和字符流

目录 IO流的基本概念 IO流体系结构 FileOutputStream字节输出流 构造方法 成员方法 细节 关流 FileInputStream字节输入流 构造方法及成员方法 read不带参数代码示例 read带参数代码示例​编辑 将字节数组或字符数组转成字符串 FileReader 字符输入流 构造方法和…

计算机速成课Crash Course - 14. 数据结构

今天继续计算机速成课Crash Course的系列讲解。 更多技术文章,公众号 “摸鱼IT” 锁定 -上午11点 - ,感谢大家关注、转发、点赞! 计算机速成课Crash Course - 13. 算法入门 14. 数据结构 上集讲了一些经典算法,比如给数组排序,…

回首2023: 程序员跳出舒适圈

1 前言 今天的冬日暖阳高照,照耀着我穿着羽绒服的身体,让我感到火一般的燥热,仿佛错觉中已经到了阳春三月。刚刚把孩子洗好,我坐在电脑前,准备整理一下思绪,回顾一下2023年的生活和工作。 2 2023 回顾 回…

Java毕业设计—springboot健身房管理系统

一、项目背景介绍: 随着人们生活水平的提高和健康意识的增强,健身行业逐渐兴起并迅速发展。而现代化的健身房管理系统已经成为健身房发展的必备工具之一。传统的健身房管理方式已经无法满足现代化健身房的需求,需要一种更加高效、智能、安全…

CentOS虚拟机硬盘管理

CentOS虚拟机硬盘管理 一、创建虚拟机时分配硬盘 创建虚拟机时,在下图这个页面需要重新选择一下硬盘,可以对硬盘进行配置。 默认自动分区 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e9ce72af3d934e75be95f7f86860e92b.png 选择确认分…

类的加载顺序问题-demo展示

面试的的时候经常会被问到包含静态代码块、实例代码块和构造器等代码结构的加载顺序问题,下面借用一个面试题,回顾一下类的代码加载顺序。 public class AooTest {public static void main(String[] args) {AooTest.f1();}static AooTest test1 new Ao…

免费的云服务器推荐~三丰云

对于许多初创企业和小型公司来说,寻找一个经济实惠且可靠的云服务提供商是至关重要的。在这方面,三丰云以其免费虚拟主机和云服务器吸引了大量用户。 1. 注册与界面 注册三丰云的账户过程简单明了,只需按照步骤填写必要信息即可。其界面设计…

Centos7:Jenkins+gitlab+node项目启动(1)

Centos7:Jenkinsgitlabnode项目启动(1) Centos7:Jenkinsgitlabnode项目启动(1)-CSDN博客 Centos7:Jenkinsgitlabnode项目启动(2) Centos7:Jenkinsgitlabnode项目启动(2)-CSDN博客 Centos7:Jenkinsgitlabnode项目启…

逻辑卷使用和扩容

1.逻辑卷管理LVM ( Logical Volume Manager) 是 Linux 下对硬盘分区的一种管理机制 /boot分区用于存放引导文件,不能基于lvm创建 2.分区缺点: 无法动态扩容 必须使用连续的空间 没有备份 逻辑卷 lvm: 可以动态扩容…

Python高级用法:生成器(generator)

生成器(generator) 生成器是一种返回生成序列的方法,与直接使用列表等方式返回序列的方式不同的是,他的生成可以是无限的。 生成器可以与next搭配使用,可以被看作是一种特殊的迭代器。 yield语句 yield一般与循环相…

单集群400TB,OceanBase稳定支撑快手核心业务场景

一款日均超过千万人访问的短视频 App 快手,面对高并发流量如何及时有效地处理用户请求?通过在后端配置多套 MySQL 集群来支撑高流量访问,以解决大数据量存储和性能问题,这种传统的 MySQL 分库分表方案有何问题?快手对分…

【C++】STL 容器 - set 集合容器 ① ( set 集合容器简介 | set 集合容器操作的时间复杂度 | set 集合容器常用操作 )

文章目录 一、set 集合容器1、set 集合容器简介2、set 集合容器操作的时间复杂度3、set 集合容器常用操作 二、代码示例 - set 集合容器1、代码示例2、执行结果 一、set 集合容器 1、set 集合容器简介 C 语言中的 STL 容器中的 set 容器 , 是 " 集合容器 " , 容器中…

在Go语言中处理HTTP文件上传

大家好,我是你们可爱又迷人的编程小助手,今天要带你们一起探讨在Go语言中如何处理HTTP文件上传,让我们把这场技术之旅变得轻松有趣吧! 首先,想象一下这个场景:你是一个网站的开发者,用户们急切…