gpt4 book ai didi

PHP模型(MySQL)设计问题

转载 作者:行者123 更新时间:2023-11-29 00:58:41 25 4
gpt4 key购买 nike

我正在寻找最有效的解决方案来解决我遇到的问题。我正在为我们的员工设计轮类日历。这是我目前正在使用的表格:

CREATE TABLE IF NOT EXISTS `Shift` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`accountId` smallint(6) unsigned NOT NULL,
`grpId` smallint(6) unsigned NOT NULL,
`locationId` smallint(6) unsigned NOT NULL,
`unitId` smallint(6) unsigned NOT NULL,
`shiftTypeId` smallint(6) unsigned NOT NULL,
`startDate` date NOT NULL,
`endDate` date NOT NULL,
`needFlt` bit(1) NOT NULL DEFAULT b'1',
`needBillet` bit(1) NOT NULL DEFAULT b'1',
`fltArr` varchar(10) NOT NULL,
`fltDep` varchar(10) NOT NULL,
`fltArrMade` bit(1) NOT NULL DEFAULT b'0',
`fltDepMade` bit(1) NOT NULL DEFAULT b'0',
`billetArrMade` bit(1) NOT NULL DEFAULT b'0',
`billetDepMade` bit(1) NOT NULL DEFAULT b'0',
`FacilityId` smallint(6) unsigned NOT NULL,
`FacilityWingId` mediumint(9) unsigned NOT NULL,
`FacilityRoomId` int(11) unsigned NOT NULL,
`comment` varchar(255) NOT NULL,
`creation` datetime NOT NULL,
`lastUpdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`lastUpdateBy` mediumint(9) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

问题来了 - 我希望能够在日历上显示(以不同的颜色)是否收到了某一天的时间表。

我的第一个想法是创建一个单独的表,并按天为每个员工 T/F 列出单独的条目。但是,对于每个员工,整个月从单独查询返回的数据量肯定会很大且效率低下。

第二个想法是以某种方式将信息放入这个带有分隔符的 Shift 表中 - 然后用 PHP 分解它。愚蠢的想法……但我想这就是我来这里的原因。有什么想法吗?

感谢您的帮助!

最佳答案

如前所述,我认为您自己已经意识到,将数据序列化到单个列中或使用某种其他形式的分隔字符串是导致打包和解包计算效率低下以及 future 严重维护麻烦的途径。

Heaps 更好的方法是获得正确的数据结构,即正确规范化的表。毕竟,MySQL 比较擅长处理这种结构。

您无需为每位员工撤回每条线路。如果您将它们拉在一起,您可以按员工和日期“分组”您的结果集,甚至可以通过(比如)拉出小时摘要来使其成为一个潜在有用的结果。零结果或空结果将不显示时间表,总小时数可能在其他方面有帮助。

如果您一次拉出一名员工和一个日期,那么您的应用程序结构可能需要查看,但您可以使用 SQL LIMIT 关键字最多拉出一条记录,然后测试是否有任何返回。

关于PHP模型(MySQL)设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4840127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com