首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要MySQL约束和派生值通知

问需要MySQL约束和派生值通知
EN

Stack Overflow用户
提问于 2011-03-09 21:13:34
回答 1查看 132关注 0票数 1

我最近开始使用数据库,试图用例子来教自己。

我有下面的问题,我正在试图解决,这使我感到困惑,我希望有人能给我一些启示。

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

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

对于数字1和2,我不知道如何显式地创建这个约束。对于数字3,我不知道如何表示db上的派生值。我用的是MySql

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

诚挚的问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-09 21:36:12

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

2)我是否正确地理解你希望每幅图片最多只允许20票?

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

代码语言:javascript
复制
SELECT COUNT(*) > 20 FROM votes
WHERE picture_id = '123'

对于第二个更简单的问题:

代码语言:javascript
复制
SELECT votes_count > 20 FROM pictures
WHERE id = '123'

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

代码语言:javascript
复制
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

我希望我在那里没有犯过错误。如果你有更详细的问题,请直接问,我会尽力填补这些漏洞;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5252226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档