题目要求详情地址: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点了,我就描述一下不画了。
实体
实体:
- user
- user_id (主键)
- username (唯一)
- password
- email (唯一)
- phone (唯一)
- created_at
- user_wallet
- wallet_id (主键)
- user_id (外键,关联user的user_id)
- balance
- created_at
- user_wallet_log
- log_id (主键)
- user_id (外键,关联user的user_id)
- transaction_type
- amount
- transaction_time
- product_type
- type_id (主键)
- type_name
- description
- created_at
- product
- product_id (主键)
- product_name
- price
- stock
- type_id (外键,关联product_type的type_id)
- created_at
- order
- order_id (主键)
- user_id (外键,关联user的user_id)
- order_status
- order_time
- payment_status
- payment_time
- total_price
- order_info
- order_info_id (主键)
- order_id (外键,关联order的order_id)
- product_id (外键,关联product的product_id)
- quantity
- unit_price
关系
- user 和 user_wallet 之间是一对一的关系,因为一个用户可以有一个钱包。
- user 和 user_wallet_log 之间也是一对多的关系,因为一个用户可以有多个钱包交易日志。
- product_type 和自身之间存在一对多的关系,用于表示产品类型的层次结构(例如,一个产品类型可以有子类型)。
- product 和 product_type 之间是一对一的关系,因为一个产品只能属于一个产品类型。
- user 和 order 之间是一对多的关系,因为一个用户可以有多个订单。
- order 和 order_info 之间是一对多的关系,因为一个订单可以包含多个产品(每个产品都有自己的购买数量和单价)。
- product 和 order_info 之间也是一对多的关系,因为一个产品可以在多个订单中被购买。