数据库要怎么设计?(使用MySQL)

问题描述

初学Java,正在用Swing做一个学生考勤系统,目前只完成了简单的增删改,在要做 查 的时候,遇到这样一个问题:怎么从表中查询到总的考勤情况(比如,能查第一周至当前周的总的考勤),又可以查询到任意一周的考勤情况。这样的数据库要如何设计呢? 恳请解答,谢谢了。 问题补充:7454103 写道

解决方案

当然,如果是我的话,数据库可能不是这样设计了我会把 迟到,早退,旷课,病假,事假,公假放在一个字段,可以为整形,这样要知道 1,2,3...表示什么意思,也可以用varchar型,直接放迟到,早退等,再加个字段,用于说明一些情况,CREATE TABLE attendance( id INT AUTO_INCREMENT PRIMARY KEY, 姓名 INT NOT NULL, 考勤类型 VARCHAR(4) NOT NULL, 考勤说明 VARCHAR(50) ,销假情况 VARCHAR(50) NOT NULL logTime dateTime not null;); 某人的总的情况 select * from attendance where 姓名 = 2某人任一周的情况 select * from attendance where 姓名 = 2 and logTime between dt and DateAdd(d,7,dt);如果要查某个在这个时间段内迟到多少次某人任一周的情况 select * from attendance where 姓名 = 2 and logTime between dt and DateAdd(d,7,dt) and 考勤类型='迟到';
解决方案二:
引用迟到,早退,旷课,病假,事假,公假放在一个字段, 可以为整形,这样要知道 1,2,3...表示什么意思这样做是合理的 ! 不过 你那样做也是 可以的!要知道 需求不一定合理! 看情况而定吧! 你熟悉或者喜欢哪种都行!至于你说的那个 统计和 查询一周的 sql 这么写!某人的总的情况 select * from attendance where 姓名 = 2 某人任一周的情况 select * from attendance where 姓名 = 2 and logTime between dt and DateAdd(d,7,dt); 大体就这样了!可能得根据你的数据库 来定是要一些 自带的 函数! 很容易 得出 一周 这种时间范围的! 先 自己试试看吧! 实在不在 我们再帮你写!
解决方案三:
CREATE TABLE attendance( id INT AUTO_INCREMENT PRIMARY KEY, 姓名 INT NOT NULL, 迟到 INT NOT NULL, 早退 INT NOT NULL, 旷课 INT NOT NULL, 病假 INT NOT NULL, 事假 INT NOT NULL, 公假 VARCHAR(2) NOT NULL, 销假情况 VARCHAR(50) NOT NULL logTime dateTime not null;); 某人的总的情况 select * from attendance where 姓名 = 2某人任一周的情况 select * from attendance where 姓名 = 2 and logTime between dt and DateAdd(d,7,dt);
解决方案四:
如果再原来的表中多个 考勤时间 字段 各个考勤字段代表什么意思呢?
解决方案五:
同意楼上的看法,后台数据结构不要设计得太复杂,只要有“考勤时间”字段就可以了;通过统计、分组、日期等函数就可以查询到需要的结果了,如果你觉得麻烦或者效率低,可以写个视图。
解决方案六:
引用怎么从表中查询到总的考勤情况(比如,能查第一周至当前周的总的考勤),又可以查询到任意一周的考勤情况。 个人认为数据库没必要设计的太复杂!如果现在又已设计好的!用酒OK 了! 只需要有个 考勤时间 字段!这些需求 都可以实现的!简单点说就是一个 统计 和按时间段查询问题! sql 基本语法!
解决方案七:
有个考勤详细表 :id name content Monday Tuesday ..... Sunday weekId周记录表weekId weekName weekstartDate weekEndDate(后两者根据需要暂定)这样的话,想获取当前周,要么你知道当前周德weekId,直接级联获取。要么计算当前周在 weekstartDate 和weekEndDate之间,便获取到weekid,然后在获取详细。获取某一周到某一周 ,你只需知道 weekId在 n与m之间的,或者 在n的startDate到m的endDate之间的所有记录。
解决方案八:
怎么从表中查询到总的考勤情况(比如,能查第一周至当前周的总的考勤),又可以查询到任意一周的考勤情况这是在查询条件中来考虑吧比如第一周到当前周的的总的考勤不需要考虑查询条件如果查询任一周,你需要把 createTime或者 logTime between a and ba 或者 b 为任一周的起始日期

时间: 2024-07-31 13:50:46

数据库要怎么设计?(使用MySQL)的相关文章

如何实现高容量大并发数据库服务 | 数据库分布式架构设计

袋鼠学院和优云.阿里云联合举办的沙龙结束之后,总是有小伙伴们来问PPT内容,想要进一步了解Topic内容.(哦,对了对了,竟然还有小伙伴专门冲着袋鼠云去听沙龙,感动cry~~) 千呼万唤,忙成狗的袋鼠小妹终于把沙龙总结整理了出来(⊙o⊙) 本次沙龙的主题是"云时代下的运维管理实践",受邀请的演讲嘉宾,花名宏翊(经常关注袋鼠云的同学,肯定已经对这个名字很熟悉了),是袋鼠云首席数据库架构师,袋鼠学院数据库讲师. 呼应沙龙运维实践的主题,结合自己的专长领域,宏翊主要是从数据库领域来谈云时代下

