数据库——建立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.hqwc.cn/news/312386.html

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

相关文章

Kubernetes集群部署Rook Ceph实现文件存储,对象存储,块存储

Kubernetes集群部署Rook Ceph部署Ceph集群 1. Rook Ceph介绍 Rook Ceph是Rook项目中的一个存储方案,专门针对Ceph存储系统进行了优化和封装。Ceph是一个高度可扩展的分布式存储系统,提供了对象存储、块存储和文件系统的功能,广泛应用于提供…

《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(17)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(16) 1.4 PCI总线的中断机制 PCI总线使用INTA#、INTB#、INTC#和INTD#信号向处理器发出中断请求。这些中断请求信号为低电平有效,并与处理器的中…

2024新年快乐

今天就不讲题解了&#xff0c;2024年&#xff0c;祝所有博客身体健康&#xff0c;粉丝越多&#xff0c;点赞越高&#xff01;&#xff01;&#xff01; #include<bits/stdc.h> using namespace std; int main(){cout<<"新年快乐!!";return 0&#xff1b;…

【第5期】前端Vue使用Proxy+Vuex(store、mutations、actions)跨域调通本地后端接口

本期简介 本期要点 本地开发前后端如何跨域调用全局请求、响应处理拦截器处理封装HTTP请求模块编写API请求映射到后端API数据的状态管理 一、 本地开发前后端如何跨域调用 众所周知&#xff0c;只要前端和后端的域名或端口不一样&#xff0c;就存在跨域访问&#xff0c;例如&…

java进阶(三)

IO与网络编程 3 输入输出流IO3.1 基础定义3.2 IO框架3.3 读取字节输入流-InputStream3.3.1 InputStream.read3.3.2 FileInputStream类说明 3.4读取字符输入流Reader3.4.1 Reader.read3.4.2 FileReader类说明 3.5 字节输出流OutputStream3.5.1 OutputStream.write3.5.2 FileOutp…

Django 学习教程- Django 入门案例

Django学习教程系列 Django学习教程-介绍与安装 前言 本教程是为 Django 5.0 编写的&#xff0c;它支持 Python 3.10 至以上。如果 Django 版本不匹配&#xff0c;可以参考教程 使用右下角的版本切换器来获取你的 Django 版本 &#xff0c;或将 Django 更新到最新版本。如果…

Android Studio如何创建尺寸大小及API通用的模拟器

目录 前言 一、操作步骤 二、总结 三、更多资源 前言 在开发移动应用程序的过程中&#xff0c;使用模拟器进行测试是一种常见和方便的方式。Android Studio是一款功能强大的集成开发环境&#xff0c;它提供了创建和管理模拟器的功能。在本文中&#xff0c;我们将介绍如何创…

CGAL的AABB tree

1、介绍 AABB树组件提供了一种静态数据结构和算法&#xff0c;用于对有限的三维几何对象集进行高效的交集和距离查询。可以查询数据结构中存储的几何对象集&#xff0c;以进行交集检测、交集计算和距离计算。 交集查询可以是任何类型的&#xff0c;只要在traits类中实现了相应的…

cargo(rust包管理) 常见命令、包检索 (windows+linux)

rust环境和开发环境配置&#xff1a;rust开发环境配置 winlinux Cargo是Rust的构建系统和包管理器。 如果你的能力足够强也愿意&#xff0c;可以不用cargo进行rust开发&#xff0c;即从头开始敲代码 一、cargo包相关查询 1.查找包 查找cargo包链接&#xff1a;crates.io …

挥别2023,喜迎2024,我在CSDN赚了15000+F

Hello小伙伴们&#xff0c;大家好&#xff0c;我是 还是大剑师兰特&#xff0c; 今天是2024年的1月1日&#xff0c;首先祝大家元旦快乐&#xff01; 文章目录 不平凡的20232023博客之星&#xff0c;年度第63名6月份城市之星&#xff0c;北京第11名2023年末&#xff0c;互动总成…

Vue2 - Vue.observable 介绍

目录 1&#xff0c;介绍2&#xff0c;使用场景和 Vue 实例的区别 1&#xff0c;介绍 官网参考 可以让一个对象变成响应式数据。在 Vue 内部就是用它来处理传递给 Vue 的 data 对象&#xff0c;或是在单文件组件中 data() 返回的对象。 var vm new Vue({data: {count: 0} })…

缓存和数据库,1+1如何大于2?

一、缓存的本质 缓存&#xff0c;简单说就是为了节约对原始资源重复获取的开销&#xff0c;而将结果数据副本存放起来以供获取的方式。 首先&#xff0c;缓存往往针对的是“资源”。我们前面已经多次提到过&#xff0c;当某一个操作是"幂等"的和“安全"的&#…