2.数据库开发

二.数据库开发

1.开发数据库流程

2.数据库,数据表,数据字段的命名

3.数据库字符集和排序规则设置

4.数据表的引擎选择

5.数据字段的类型选择

6.数据字段约束的选择

7.数据表索引的使用

8.设计表完成本项目需求

9.业务流程关于数据库

二.数据库开发

1.开发数据库流程

①建立数据库

在这里插入图片描述

②建立数据表

加粗样式

③数据库对应的索引

在这里插入图片描述

2.数据库,数据表,数据字段的命名

①数据库的命名

  • 小写字母和下划线组成
  • 说明哪个系统哪个项目在使用

②数据库表的命名

  • 小写字母和下划线组成
  • 哪个系统的哪个功能数据

③数据字段的命名

  • 小写字母和下划线组成
  • 最好带表名前缀

3.数据库字符集和排序规则设置

①字符集

  • UTF8和UTF8MB4都是unicode的实现形式
  • UTF8
  • UTF8MB4(使用,不在乎空间)
    是对utf8的拓展,能够支持更多的字符,比如emoji
    在这里插入图片描述

②数据库排序规则

  • 排序规则是什么?
    即会影响我们的sql语句中涉及比较的查询结果。如order by,where,group by等的查询结果。

  • utf8mb4_unicode_ci
    是基于unicode编码来排序,实现准确排序,不区分大小写。为了实现能够处理特殊编码的字符,实现了比较复杂的算法。
    精确度高,效率较低。

  • utf8mb4_general_ci (使用,效率高准确度够用)
    没有基于unicode编码来排序,在遇到特殊编码字符,可能会遇到不一致的情况。
    准确度够用,效率较高

4.数据表的引擎选择

①InnoDB和MyISM引擎对比

  • 隔离级别
    InnoDB实现四个隔离级别

  • InnoDB实现表级锁+行级锁。MyISM只有表级锁
  • 索引与数据
    InnoDB数据文件本身就是索引文件。MyISM索引文件和数据文件分离。
  • 安全恢复
    InnoDB有安全恢复机制redo log。MyISM没有安全恢复机制。

②理解当下多用InnoDB

  • 要求
    查询速度快,并发要求高,安全要求高。
  • 所以
    InnoDB支持行级锁,支持四种隔离级别能够更好的支持并发。
    InnoDB数据文件本身索引文件,查询速度快。
    InnoDB有安全恢复机制,能够支持安全性要求

5.数据字段的类型选择

① 数值类型

  • 整型
    tinyint 1字节
    int 4字节
    bigint 8字节
  • 浮点型
    float 4字节
    double 8字节
  • 定点型
    decimal

②字符串类型

  • char 定长字符串
  • varchar 变长字符串

③时间类型

  • date yyyy-mm-dd 3个字节
  • timestamp 年月日时分秒格式 4个字节
  • datetime YYYY-MM-DD HH:II:SS 8个字节

④选择数值类型

  • 整数类型
    0,1类型选用tinyint如状态,如逻辑删除。指明长度为1。
    其他统一用bigint(id等)预留数据
  • 金额类型数据
    由于float和double运算时会有进度损失,故选用decimal(字符串类型存储)。decimal默认为(10,0),需要小数指出其精度。

⑤选择字符串类型

  • 对比char和varchar
    如果varchar类型的数据更新后由短变长,页内没有更多空间,则只能分页或拆成片段存储
    在这里插入图片描述
  • 存储长度几乎相等
    使用CHAR定长字符串类型
  • 存储变长字符串
    只能用varchar

⑥选择时间类型

  • timestamp和datetime 具体时间
    不同时区选择timestamp,任何时区都是一个时间选用datetime
  • 更新时间和创建时间
    用timestamp,占用字节少
  • 只需要存储年月日
    用date
  • datetime的优点
    datetime存储的时间范围广
    在这里插入图片描述

6.数据字段约束的选择

①约束类型

  • PRIMARY KEY
    指定该字段可以唯一标识一条数据
  • UNIQUE
    唯一性约束
  • NOT NULL
    非空约束
  • Default Constraint
    默认值约束
  • Auto_Increment
    自增约束
  • Zerofill
    零填充空白约束

②实战使用约束

  • 主键id
    必须为主键,且为自增。
  • not null最好有默认值。

7.数据表索引的使用

  • 主键id为自动创建的索引
  • 频繁为查询条件的字段建立索引
  • 频繁更新的字段不适合建立索引
  • 表记录过少无需创建索引
  • 经常增删改操作的表不需要创建索引

8.设计表完成本项目需求

①user_info(用户基本信息表)

  • 用户注册和登录时用mobile和password
  • 完成业务
    注册登录。
    在这里插入图片描述

②user_accout(用户账户表)

  • 用户注册登录后自动初始化一个账户表
  • 用user_id与user_info关联
  • 完成业务
    余额扣款赠款,冻结金额放款,与唯一user绑定。
    在这里插入图片描述

③trans_flow(交易流水表)

  • 通过user_id与用户关联
  • 完成业务
    获得所有的交易流水。
    在这里插入图片描述

④user_demand_info(用户需求信息表)

  • 通过user_id和用户信息表关联
  • 完成业务
    保存发起的需求请求的数据,管理员审核是否同意。
    在这里插入图片描述

⑤user_solve_info(用户解决需求表)

  • 通过user_id和用户信息表关联
  • 完成业务
    保存发起请求解决需求的数据,管理员审核是否同意。
    在这里插入图片描述

⑥market_info(展示需求表)

  • 通过需求人编号和解决人编号与两个user相关联
  • 完成业务
    展示需求,让解决需求的人来发起解决需求。
    在这里插入图片描述

9.业务流程关于数据库

①用户注册并登录

  • 用户注册
    新增user_info和user_account,保存用户输入的手机号和密码,保存一个用户账户(金额和冻结金额初始为0)
  • 用户登录
    检查手机号和密码是否对应
  • 管理员
    可以列出user_info的列表查看会员

②用户充值提现

  • 充值
    对user_account表进行增加余额
  • 提现
    对user_account表进行减少余额

③用户发起需求

  • 发起需求
    用户填写标价和需求文档后保存入user_demand_info表中,初始化状态为0未提交,提交后状态设置为1待审核
  • 管理员
    在申请中列出所有user_demand_info的基本信息,然后点击通过则将user_demand_info需求状态设置为2审核通过,将用户标出的价格从余额中转到冻结金额,产生一条流水,并且产生标的market_info
  • 标的的产生
    根据user_demand_info的信息对market_info表初始化,标的的状态设为0待解决。

④用户解决需求

  • 用户进入需求中心
    进入标的的详情user_demand_info,单击我要解决,上传解决文档,标的状态改为1正在解决
  • 管理员
    管理员进入标的管理,查看解决文档,通过解决将标的设置为2已解决,然后将对应标的的需求人的需求改为3:已解决,并且展示解决文档。然后将需求用户的冻结金额转到解决用户的余额中。

未更新

未更新

未更新

未更新

未更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值