《深入实践Spring Boot》一第2章 在Spring Boot中使用数据库2.1 使用MySQL

第2章 在Spring Boot中使用数据库 使用数据库是开发基本应用的基础.借助于开发框架,我们已经不用编写原始的访问数据库的代码,也不用调用JDBC(Java Data Base Connectivity)或者连接池等诸如此类的被称作底层的代码,我们将在高级的层次上访问数据库.而Spring Boot更是突破了以前所有开发框架访问数据库的方法,在前所未有的更加高级的层次上访问数据库.因为Spring Boot包含一个功能强大的资源库,为使用Spring Boot的开发者提供了更加简便的接口进

MYSQL数据库自动本地/异地双备份/MYSQL增量备份

构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图 继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构.针对安全性有多种多样的解决方案,其中数据备份是重中之重的首要工作. 电子商务网站更加注重考虑数据安全,数据备份方案,包括本地备份.异地备份架构.其中Linux服务器的备份方案非常多,本文介绍一个大众化适用的解决方案,通过编写Shell脚本来完成自动备份.本架构包括备份网站文件.数据库,自动本地备份并FTP上传备份脚本,完成相应本地备份.异地备份

整合qq登录,数据库应该怎么设计

问题描述 整合qq登录,数据库应该怎么设计 如果整合了qq.新浪微博的第三方账号的登录后 当会员点击qq登录后,那么 会员表原本的username和email字段则为空,那么就会出现问题 因为 UNIQUE KEY username (username), UNIQUE KEY email (email), 这两个字段是UNIQUE KEY,不能为空,那么数据库应该怎么设计呢 解决方案 填入qq账号,密码用个第三方专用密码标志填入 解决方案二: 一般是在用户首次登录你的系统的时候,由系统模拟产生

数据库临时数据设计问题

问题描述 数据库临时数据设计问题 设计表的时候能不能指定某条数据作为临时数据(仅此一条),然后在其他数据新增,更新,删除的时候复制一份给这个临时数据,然后通过查该数据的updateTime来判断表是否发生改变,求大神指点!新人没分.. 解决方案 这个是可以的.因为只有一条数据 你可以用表变量 将这条数据存储在表变量中,同时指定时间戳,然后来进行对比. 解决方案二: 注意要保证事务的原子性,否则并发访问的时候可能出错.另外建议使用触发器来处理表修改后执行的逻辑. 解决方案三: 大dn没人帮忙解答下

[Qt教程] 第22篇 数据库(二)编译MySQL数据库驱动

[Qt教程] 第22篇 数据库(二)编译MySQL数据库驱动 楼主  发表于 2013-5-13 21:28:02 | 查看: 1616| 回复: 12 编译MyQSL数据库驱动 版权声明 该文章原创于作者yafeilinux,转载请注明出处! 导语 在上一节的末尾我们已经看到,现在可用的数据库驱动只有两类3种,那么怎样使用其他的数据库呢?在Qt中,我们需要自己编译其他数据库驱动的源码,然后当做插件来使用.下面就以现在比较流行的MySQL数据库为例,说明一下怎样在QtCreator中编译数据库驱

外键-数据库 表的设计问题。

问题描述 数据库 表的设计问题. 现在有三个表: 1.餐厅(主键:餐厅ID,....) 2.菜单(外键:餐厅ID,菜名,....) 3.菜的评价(外键:餐厅ID,菜名,....) 目标: 1.菜单里, 餐厅ID+菜名的组合是唯一的.(一道菜只在一个店的菜单出现一次) 2.菜的评价里,餐厅ID+菜名的组合不是唯一的.(某餐厅的某道菜能有多个评价) 三个表的设计应该如何才能实现目标呢? 解决方案 大体结构已经成形,其他方面注意一下基本的第三范式即可 解决方案二: 你这不已经设计出来了吗,你这个结构就

mysql-使用gitlab-ce包安装的gitlab怎么把数据库从PostgreSQL换成Mysql

问题描述 使用gitlab-ce包安装的gitlab怎么把数据库从PostgreSQL换成Mysql 手动一个一个安装的话最后安装websever的时候下不到配置文件结果就直接用官方的gitlab-ce包安装的,现在可以用了,但是我想我数据库换成mysql.要怎么操作呢? 解决方案 http://segmentfault.com/a/1190000002722631

php数据库中取值-php+mysql 数据库中取值

问题描述 php+mysql 数据库中取值 php+mysql 数据库中取值 表中字段是int类型,1代表供货商发货,2代表公司配货 .在页面上用一个下拉列表选择发货方式,如何把 供货商发货 公司配货 字样显示在下拉列表中 , 提交表单后可以更改配货方式,,, 后台逻辑该怎么写呢? 解决方案 http://yuncode.net/code/c_5267eac94c46717 解决方案二: http://www.jb51.net/article/60189.htm