【问题标题】:How to design db tables that store multiple criteria that describe something meaningful?如何设计存储多个描述有意义的标准的数据库表?
【发布时间】:2018-12-26 11:26:09
【问题描述】:

我试图设计表格来存储设置,例如发放奖励。给予的奖励需要根据某些标准进行限制。例如,获得 2 星25 分 的孩子将获得 20 颗糖果,而获得 2 星70 分 奖励 65 颗糖果

这是我能想到的:

  1. 设计一个表格,将所有信息存储在一个表格中,如下表:

  1. 将其设计为分隔表:

  1. 对于第一种方法,根据条件很容易找到我需要的数据,但如果条件太长,列可以接受,系统将难以分离数据。

  2. 对于第二种方法,维护很容易,但如果子表不存在,父表将变得毫无意义。这是因为它们相互依赖。

我想问一下为这种方法设计表格的最佳方法是哪种。它应该易于搜索和维护。有没有更好的方法?

【问题讨论】:

  • 回答你的说法“如果子表不存在,父表将变得毫无意义”,为什么你会在父表中有一行而不在子表中, 除非父级的奖励值为0?如果它确实有一个值,并且子表中没有行,那并不是父表“毫无意义”,而是您的表中缺少数据。因此,您需要确保在填充数据时不会发生这种情况。不过老实说,我认为“父”作为视图会更好,而您只需要“子”表(除非您可以没有子表)。
  • 我确实需要确保孩子必须有一些东西,这样父母就不会白白呆在那里。我也担心如果奖励相同但标准不同怎么办。像我们将拥有 ID 1 和 2 的含义是分发 30 个糖果,但子表不会有相同的标准。通过查看表格本身,它在这一点上根本没有任何意义。那么这种方法好还是不好?

标签: sql-server database-design


【解决方案1】:

如果您不需要单独查看“星”或“点”,那么设计 1 是更好的方法。

如果您确实需要单独查看这些标准,那么设计 2 绝对是更好的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2021-02-08
    • 2020-10-26
    • 2010-09-22
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    相关资源
    最近更新 更多