【问题标题】:What kind of structure is that?那是什么样的结构?
【发布时间】:2010-07-09 17:05:34
【问题描述】:

在我工作的项目中,我在数据库中看到了这种结构,请问大家,这是什么鬼建模?

TableX
Columns: isMonday, BeginingHourMonday, EndHourMonday, isTuesday, BeginingHourTuesday, EndHourTuesday and so on...

这是no-sql吗?我没有问创作者,因为我很惭愧:$

再见。

【问题讨论】:

  • isMondayisTuesday 表吗?
  • 请详细说明这个结构。涉及哪些表?该表的上下文和目的是什么(例如事务日志、工作时间跟踪、时间段描述)?您问题的答案在很大程度上取决于确切的结构和用途。

标签: sql data-modeling


【解决方案1】:

这是完全去规范化的数据。 no-sql 之类的。我只是想知道为什么不包括月份。它可以增加反规范化因子。

【讨论】:

    【解决方案2】:

    这称为日历表。

    这是处理和解决大量与日期和时间相关的查询的一种非常常见且非常有用的方法。它允许您以有趣和巧妙的方式搜索、排序、分组或以其他方式挖掘数据。

    【讨论】:

      【解决方案3】:

      @Brian Gideon 是对的。 @iamgopal 也是如此。当我说“这取决于被建模和存储在数据库中的数据的性质”时,我也是。

      如果它是每天具有某些属性/属性的日期列表,那么是的,我将其称为非规范化 - 10 次(或更多)中的 9 次可能是这种情况。 (我记得一个有 13 列的数据库,一年中每个月一列,总计一列,在年底用户为下一年添加了 13 列。“数据库先生”,我们称他为。)

      如果这是对一周内工作时间的描述,每次查询数据时,您总是需要一周中每一天的信息,那么该行将表示一个“单元”数据(每一列取决于表的主键等等),将数据拆分成更小的部分会适得其反。

      当然,它也可能是两者的结合——最初将数据归一化为每天一行,然后出于性能原因有意去规范化。 10 次中有 9 次他们确实需要一周的信息,而分析表明,通过将这些数据串联到一行中可以显着提高性能?

      事实上,在没有关于使用和理性的更多信息的情况下,我支持@iamgopal,并支持他。

      【讨论】:

        【解决方案4】:

        看起来像给定一周的时间表结构。
        如果归一化,它可能看起来像

        列:day、startHour、endHour
        当它在 excel 中转换为数据透视表时,您将拥有一种时间表类型的结构,这对于输入屏幕/视图很有用(而不是创建具有规范化结构的视图)。

        【讨论】:

          【解决方案5】:

          看着那张桌子。我认为没有任何好的理由这样做,即使是出于性能原因。

          让我们看看,如果我将 isMonday、isTuesday 等更改为 ID_Day,我仍然可以获得相同的速度和逻辑。如果我将 BeginingHourMonday 更改为 StartHour 并将 EndHourMonday 更改为 EndHour,我仍然会得到相同的效果。

          我仍然有星期几以及开始和结束时间,这就是我从表格结构中得到的基本想法。也许有些东西我没有看到。

          问候

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-07-08
            • 1970-01-01
            • 1970-01-01
            • 2020-04-18
            • 1970-01-01
            • 2010-10-23
            • 2021-08-29
            • 1970-01-01
            相关资源
            最近更新 更多