数据库——建立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.mzph.cn/news/588229.shtml

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

相关文章

Nx市工业数据洞察:Flask、MySQL、Echarts的可视化之旅

Nx市工业数据洞察:Flask、MySQL、Echarts的可视化之旅 背景数据集来源技术选型功能介绍创新点总结 背景 随着工业化的不断发展,Nx市工业数据的收集和分析变得愈发重要。本博客将介绍如何利用Flask、MySQL和Echarts等技术,从统计局获取的数据…

CentOS 7 lvm 裸盘的扩容和缩容减盘 —— 筑梦之路

背景介绍 之前写过比较多的关于lvm的文章: CentOS 7 lvm 更换坏盘操作步骤小记 —— 筑梦之路_centos更换硬盘操作-CSDN博客 xfs ext4 结合lvm 扩容、缩容 —— 筑梦之路_ext4扩盘-CSDN博客 LVM逻辑卷元数据丢失恢复案例 —— 筑梦之路_pve lvm数据恢复-CSDN博客…

各部门请注意,VELO维乐潮流骑士尼莫出街啦,快来加入吧!

VELO潮流骑士丨车界“小学生”尼莫,下面是来自她的自诉:      大家好!我是尼莫,一枚骑车届的“小学生”,我爱上骑车已经有一年的时间啦!在这一年的时间里,骑车改变了我很多:爱上…

单片机外设矩阵键盘之行列扫描识别原理与示例

单片机外设矩阵键盘之行列扫描识别原理与示例 1.概述 这篇文章介绍单片机通过行列扫描的方式识别矩阵键盘的按键,通过程序执行相应的操作。 2.行列扫描识别原理 2.1.独立按键识别原理 为什么需要矩阵按键 独立按键操作简单,当数量较多时候会占用单片机…

PAT 乙级 1033 旧键盘打字

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其…

机器视觉实战应用:手势、人脸、动作以及手势鼠标构建(一)

CV实战应用手势、人脸、动作以及手势鼠标构建(一)总起 核心思想 手势识别是一种常见的计算机视觉应用,它可以通过摄像头或者预先录制的视频图像来追踪和识别人类手势。手势识别的应用非常广泛,例如在游戏、虚拟现实、人机交互等…

【算法】数论---欧拉函数

什么是欧拉函数? 对于正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目,记作φ(n) φ(1)1 当m,n互质时,φ(mn)φ(m)∗φ(n) 一、求一个正整数的欧拉函数---(先对它分解质因数,然后套公式&#xf…

2024年,程序员有哪些危机,有什么应对方式?

在2024年,程序员可能面临的危机主要包括技术更新迅速、职业竞争激烈、工作与生活平衡困难等方面。 为了应对这些危机,程序员可以采取以下策略: 技术更新迅速:随着技术的不断发展,新的编程语言和工具不断涌现&#xff…

spring核心与思想

spring核心与思想 Spring 是什么?什么是容器?什么是 IoC?传统程序开发传统程序开发的缺陷解决传统开发中的缺陷控制反转式程序开发对⽐总结规律 理解 Spring IoCDI 概念说明 Spring 是什么? Spring 指的是 Spring Framework&…

Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性

目录 1. 背景 2. Windows系统安装canal 3.Mysql准备工作 4. 公共依赖包 5. Redis缓存设计 6. mall-canal-service 1. 背景 canal [kənl] ,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。其诞…

C语言实验5:结构体

目录 一、实验要求 二、实验原理 1. 普通结构体 1.1 显示声明结构体变量 1.2 直接声明结构体变量 ​编辑 1.3 typedef在结构体中的作用 2. 结构体的嵌套 3. 结构体数组 4. 指向结构体的指针 4.1 静态分配 4.2 动态分配 三、实验内容 1. 学生数据库 代码 截图 …

vue 项目 添加 页面上方 NProgress进度条

NProgress官网和Github地址 路由 跳转时 页面上方 和 右上角 会有一个加载进度 安装 使用npm安装 npm install --save nprogress 基本用法 main.js 引入 import NProgress from “nprogress”; import “nprogress/nprogress.css”; 开关和关闭 start()开启NProgress进度条d…

基于Ubuntu环境Git服务器搭建及使用

基于Ubuntu环境Git服务器搭建及使用 Chapter1 搭建本地git服务器及详细操作步骤1.搭建本地git服务器1.1 环境1.2 服务端配置1.3 创建git专属用户1.4 创建git仓库1.5 配置免密登录基础 2.客户端拉取推送代码2.1客户端创建ssh公钥 2.2 免密配置3.仓库使用(拉取及推送代…

【linux】tail的基本使用

在linux可以用find查找一个文件,可以用grep查找符合要求的文件内容,但是有的时候希望查看文件的前几行或者后几行(其实这种场景经常可以遇到,比如接触到日志分析的时候),那就应该使用head和tail这两个工具了…

如何使用ModuleShifting测试Module Stomping和Module Overloading注入技术

关于ModuleShifting ModuleShifting是一款针对Module Stomping和Module Overloading注入技术的安全测试工具,该工具基于Python ctypes实现其功能,因此可以通过Python解释器或Pyramid在内存中完整执行,这样就可以避免使用编译加载器了。 需要…

大语言模型(LLM)训练平台与工具

LLM 是利用深度学习和大数据训练的人工智能系统,专门 设计来理解、生成和回应自然语言。 大模型训练平台和工具提供了强大且灵活的基础设施,使得开发和训练复杂的语言模型变得可行且高效。 平台和工具提供了先进的算法、预训练模型和优化技术&#xff0c…

HarmonyOS 组件通用属性之通用事件 文档参数讲解(点击事件)

我们组件中 会有很多通用的信息和方法 那么 首先 我们看通用事件 通用事件中 最常用的就是我们的点击事件 比如说 我们之前常写的 组件.onClick(()>{//事件逻辑 })但是 我们之前 都没有用它接参数 我们可以这样 Button("跳转").onClick((ewat: ClickEvent)>…

边界判断缺失

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

2023年03月20日_对李开复3月20日线下媒体会的解读

最近这个AI大模型 因为GPT4.0 ChatGPT 文心一言等等这些事情呢 一下子就被推到了风口浪尖 我们也做了来介绍相关的进展 国内呢也不断有一些大佬开始下场 包括王慧文、张朝阳、李彦宏什么的 都开始说自己要搞AI大模型 就在昨天呢 创新工厂的董事长兼CEO李开复 也发朋友…

2024年:三大壁炉趋势

2024年的壁炉趋势是环保的、现代的和100%安全的,作为装饰性壁炉已经比取暖的壁炉更加受欢迎。现今,作为装饰性观赏的壁炉与为了加热取暖而开发的燃木壁炉、燃气壁炉之间存在明显区别。尽管加热取暖的壁炉在农村很有意义,但是装饰性壁炉在城市…