十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇内容主要讲解“数据库设计的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“数据库设计的方法是什么”吧!
站在用户的角度思考问题,与客户深入沟通,找到沈丘网站设计与沈丘网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都做网站、外贸网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册、网络空间、企业邮箱。业务覆盖沈丘地区。
数据库设计
1. 为什么要设计数据库
节省数据的存储空间
保证数据的完整性
方便根据数据库进行系统的开发
2. 根据需求设计数据库
打卡功能
日志表(打卡用户,打卡项目编号,打卡时间) 这个表中的打卡项目这个字段是非必须的,添加这个字段只是为了方便日后的扩展,其他两个字段都是必须的
项目表(项目编号,项目名称,创建时间) 这个表是非必须的,只是为了方便日后的扩展,可加可不加
统计表(项目编号,总打卡数,连续打卡数,打卡用户,打卡时间) 这个表中的字段除了项目编号这个字段不是必须的,其他都是必须要的基本字段,
我这样设计三张表只是为了方便以后的扩展使用,除了项目表,其他两张表都是最基础的必须要的
首先创建一个数据库 clockin CHARACTER SET:指定数据库采用的字符集,utf8不能写成utf-8 COLLATE:指定数据库字符集的排序规则,utf8的默认排序规则为
utf8_general_ci(通过show character set查看) drop database if EXISTS clockin ; create database clockin CHARACTER SET utf8 COLLATE utf8_general_ci;
sql 语句如下
DROP TABLE IF EXISTS `clockin_count`; CREATE TABLE `clockin_count` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pid` int(11) DEFAULT NULL COMMENT '打卡项目', `sum` int(11) DEFAULT NULL COMMENT '打卡总次数', `cloop` int(11) DEFAULT NULL COMMENT '打卡连续次数', `name` varchar(25) COLLATE utf8_bin DEFAULT NULL COMMENT '打卡人', `dtime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; DROP TABLE IF EXISTS `clockin_log`; CREATE TABLE `clockin_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(25) COLLATE utf8_bin DEFAULT NULL COMMENT '打卡人', `pid` int(11) DEFAULT NULL COMMENT '打卡项目', `dtime` datetime DEFAULT NULL COMMENT '打卡时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; DROP TABLE IF EXISTS `clockin_project`; CREATE TABLE `clockin_project` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pid` int(11) NOT NULL, `project` varchar(25) COLLATE utf8_bin NOT NULL, `dtime` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
3. 理解清楚数据表之间的映射关系
clockin_log : 日志表,存储用户的每天打卡日志信息,表的数据更新率比较高,特此提出来,作为单独的表使用
clockin_project:项目表,在什么项目上的打卡,不是非必要的,只是为了方便日后的扩展使用,而添加的
clockin_count:统计表,统计日志表中用户的打卡信息,数据相对比较少,提取出来更加直观,查询数据用的比较频繁
实现思路
首先进行判断项目是否存在,存在才能进行打卡,接着判断今天是否已打卡,如果今天没打卡则插入数据,然后判断昨天是否打卡,
昨天如果打卡了则连续天数,总天数都加一,若昨天没打卡,则连续天数设为一,总天数加一,思维导图如下:
这里主要就是sql语句的编写,我这里主要用到了sql中的 LEFT语法 ,对应了oracle中的substr(),主要是用来判断今天昨天是否打卡
语法: ==LEFT (ARG,LENGTH)== ARG源数据,LENGTH个字符串,ARG可以是CHAR或BINARY STRING
例如:left('12345',2) --> 12
既由 2020-10-10T10:30:51 得到 2020-10-10
主要代码
这里我用到了 MybatisPlus,具体使用可以参照
这里的Result是我定义了一个结果集包含 code —— 状态码,msg —— 返回消息 ,data —— 数据信息
// name 用户名 pid 项目编号 public Result clock(String name,String pid){ // 返回的数据类型 Result
到此,相信大家对“数据库设计的方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!