发表于: 2018-03-28 22:36:29
2 591
任务一:
一、根据报名帖整理业务模型
1. 根据报名帖的内容确定需求:报名管理系统,业务包括用户发帖,管理员审核....(暂时先想到这两个显而易见的..)
2. 需要的对象有: 发帖人,审核人,帖子,课程
3. 发帖人属性包括(姓名,QQ号,毕业院校,线上学号);审核人属性(姓名);帖子(入学时间,日报连接,辅导师兄,立愿,获知渠道);课程属性(课程名);
4. 对象关系:这里主要是关联关系,一个发帖人可以发一个帖子,一个帖子对应一个发帖人,发帖人和帖子之间是一对一的关系;一个审核人对应多个帖子,一个帖子对应多个审核人,审核人和帖子之间是一对多的关系;帖子和课程是一对一的关系,发帖人是课程是一对一的关系,发帖人和审核人是一对一的关系。
二、mysql的安装和配置
1. 参考百度,教程很多,不做赘述。
2. 这里采用最简单的方式直接下载msi版本:mysql-installer-community-5.7.20.msi
3. 安装之后配置下Path环境变量即可从控制台直接连接本地mysql服务
三、下载安装第三方数据库管理工具navicat
1. 直接下载网上pj版,过程不表
四、根据对象创建业务表
1. 直接上图
2.这里做的有点粗糙,后续在进行表结构的优化,post表代表发帖业务表,其中有三个外键,外键多的话不利于查询效率,后期打算做冗余处理。
五、使用navicat设计表
1.如步骤四所示,这些表都是在navicat下创建的。
六、插入任一条报名帖数据
1.先插入非外键表,用户表,管理员表,课程表
2.插入post表
七、修改数据记录字段报名宣言
八、将数据表导出sql文件
九、索引
1.给姓名加索引,报名表里并没有姓名字段,而是通过外键管理用户表
2. 用户表有主键id
十、sql语句执行效率
1. 有索引的情况下,插入效率要相对低一下,因为在插入数据之后,还要对索引字段
建立索引。
十一、mysql深入思考
1.为何使Long代替Date类型?
long类型是长整形,传输和存储更方便;long类型方便进行算数加减计算
2.自增ID有什么坏处?什么场景不适用自增id?
在分布式系统中,自增id会出现主键冲突的问题,可以采用UUID
3. 什么是DB的索引,多大的数据量建立索会有性能的差别?
索引就是对某一列或者某几列的值进行建立一种索引,数据结构基本上是树形或者哈希索引,好比是书的目录页码。根据页码可以直接定位到查找的章节。
4.唯一索引和普通索引的区别?
唯一索引的字段不能为null,且对于每一条几率来说是值是唯一的,可以唯一确定一条数据记录;普通索引不具备唯一索引的特点。
5.qq号建立唯一索引,插入数据时需要判断qq是否存在?
既然建立了唯一索引,就是插入的时候会报错,然后回滚事务,如果在业务层代码中进行qq号判断操作,当然是更好的选择。
评论