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

news2024/11/30 8:52:17


【实验内容及要求】

  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;

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

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

相关文章

基于 LightGBM 的系统访问风险识别

基于 LightGBM 的系统访问风险识别 文章目录 基于 LightGBM 的系统访问风险识别一、课题来源二、任务描述三、课题背景四、数据获取分析及说明(1)登录https://www.datafountain.cn并获取相关数据(2)数据集文件说明(3&a…

pycharm python环境安装

目录 1.Python安装 2.PyQt5介绍 3.安装pyuic 4.启动designer.exe 5.pyinstaller(打包发布程序) 6.指定源安装 7.PyQt5-tools安装失败处理 8.控件介绍 9.错误记录 1.NameError: name reload is not defined 10.开发记录 重写报文输出和文件 ​编辑 1.Python安装 点…

linux用户态与内核态通过字符设备交互

linux用户态与内核态通过字符设备交互 简述 Linux设备分为三类,字符设备、块设备、网络接口设备。字符设备只能一个字节一个字节读取,常见外设基本都是字符设备。块设备一般用于存储设备,一块一块的读取。网络设备,Linux将对网络…

Django Cookie和Session使用(十一)

一、Cookie Cookie具体指一小段信息,它是服务器发送出来存储在浏览器上的一组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息。 Cookie的特性 1、服务器让浏览器进行设置的 2、保存在浏览器本地,…

2024的十大技术趋势预测

💡 大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、读书和自媒体。 2024年,科技圈还会有什么样的新鲜新发生?techradar的记者Lance Ulanoff预测了科技圈的2024十大趋势,包括AI、…

flutter学习-day20-使用SafeArea组件处理各机型的安全距离

文章目录 1. 介绍2. 解析3. 示例和效果图4. 特殊情况 1. 介绍 安全区域,指的是移动端设备的可视窗口范围。处于安全区域的内容不受圆角、刘海屏、iPhone 小黑条、状态栏等的影响,也就是说,我们要做好适配,必须保证页面可视、可操…

FA组件详解

1、了解FA核心组件以及功能 (1)TC(Thin Client:瘦终端):就是类似于机顶盒的一个小盒子,里面有CPU、内存、USB、MIC、HDMI等接口,可以理解为小型电脑,但是它里面是没有操作…

硬件安全模块 (HSM)、硬件安全引擎 (HSE) 和安全硬件扩展 (SHE)的区别

术语 硬件安全模块 (HSM) :Hardware Security Modules硬件安全引擎 (HSE) :Hardware Security Engines安全硬件扩展 (SHE) : Secure Hardware Extensions 介绍 在汽车行业中,硬件安全模块 (HSM)、硬件安全引擎 (HSE) 和安全硬件…

【ESP-NOW with ESP32:从多个开发板接收数据(多对一)】

【ESP-NOW with ESP32:从多个开发板接收数据(多对一)】 1. 项目概况2. 先决条件2.1 环境配置2.2 所需零件 3. 获取接收板 MAC 地址4. ESP32 发送码 (ESP-NOW)4.1 代码的工作原理4.2 setup()4.3 …

第6课 用window API捕获麦克风数据并加入队列备用

今天是2024年1月1日,新年的第一缕阳光已经普照大地,祝愿看到这篇文章的所有程序员或程序爱好者都能在新的一年里持之以恒,事业有成。 今天也是我加入CSDN的第4100天,但回过头看一看,这么长的时间也没有在CSDN写下几篇…

Windows 10 安装和开启VNCServer 服务

Windows 10 安装和开启VNCServer 服务 登录云服务器 使用本地RDP登录到配置VNCServer服务的Windows10系统的云服务器。 下载VNC Server安装包 打开官网下载VNCServer安装包 URL:https://www.realvnc.com/en/connect/download/vnc/windows/ 安装VNC Server 双击…

LVGL 在framebuffer设备上的移植

LVGL 在framebuffer设备上的移植 ItemDescDate2023-12-31Authorhongxi.zhuplatformNXP I.MX6ULLLCDSPI TFTLCD NV3030B 文章目录 LVGL 在framebuffer设备上的移植一、LVGL源码获取二、源码修改适配三、编译&运行补充 一、LVGL源码获取 新建lvgl_imx6ull文件夹&#xff0c…

【python_数据分组】

对excel按照标签进行分组,例如按照“开票主体和对方公司”进行分组,并获取对应的明细。 表格如下: def main(excel_data):result {}for d in excel_data:if str(d[0])str(d[1]) in result:result[str(d[0])str(d[1])].append([d[0],d[1],…

MySQL高级SQL语句补充

目录 1.空值(NULL)和 无值( )的区别 2.正则表达式 3.存储过程 存储过程的优点 创建存储过程 调用存储过程 查看存储过程 存储过程的参数 IN 输入参数 OUT 输出参数 INOUT 输入输出参数 删除存储过程 存储过程的控制语…

【2024最新版】neo4j安装配置

neo4j安装 写在最前面下载配置环境(还是不行?)启动neo4jpython中调用 写在最前面 之前我安装过,还写了一篇笔记 结果意外发现没有了,而且和之前安装的步骤不一样了,因此再次记录安装过程 下载 https://ne…

B端产品学习-市场调研与分析

B端产品市场调研与分析 目录: 为什么要做产品调研 B端产品调研对比C端产品调研 B端产品调研要怎么做 为什么要做产品调研 杰克特劳特说过:“成为唯一。如果不能争得第一,那就找到一个能够成为第一的细分,这就是定位的第一法则…

软考网络工程师教程第五版(2018最新版)

软考网络工程师教程第五版(2018最新版) 内容简介 本书是全国计算机技术与软件专业技术资格(水平)考试指定用书。作者在前4版的基础上,根据网络工程师新版大纲的要求,针对考试的重点内容做了较大篇幅的修订,书中主要内容包括数据通信、广域通信网、局域网、城域网、因特网…

K8s实战入门

1.NameSpace Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 默认情况下,kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相…

用LCD显示字符‘A‘

#include<reg51.h> //包含单片机寄存器的头文件 #include<intrins.h> //包含_nop_()函数定义的头文件 sbit RSP2^0; //寄存器选择位&#xff0c;将RS位定义为P2.0引脚 sbit RWP2^1; //读写选择位&#xff0c;将RW位定义为P2.1引脚 sbit EP2^2; //使能…

用LCD循环右移显示“Welcome to China“

#include<reg51.h> //包含单片机寄存器的头文件 #include<intrins.h> //包含_nop_()函数定义的头文件 sbit RSP2^0; //寄存器选择位&#xff0c;将RS位定义为P2.0引脚 sbit RWP2^1; //读写选择位&#xff0c;将RW位定义为P2.1引脚 sbit EP2^2; //使能…