gpt4 book ai didi

mysql - 旋转轮系统的数据库模型

转载 作者:行者123 更新时间:2023-11-29 08:34:18 24 4
gpt4 key购买 nike

努力解决如何为我正在组装的相当简单的应用程序正确建模数据库。应用程序只是一个简单的东西,我用它来学习一些框架。每周办公室里都要有人轮流送啤酒。这是轮流完成的,我们按照特定的顺序轮流进行。有时有人不在,他们会跳过轮到他们,但必须在下周(或者实际上是他们可以的第一周)轮到。显然,我们也有员工来和员工离开,因此需要考虑到这一点。最初,我根据饮酒者和回合进行了建模。每次有人购买一轮,他们就会进入轮次表,谁是轮数最少的第一名,谁就是下一个。这种方法非常有效,直到有人新加入,因为无需插入虚拟数据来覆盖所有“丢失”的回合,每次都会轮到他们,直到他们 catch 其他人完成的回合数。

这是我目前拥有的:

CREATE TABLE `rounds` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`drinker_id` int(11) NOT NULL,
`description` text COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
)

CREATE TABLE `drinkers` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
)

我有什么想法可以重新建模,以允许人们来来去去,以及人们跳过他们的轮次吗?

谢谢。

最佳答案

你只需要一张表,例如

CREATE TABLE `drinkers` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`is_available` TINYINT(1) NOT NULL DEFAULT 0,
`last_buy` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
INDEX(`last_buy`)
)

这样你就可以找到需要购买饮料的人

SELECT * FROM drinkers
WHERE is_available
ORDER BY last_buy ASC
LIMIT 1

关于mysql - 旋转轮系统的数据库模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15618996/

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