首页 > 数据库 >4,MySQL数据库的设计

4,MySQL数据库的设计

时间:2024-11-10 12:11:06浏览次数:1  
标签:VARCHAR INT 数据库 用户 外键 user MySQL 设计 id

准备阶段

创建用户

CREATE USER 'luck'@'localhost' IDENTIFIED BY '1111';
GRANT ALL PRIVILEGES ON test_db.* TO 'luck'@'localhost';

root修改普通用户权限

GRANT ALL PRIVILEGES ON . TO 'existinguser'@'%' IDENTIFIED BY 'password';

刷新

FLUSH PRIVILEGES;

删除用户

DROP USER 'Luck'@'localhost';

创建数据库

CREATE DATABASE shop_app
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

设计数据表

  1. 用户表(users)

    • 字段
      • user_id:INT,自增主键,用户唯一标识。
      • username:VARCHAR(50),用户名。
      • password:VARCHAR(255),密码(加密存储)。
      • phone_number:VARCHAR(20),手机号码。
      • wechat_id:VARCHAR(50),微信 ID(可选)。
      • created_at:TIMESTAMP,用户注册时间。
    • 说明:存储用户的基本信息,用于用户注册和登录。
  2. 商品分类表(product_categories)

    • 字段
      • category_id:INT,自增主键,分类唯一标识。
      • category_name:VARCHAR(50),分类名称(如日用品、食品、农资等)。
    • 说明:用于对商品进行分类管理。
  3. 商品表(products)

    • 字段
      • product_id:INT,自增主键,商品唯一标识。
      • category_id:INT,外键关联 product_categories 表的 category_id,商品所属分类。
      • product_name:VARCHAR(100),商品名称。
      • description:TEXT,商品描述。
      • price:DECIMAL(10, 2),商品价格。
      • stock:INT,库存数量。
      • image_path:VARCHAR(255),商品图片路径。
      • created_at:TIMESTAMP,商品创建时间。
    • 说明:存储商品的详细信息。
  4. 购物车表(carts)

    • 字段
      • cart_id:INT,自增主键,购物车记录唯一标识。
      • user_id:INT,外键关联 users 表的 user_id,购物车所属用户。
      • product_id:INT,外键关联 products 表的 product_id,购物车中的商品。
      • quantity:INT,商品数量。
    • 说明:记录用户购物车中的商品信息。
  5. 订单表(orders)

    • 字段
      • order_id:INT,自增主键,订单唯一标识。
      • user_id:INT,外键关联 users 表的 user_id,订单所属用户。
      • total_price:DECIMAL(10, 2),订单总价。
      • payment_method:VARCHAR(50),支付方式。
      • status:VARCHAR(20),订单状态(如已下单、已发货、已送达等)。
      • created_at:TIMESTAMP,订单创建时间。
    • 说明:存储订单的基本信息。
  6. 订单商品表(order_products)

    • 字段
      • order_product_id:INT,自增主键,订单商品记录唯一标识。
      • order_id:INT,外键关联 orders 表的 order_id,所属订单。
      • product_id:INT,外键关联 products 表的 product_id,订单中的商品。
      • quantity:INT,商品数量。
      • price:DECIMAL(10, 2),商品价格(记录下单时的价格)。
    • 说明:记录订单中具体的商品信息。
  7. 农产品表(agricultural_products)

    • 字段
      • product_id:INT,自增主键,农产品唯一标识(可与商品表的 product_id 关联)。
      • product_name:VARCHAR(100),农产品名称。
      • description:TEXT,农产品描述。
      • image_path:VARCHAR(255),农产品图片路径。
      • is_reservable:BOOLEAN,是否可预定。
    • 说明:存储可预定的农产品信息。
  8. 农产品预定表(agricultural_reservations)

    • 字段
      • reservation_id:INT,自增主键,预定记录唯一标识。
      • product_id:INT,外键关联 agricultural_products 表的 product_id,预定的农产品。
      • user_id:INT,外键关联 users 表的 user_id,预定用户。
      • quantity:INT,预定数量。
      • delivery_time:DATETIME,配送时间。
      • status:VARCHAR(20),预定状态(如已预定、生产中、已配送等)。
    • 说明:记录农产品的预定信息。
  9. 配送信息表(delivery_info)

    • 字段
      • delivery_id:INT,自增主键,配送信息唯一标识。
      • user_id:INT,外键关联 users 表的 user_id,配送信息所属用户。
      • address:VARCHAR(255),配送地址。
      • delivery_range:VARCHAR(100),配送范围。
      • delivery_fee:DECIMAL(10, 2),配送费用。
      • delivery_time:DATETIME,选择的配送时间。
    • 说明:存储用户的配送信息。
  10. 棋牌室与台球桌表(recreation_rooms)

  • 字段
    • room_id:INT,自增主键,房间唯一标识。
    • room_type:VARCHAR(50),房间类型(棋牌室或台球桌)。
    • is_available:BOOLEAN,是否可用。
    • price:DECIMAL(10, 2),价格。
  • 说明:存储棋牌室和台球桌的信息。
  1. 预定时间段表(reservation_slots)
  • 字段
    • slot_id:INT,自增主键,时间段唯一标识。
    • room_id:INT,外键关联 recreation_rooms 表的 room_id,所属房间。
    • start_time:DATETIME,开始时间。
    • end_time:DATETIME,结束时间。
  • 说明:存储棋牌室和台球桌的可用时间段。
  1. 房间预定表(room_reservations)
  • 字段
    • reservation_id:INT,自增主键,预定记录唯一标识。
    • user_id:INT,外键关联 users 表的 user_id,预定用户。
    • room_id:INT,外键关联 recreation_rooms 表的 room_id,预定的房间。
    • slot_id:INT,外键关联 reservation_slots 表的 slot_id,预定时间段。
    • payment_status:VARCHAR(20),支付状态(如已支付定金、已支付全款等)。
  • 说明:记录棋牌室和台球桌的预定信息。
  1. 收藏夹表(favorites)
  • 字段
    • favorite_id:INT,自增主键,收藏记录唯一标识。
    • user_id:INT,外键关联 users 表的 user_id,收藏用户。
    • product_id:INT,外键关联 products 表的 product_id,收藏的商品。
  • 说明:存储用户的收藏商品信息。
  1. 优惠券表(coupons)
  • 字段
    • coupon_id:INT,自增主键,优惠券唯一标识。
    • coupon_code:VARCHAR(50),优惠券代码。
    • discount_amount:DECIMAL(10, 2),折扣金额。
    • expiry_date:DATETIME,过期时间。
  • 说明:存储优惠券信息。
  1. 用户优惠券表(user_coupons)
  • 字段
    • user_coupon_id:INT,自增主键,用户优惠券记录唯一标识。
    • user_id:INT,外键关联 users 表的 user_id,拥有优惠券的用户。
    • coupon_id:INT,外键关联 coupons 表的 coupon_id,优惠券。
    • used_status:BOOLEAN,是否已使用。
  • 说明:记录用户拥有的优惠券信息。
  1. 消息通知表(notifications)
  • 字段
    • notification_id:INT,自增主键,通知唯一标识。
    • user_id:INT,外键关联 users 表的 user_id,通知接收用户。
    • message:TEXT,通知内容。
    • notification_type:VARCHAR(50),通知类型(如订单状态通知、促销活动通知等)。
    • is_read:BOOLEAN,是否已读。
  • 说明:存储发送给用户的消息通知。

