zoukankan      html  css  js  c++  java
  • 数据流动之数据库设计

    简介

      为项目添加数据库。

    创建数据库

    创建一个数据库命名为test,我们将使用test数据库来存储项目中用到的数据。

    项目中有商品,用户两大实体,还有他俩产生的关系订单,总共三部分内容。

    创建商品表和秒杀商品表

    首先,将商品这一实体中包含的信息使用商品表和秒杀商品表两张表来存储。秒杀商品表中记录参与秒杀活动的商品的秒杀相关信息,商品表包含商品的基本信息。

    为什么将两个表分开?分开两个表可能会造成数据冗余,但是将两个表合并会造成单个表数据量过大。如果再有其他的活动会将表的字段变得更大。

    下图为两个表的表结构:

    其中miaosha_goods表中的stock_count表示本次秒杀活动商品可以被秒杀的数量,而goods表中的goods_stock表示商品的库存。

    创建用户表

    用户表:用来记录用户的相关信息。

    id为用户的手机号,nickname为用户名,login_count为记录用户登录次数的字段,salt在做密码MD5加密时使用。

    创建订单表和秒杀订单表

    订单表:记录订单信息,内容不在细说。

    秒杀订单表:秒杀订单表是为了在用户请求秒杀某个商品时判断用户是否秒杀过该商品,通常会将此部分内容缓存到redis中使用。

    order_info表上的外键:两个外键。第一个,goods_id字段依赖于goods表的id字段;第二个,user_id字段依赖于miaosha_user表的id字段。

    order_info表上的索引:goods_id和user_id字段建立索引,经常使用此两个字段进行select操作。

    miaosha_order表上的外键:三个字段都被建立外键。

    miaosha_order表上的索引:在user_id和goods_id字段建立unique key,唯一索引包含了唯一约束的功能,此举为了防止一个用户对同一商品秒杀两次的情况出现。

  • 相关阅读:
    Linux下wget下载软件小技巧以及安装jdk、tomcat与ftp服务器
    C++计算二叉树的节点数和高度
    转:POST 400 Bad Request The request sent by the client was syntactically incorrect
    SSM项目spring配置文件详细步骤(分门别类、灵巧记忆)
    IntelliJ IDEA里找不到javax.servlet的jar包
    51nod 1533 && CF538F
    51nod 1189
    51nod 1225
    51nod 1040
    51nod 1610
  • 原文地址:https://www.cnblogs.com/deijiawoyu/p/12686012.html
Copyright © 2011-2022 走看看