MySQL周内训参照1、ER实体关系图与数据库模型图绘制

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介: MySQL周内训参照1、ER实体关系图与数据库模型图绘制

题目要求详情地址:04-MySQL比赛内容与要求细则

编号 人员 题目 总分数 题干 提交内容 得分标准
1 产品经理 绘制ER图 10 使用工具统一版本viso2013
要求创建的实体有:
1、用户表(user)、用户钱包表(user_wallet)(与user是1对1关系)、用户钱包交易日志表(user_wallet_log)(与user是1对多关系)。
2、商品类别表(product_type)(与product是1对多关系)、商品表(product)。
3、订单表(order)(与product是1对多关系)、订单详情表(order_info)。
4、需要独立完成实体属性的分析、外键关系连接、表之间关联关系说明。
ER图图片 1、共计7个实体,用户系列1分,商品系列1分,订单系列1分(共3分)。
2、保障所有主外键属性基础连接,所有表一条连接3分,2条连接2分,3条连接1分,3条连接以上不得分(共3分)。
3、合理属性添加,每张表需要有必备的3条以上基础属性,合理即可,有任何一个无用或不合理属性扣1分,抠完为止。(共3分)。
4、标明一对一或一对多关系合理即得分,错误1项不得分(1分)。
2 产品经理 数据库模型图 10 使用工具统一版本viso2013
需要根据绘制的ER图来完成数据库模型图,要求有:
1、表的属性与ER图表中显示属性要求一致。
2、表之间连线主外键关系明确。
3、连接线标明一对一,一对多关系。
4、连接线连接合理,且没有堆叠情况。
数据模型图图片 1、共计7个实体的属性与ER图一致,少一个扣1分,多一个扣1分(共3分)。
2、表之间的主外键关有明确的标识,少一处扣1分,多一个扣1分(共3分)。
3、一对一,一对多关系明确,错误一处扣1分(共2分)。
4、连接线连接合理,无堆叠情况(2分)。

ER图是什么?

ER 图即实体-关系图(Entity Relationship Diagram)。

它是用来描述现实世界中实体及其相互关系的一种概念模型工具

在 ER 图中,用【矩形】表示实体,【椭圆】表示实体的属性,【菱形】表示实体之间的关系,并通过连线(直线)来表明它们之间的关联。

ER 图有助于清晰地展现数据库中所涉及的各种对象及其之间的联系,对于数据库设计等具有重要意义,可以帮助设计人员更好地理解业务需求和数据结构,从而更合理地规划数据库的结构和内容。

ER图绘制工具

PowerDesigner:功能强大,支持多种模型的设计。

Visio:微软的绘图工具,广泛应用于各种图表绘制,包括 ER 图。

ERwin:专门用于数据库设计和 ER 图绘制的工具。

MySQL Workbench:针对 MySQL 数据库的工具,也可绘制 ER 图。

DbSchema:不仅能绘制 ER 图,还具有数据库管理等功能。

这里我们采用【Visio】来绘制我们的ER图。

visio2013安装以及安装问题说明-ER图与数据库模型图绘制示例

visio2013安装以及安装问题说明-ER图与数据库模型图绘制示例

Chen's 数据库表示法——ER图绘制使用形状

在设计中可以修改纸张方向和纸张大小。

Crow's Foot数据库表示法——数据库模型图使用形状

这里需要注意外键需要自己添加一下,连线的时候注意美观。

关系表示——显示多重性

这里可以使用文本自己写,也可以在连接线上点击鼠标右键,选择显示多重性来修改。

属性分析

1、用户表(user)、用户钱包表(user_wallet)(与user是1对1关系)、用户钱包交易日志表(user_wallet_log)(与user是1对多关系)。

user:用户表通常包含用户的基本信息,例如用户ID(主键)、用户名、密码(通常加密存储)、邮箱、手机号、创建时间等。


属性设计:

user_id: 用户ID(主键,自增)

username: 用户名(唯一)

password: 密码(加密存储)

email: 邮箱(唯一)

phone: 手机号(唯一)

created_at: 创建时间


user_wallet:用户钱包表与用户表是1对1关系,所以每个用户只有一个钱包。该表通常包含钱包ID(主键)、所属用户ID(外键)、钱包余额等属性。


属性设计:

wallet_id: 钱包ID(主键,自增)

