gpt4 book ai didi

需要 MySQL 约束和派生值建议

转载 作者:行者123 更新时间:2023-11-29 07:09:51 25 4
gpt4 key购买 nike

我最近开始玩数据库,试图通过示例自学。

我目前正在尝试解决以下问题,这让我很困惑,我希望有人能阐明一些问题。

数据库有 4 个表。摄影师、图片、比赛和观众。这个概念是摄影师参加比赛。他们为每场比赛拍摄一张照片,观众对其进行评分。比赛的获胜者是获得最高分的人。我有以下限制。

  1. 评分介于 0 - 5 之间
  2. 只有前 20 位观众可以投票
  3. 我不想存储摄影师的总评分,因为我想了解如何计算派生值。

对于数字 1 和 2 - 我不确定如何显式创建此约束。对于数字 3,我不知道如何在数据库上表示派生值。我正在使用 MySql

任何想法,建议将不胜感激!

最好的问候

最佳答案

1] 据我所知,你不能直接在 MySQL 中设置这样的约束。您可以使用允许值为 0-255 的 UNSIGNED TINYINT,但是在将它们插入数据库之前,您必须检查自己的值是否正确

2] 我对您的理解是否正确,您只想允许每张图片最多 20 票?

您要么必须单独存储所有投票(然后检查已经存在的投票数),要么只保存平均票数和票数。无论哪种方式,您都必须自己检查并确定是否允许用户投票。对于第一个选项:

SELECT COUNT(*) > 20 FROM votes
WHERE picture_id = '123'

第二个更简单:

SELECT votes_count > 20 FROM pictures
WHERE id = '123'

3] 如果您对直接存储在图片数据库中的图片投票,只需使用 SUM() 函数即可:

SELECT *, SUM(points) as total_points FROM photographers AS ph
LEFT JOIN pictures AS pic ON pic.photographer_id = ph.id
GROUP BY p.id, competition_id

希望我没有犯错。如果您有更详细的问题,请尽管提问,我会尽力填补漏洞;)

关于需要 MySQL 约束和派生值建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5252226/

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