gpt4 book ai didi

mysql - 存储彩票信息的数据库设计

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

我正在设计一个系统,我应该在其中存储不同类型的彩票(结果 + 门票)。目前专注于美国 super 百万博彩和新加坡博彩多多博彩。它们都具有相似的格式。

super 百万:从 1 到 56 的五个不同数字和一个从 1 到 46 的数字。多多:从 1 到 45 的 6 个数字

我需要想出一个优雅的数据库设计来存储用户票和相应的结果。我想到了两种解决方法。

  1. 只需在 6 列中存储 6 个六个数字。或者
  2. 创建另一个表(多对多),其中包含 ball-number 和 ticket_id

我还需要为结果存储球数。

对于 TOTO,如果您的号码匹配 4 个或更多的中奖号码,您就中奖了。对于百万富翁来说,也有类似的过程。

我正在寻找利弊或可能更好的解决方案?我已经做了很多研究和论文工作,但我仍然对采用哪种方法感到困惑。

最佳答案

两个表

tickets
ball_number
ticket_id

player
player_id
ticket_id

// optional
results
ball_number
lottery_id

对于两个表,您可以使用如下查询:

select ticket_id, count(ball_number) hits
from tickets
where ball_number in (wn1, wn2, ...) // wn - winning number
group by ticket_id
having hits = x

当然你可以从彩票结果表中取出中奖号码(或者将它们存储在特殊票号下的balls_table中)。

同时准备统计数据会更容易。与

select count(ticket_id)
from tickets
group by ball_number

您可以很容易地看到哪些号码被选中。

您还可以使用一些字段(例如彩票号码)来缩小查询范围,因为大多数查询只涉及一张彩票。

一张 table

使用一个表,每个数字都有一列可能会使查询变得更加复杂。尤其是,正如我所相信的那样,数字是经过排序的,并且除了一个(或两个)数字之外的所有数字都有奖品。你可能需要将 1, 2, 3, ...2, 3, 4, ... 进行比较,这不像上面的查询那么简单.

一栏

将字符串中的所有条目仅存储在一列中违反了所有规范化实践,迫使您为大多数查询拆分列并取消数据库执行的所有优化。此外,存储数字比存储文本需要更少的磁盘空间。

关于mysql - 存储彩票信息的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16642197/

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