数据库——建立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 Engineering

SET @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 ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_Order_Customer1`
    FOREIGN KEY (`Customer_customerNo`)
    REFERENCES `mydb`.`Customer` (`customerNo`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_Order_Employee1`
    FOREIGN KEY (`Employee_employeeNo`)
    REFERENCES `mydb`.`Employee` (`employeeNo`)
    ON DELETE NO ACTION
    ON 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 ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `orderNo`
    FOREIGN KEY ()
    REFERENCES `mydb`.`Order` ()
    ON DELETE NO ACTION
    ON 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 ACTION
    ON 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 ACTION
    ON 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 ACTION
    ON 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 ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `employeeNo`
    FOREIGN KEY (`Employee_employeeNo`)
    REFERENCES `mydb`.`Employee` (`employeeNo`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `orderNo`
    FOREIGN KEY (`orderNo`)
    REFERENCES `mydb`.`OrderDetail` (`orderNo`)
    ON DELETE NO ACTION
    ON 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;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理

深入浅出图解C#堆与栈 C# HeapingVS Stacking第二节 栈基本工作原理 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理](https://mp.cs…

brew 安装openapi-generator提示@@HOMEBREW_JAVA@@/bin/java: No such file or directory

brew 安装openapi-generator之后,运行openapi-generator命令,提示HOMEBREW_JAVA/bin/java: No such file or directory 经过一番查阅,应该是Java没有配置到环境变量中 查询电脑已经安装的Java版本 /usr/libexec/java_home 编辑.bash_profile…

Linux环境grep搜索方法记录

1 grep grep 命令,用来搜索字符串所在位置,可以具体到不同文件,不同行; 在Linux 下,查看命令释义如下 zhaocubuntu2004:~$ grep --help Usage: grep [OPTION]... PATTERNS [FILE]... Search for PATTERNS in each FI…

大数据 - 大数据入门第一篇 | 关于大数据你了解多少?

🐶1.1 概述 大数据(BigData):指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 大数据主要解决、海量数据的采…

2023-12-21 LeetCode每日一题(美丽塔 II)

2023-12-21每日一题 一、题目编号 2866. 美丽塔 II二、题目链接 点击跳转到题目位置 三、题目描述 给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。 你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。 如果以下条件满足&a…

[JS设计模式]Prototype Pattern

Prototype pattern Prototype pattern可便于同类型的多个对象共享属性。原型(prototype)是JS原生的对象,其他对象可以通过原型链(prototype chain)来访问原型。单独看这句描述可能还是有点儿抽象,下面通过…

过滤器、拦截器、切面

过滤器、拦截器、切面作用范围 原理不同范围不同具体参考[过滤器、拦截器、切面异同](https://juejin.cn/post/7110104873265758222) 执行顺序:过滤器>拦截器>切面 过滤器、拦截器属于请求层面的拦截;切面属于方法层面的拦截 原理不同 过滤器和拦…

Zookeeper-Zookeeper应用场景实战

1. Zookeeper Java客户端实战 ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。 可供选择的Java客户端API有: ZooKeeper官方的Java客户端API。 第三方的Java客户端API,比如Curator。 ZooKeeper官方的客户端API提供了基本的操作…

Select工作原理

I/O多路复用是一种并发处理的机制,允许一个进程通过一种机制监视多个描述符,从而在有多个I/O操作需要处理时选择其中之一进行服务。select 函数是一种常见的实现 I/O 多路复用的系统调用,它允许一个进程同时监视多个文件描述符的可读性、可写…

机器学习:贝叶斯估计在新闻分类任务中的应用

文章摘要 随着互联网的普及和发展,大量的新闻信息涌入我们的生活。然而,这些新闻信息的质量参差不齐,有些甚至包含虚假或误导性的内容。因此,对新闻进行有效的分类和筛选,以便用户能够快速获取真实、有价值的信息&…

全渠道客服系统推荐:选型指南与最佳实践分享

售后服务是影响客户满意度的最直接的因素。有些企业不注重产品的售后服务,不仅是对客户的伤害,更是对企业品牌的损害。所以,做好售后服务对于企业来讲至关重要。 企业谈到做好售后服务,少不了一款好用的客服系统工具。其中&#…

ARM CCA机密计算软件架构之内存加密上下文(MEC)

内存加密上下文(MEC) 内存加密上下文是与内存区域相关联的加密配置,由MMU分配。 MEC是Arm Realm Management Extension(RME)的扩展。RME系统架构要求对Realm、Secure和Root PAS进行加密。用于每个PAS的加密密钥、调整或加密上下文在该PAS内是全局的。例如,对于Realm PA…

ACW741.斐波那契额数列

输入整数 N,求出斐波那契数列中的第 N项是多少。 斐波那契数列的第 0项是 0,第 1项是 1,从第 2 项开始的每一项都等于前两项之和。输入格式 第一行包含整数 T,表示共有T个测试数据。接下来 T行,每行包含一个整数 N。输…

Android长按图标展示快捷方式

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {new Thread(() -> {// 获取ShortcutManager实例ShortcutManager shortcutManager getSystemService(ShortcutManager.class);// 创建要添加的快捷方式ShortcutInfo.Builder shortcutBuilder new ShortcutInfo.Bui…

UGF框架中尝试加载AB资源来运行案例工程失败的解决办法

打开GameFramework场景,在编辑器模式下找到 表示当前资源加载模式是编辑器模式。(个人理解是和正常开发下的资源加载模式无异) CXK补充的内容:需要找到如下图的脚本,把资源加载的模式改为Package模式(单机…

com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The

配置文件示例: # SQL Server 数据源配置 spring.datasource.dynamic.datasource.sqlserver.urljdbc:sqlserver://100.100.0.0\\shili;databaseNamecs; spring.datasource.dynamic.datasource.sqlserver.usernamesa spring.datasource.dynamic.datasource.sqlserver.password sp…

【LearnOpenGL基础入门——5】着色器

目录 一.简介 二.GLSL 三.数据类型 四.输入与输出 五.Uniform 六.更多属性 一.简介 着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立…

python 1200例——【13】计算阶乘

阶乘是一个数学概念,表示为 n!(读作 n 的阶乘),表示从 1 到 n 的所有正整数的乘积。例如,5! = 5 4 3 2 1 = 120。 在 Python 中,我们可以使用多种方法来计算阶乘。以下是其中的一些方法: 方法一:使用循环 这是最基本的方法,我们通过循环从 1 到 n 依次乘起来。…

【Linux】内核编译 镜像制作

文章目录 一、Ubuntu内核编译1.1 为什么自己编译内核1.2 Ubuntu 内核源码下载1.21 内核的作用1.22 Linux内核与ubuntu内核1.23 Ubuntu内核源码获取 1.3 在Windows系统下编译ubuntu内核1.4 在Linux系统下编译ubuntu内核 二、镜像制作 一、Ubuntu内核编译 1.1 为什么自己编译内核…

拓扑排序

目录 拓扑排序 有向图的拓扑排序 拓扑排序 一个有向图,如果图中有入度为 0 的点,就把这个点删掉,同时也删掉这个点所连的边。 一直进行上面出处理,如果所有点都能被删掉,则这个图可以进行拓扑排序。 举例子&#…