【问题标题】:Best way to implement a database of lottery numbers?实现彩票号码数据库的最佳方法?
【发布时间】:2014-05-07 14:40:57
【问题描述】:

我正在尝试构建一个涉及我的本地彩票系统的应用程序,并且需要存储号码。每次抽奖都有以下内容:

  • 日期
  • 开奖号码
  • 中奖号码(其中 6 个)
  • 额外中奖号码

我希望能够从这些数字中得出以下信息,例如:

  • 每个数字一般出现的频率
  • 每个号码出现在标准 6 个中奖号码中的频率
  • 每个号码作为附加中奖号码出现的频率
  • 检索数字以及该数字出现的相关日期
  • 当然,只需显示给定日期和/或开奖号码的数字

我的问题是关于中奖号码和附加中奖号码。我可以想到以下几点: - 将 6 个中奖号码存储为列表或类似(DynamoDB),并将附加号码单独存储 - 分别存储每个号码:winning1、winning2 等...additional_number

我愿意接受建议,但还没有固定在使用特定数据库上,希望听到您对此的想法和专业知识。我在想,在一天结束时,我需要额外的表格来分别跟踪每个数字的频率等。

谢谢!

【问题讨论】:

    标签: sql database database-design nosql


    【解决方案1】:

    由于您计划使用不同的查询来查询数据库,因此我建议您使用标准 SQL 数据库,而不是 noSql 方法。如果要存储的数据没有很好地定义,NoSQL 数据库真的会大放异彩。但是,您有一个清晰的数据模式要存储。以下是我的建议:

    table drawing:
    -------------
    id | date | draw_number | lottery_id
    
    table winning_number:
    --------------
    id | number | position | drawing_id
    

    使用该设计,如果在位置字段中将数字作为额外数字绘制,您可以存储信息。如果您知道所有数字的绘制顺序,您也可以将其存储在字段中。

    id 应该是每个表中的主键。 wins_number.drawing_id 是绘图表的外键。

    lottery_id 也意味着作为描述彩票系统参数的表的外键。也许是这样的:

    table lottery
    ---------------
    id | total_numbers | country | whatever
    

    关于频率的查询现在应该很容易了。询问,如果您还有其他问题。

    【讨论】:

    • 谢谢!假设我不知道该位置,那么该字段是否仅用于存储“附加号码”不正确/效率低下?在这种情况下,是否有另一个名为“additional_number”的表包含(id,number,drawing_id)是更好的设计?另外,我认为drawing_id本身就是一个很好的id,你对此有何看法?非常感谢您的帮助,我一直与数据库脱节:(!
    • drawing_id 不能作为winning_number 表的主键,因为一张图纸的所有开奖号码都共享这个id。我认为position 也可用于仅存储有关该数字是否被绘制为附加数字的信息。由于附加数字实际上是一个数字,我建议不要为此使用专门的表格,因为它会使涉及这些数字的查询变得不必要地困难。
    • 好吧,你说得对,我暂时完全忘记了 id 必须是唯一的,哈哈。非常感谢:)!
    猜你喜欢
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 2016-02-04
    • 1970-01-01
    • 2010-10-23
    相关资源
    最近更新 更多