二、数据表之间的关系

  1. 用户表与其他表的关系

    • 用户表(users)与购物车表(carts):一对多关系,一个用户可以有多个购物车记录。
    • 用户表(users)与订单表(orders):一对多关系,一个用户可以有多个订单。
    • 用户表(users)与农产品预定表(agricultural_reservations):一对多关系,一个用户可以有多个农产品预定记录。
    • 用户表(users)与房间预定表(room_reservations):一对多关系,一个用户可以有多个棋牌室或台球桌预定记录。
    • 用户表(users)与收藏夹表(favorites):一对多关系,一个用户可以有多个收藏商品记录。
    • 用户表(users)与用户优惠券表(user_coupons):一对多关系,一个用户可以有多个优惠券记录。
    • 用户表(users)与消息通知表(notifications):一对多关系,一个用户可以有多个消息通知。
  2. 商品表与其他表的关系

    • 商品表(products)与商品分类表(product_categories):多对一关系,一个商品属于一个分类。
    • 商品表(products)与购物车表(carts):一对多关系,一个商品可以在多个购物车记录中出现。
    • 商品表(products)与订单商品表(order_products):一对多关系,一个商品可以在多个订单中出现。
  3. 农产品表与其他表的关系

    • 农产品表(agricultural_products)与农产品预定表(agricultural_reservations):一对多关系,一个农产品可以有多个预定记录。
  4. 棋牌室与台球桌表与其他表的关系

    • 棋牌室与台球桌表(recreation_rooms)与预定时间段表(reservation_slots):一对多关系,一个房间可以有多个可用时间段。
    • 棋牌室与台球桌表(recreation_rooms)与房间预定表(room_reservations):一对多关系,一个房间可以有多个预定记录。
  5. 优惠券表与其他表的关系

    • 优惠券表(coupons)与用户优惠券表(user_coupons):一对多关系,一个优惠券可以被多个用户拥有。