user_id: 所属用户ID(外键,关联user表的user_id)

balance: 钱包余额

created_at: 创建时间


user_wallet_log:用户钱包交易日志表记录钱包的每笔交易,与用户表是1对多关系。该表通常包含日志ID(主键)、所属用户ID(外键)、交易类型(充值、消费等)、交易金额、交易时间等属性。


属性设计:

log_id: 日志ID(主键,自增)

user_id: 所属用户ID(外键,关联user表的user_id)

transaction_type: 交易类型(例如:'充值', '消费'等)

amount: 交易金额(可正可负,表示充值或消费)

transaction_time: 交易时间

2、商品类别表(product_type)(与product是1对多关系)、商品表(product)。

product_type:商品类别表存储商品的分类信息,例如类别ID(主键)、类别名称、父类别ID(如果存在层级关系)、描述等。


属性设计:

type_id: 类别ID(主键,自增)

type_name: 类别名称

description: 类别描述

created_at: 创建时间


product:商品表存储具体的商品信息,包括商品ID(主键)、商品名称、价格、库存、所属类别ID(外键,关联product_type表的type_id)等。


属性设计:

product_id: 商品ID(主键,自增)

product_name: 商品名称

price: 商品价格

stock: 商品库存

type_id: 所属类别ID(外键,关联product_type表的type_id)

created_at: 创建时间

3、订单表(order)(与product是1对多关系)、订单详情表(order_info)。

order:订单表存储订单的基本信息,如订单ID(主键)、用户ID(外键,关联用户表)、订单状态、下单时间、支付状态、支付时间等。


属性设计:

order_id: 订单ID(主键,自增)

user_id: 用户ID(外键,关联用户表)

order_status: 订单状态(例如:待支付、已支付、已发货、已完成等)

order_time: 下单时间

payment_status: 支付状态(例如:未支付、已支付)

payment_time: 支付时间

total_price: 订单总价


order_info:订单详情表存储订单中每个商品的具体信息,如订单详情ID(主键)、订单ID(外键,关联订单表)、商品ID(外键,关联商品表)、购买数量、单价等。


属性设计:

order_info_id: 订单详情ID(主键,自增)

order_id: 订单ID(外键,关联订单表)

product_id: 商品ID(外键,关联商品表)

quantity: 购买数量

unit_price: 单价

ER图与数据库模型图绘制——快PM11点了,我就描述一下不画了。

实体

实体

  1. user
  • user_id (主键)
  • username (唯一)
  • password
  • email (唯一)
  • phone (唯一)
  • created_at
  1. user_wallet
  • wallet_id (主键)
  • user_id (外键,关联user的user_id)
  • balance
  • created_at
  1. user_wallet_log
  • log_id (主键)
  • user_id (外键,关联user的user_id)
  • transaction_type
  • amount
  • transaction_time
  1. product_type
  • type_id (主键)
  • type_name
  • description
  • created_at
  1. product
  • product_id (主键)
  • product_name
  • price
  • stock
  • type_id (外键,关联product_type的type_id)
  • created_at
  1. order
  • order_id (主键)
  • user_id (外键,关联user的user_id)
  • order_status
  • order_time
  • payment_status
  • payment_time
  • total_price
  1. order_info
  • order_info_id (主键)
  • order_id (外键,关联order的order_id)
  • product_id (外键,关联product的product_id)
  • quantity
  • unit_price

关系

  1. user 和 user_wallet 之间是一对一的关系,因为一个用户可以有一个钱包。
  2. user 和 user_wallet_log 之间也是一对多的关系,因为一个用户可以有多个钱包交易日志。
  3. product_type 和自身之间存在一对多的关系,用于表示产品类型的层次结构(例如,一个产品类型可以有子类型)。
  4. product 和 product_type 之间是一对一的关系,因为一个产品只能属于一个产品类型。
  5. user 和 order 之间是一对多的关系,因为一个用户可以有多个订单。
  6. order 和 order_info 之间是一对多的关系,因为一个订单可以包含多个产品(每个产品都有自己的购买数量和单价)。
  7. product 和 order_info 之间也是一对多的关系,因为一个产品可以在多个订单中被购买。

Navicat数据库的ER图

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
122 6
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
22 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
1月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
69 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
76 1
|
17天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
59 2
|
20天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
80 4
|
3天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
26 0
|
25天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?