标签:VARCHAR,INT,数据库,用户,外键,user,MySQL,设计,id
From: https://www.cnblogs.com/Luck16th/p/18537813

相关文章

  • 2024-2025-1 20241316 《计算机基础与程序设计》第七周学习总结
    2024-2025-120241316《计算机基础与程序设计》第七周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第七周作业这个作业的目标<数组与链表基于数组和基于链表实现数据结构无序表与......
  • 程序设计实验3
    实验任务11.共自定义了两个类;使用了标准库的<iostream>,<string>,<vector>类;自定义的<window>和<button>存在组合关系。2.const适用于设定一个不能修改的值,可以使数据更加安全。inline一般用于函数较小且被多次调用。click()不需要加const,因为它模拟了鼠标点击,不需要有固定值;d......
  • 《 C++ 修炼全景指南:十九 》想懂数据库?深入 B 树的世界,揭示高效存储背后的逻辑
    摘要本文深入探讨了B树的原理、操作、性能优化及其实际应用。B树作为一种平衡多路树结构,因其高效的查找、插入和删除操作广泛应用于数据库与文件系统中。文章首先介绍了B树的定义与性质,并详细阐述了节点分裂、合并等核心操作的实现方法。接着,通过分析B树在数据库检......
  • 2024-2025-1 学号20241315《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计)这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07这个作业的目标数组与链表基于数组和基于链表实现数据结构无序表与有序表树图子程序与参数作业正文https://www.c......
  • 学期:2024-2025-1 学号:20241303 《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第七周作业这个作业的目标<写上具体方面>计算机科学概论(第七版)第8章并完成云班课测试,《C语言程序设计》第6章......
  • 2024-2025-1 20241327 《计算机基础与程序设计》第七周学习总结
    作业信息|2024-2025-1-计算机基础与程序设计)||--|-|2024-2025-1计算机基础与程序设计第七周作业)||快速浏览一遍教材计算机科学概论(第七版),课本每章提出至少一个自己不懂的或最想解决的问题并在期末回答这些问题|作业正文|https://www.cnblogs.com/shr060414/p/18440575|教......
  • LVGL UI设计神器助你高效开发嵌入式UI应用——v0.18.0发布(中)
    文章目录前言一、Anyui是什么?二、v0.18.0版本的新功能和修复总结前言随着物联网的到来,凯文・凯利所预言的“屏读”时代也已来临。除了手机、平板电脑这类类似个人电脑的设备之外,越来越多的嵌入式设备也将配备触控显示屏。在资源有限的嵌入式设备上构建一个出色......
  • 基于Java的个人事项计划任务管理系统的设计与实现
    基于Java的个人事项计划任务管理系统的设计与实现计算机毕业设计案例Java毕业设计案例ASP.NET毕业设计案例PHP毕业设计案例微信小程序毕业设计案例基于Java的大学生兼职网基于ASP.NET的酒店管理系统基于PHP的英文购物网微信小程序自习室预约管理系统–2024计算机毕业设计......
  • 2024-2025 20241308 《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 数组与链表基于数组和基于链表实现数据结构无序表与有序表树图子程序与参数作业正文......
  • 2024-2025-1 20241417 《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第七周作业这个作业的目标<数组与链表,基于数组和基于链表实现数据结构,无序表与有序表,树,图,子程序与参数>作业正文https://www.cnblogs.com/lry......