1

在这种情况下,数据库标准在消除数据冗余方面。首先,我不确定在这种情况下如何定义数据冗余。它通常被定义为出现在多个表中的相同数据。但是,是否不需要显式地将其保存到数据库中就可以访问任何数据?举个例子:

有一个足球投注数据库。有2张桌子:

  • betting_tickets
  • 赌注

“betting_tickets”表用于保存整个投注单。“bets”表用于保存比赛中的每个单独投注,因此该表中的每个单独投注(行)都引用“betting_tickets”表中的特定投注票。以下是“投注”表在缩短版本中的外观:

-----------------------------------------------------------------
| bet_id | ticket_id* |  home_club  |  away_club  | bet_outcome |
-----------------------------------------------------------------
|    1   |      1     |   Chelsea   |   Arsenal   |     Hit     |
-----------------------------------------------------------------
|    2   |      1     |  Tottenham  |    Stoke    |     Hit     |
-----------------------------------------------------------------
|    3   |      2     |    Fulham   |   Everton   |     Miss    |
-----------------------------------------------------------------
|    4   |      2     |  Liverpool  |   West Ham  |     Hit     |
-----------------------------------------------------------------
|    5   |      2     |  Sunderland |  Hull City  |     Hit     |
-----------------------------------------------------------------

以及缩短版的“betting_tickets”表:

------------------------------
| ticket_id | ticket_outcome |
------------------------------
|     1     |      Hit       |
------------------------------
|     2     |      Miss      |
------------------------------

现在让我们说“bets”表中有超过一百万条记录,“betting_tickets”大约是其中的五分之一。如果我想知道有多少投注票因为只有 1 次未投注而被错过,我必须遍历超过 100 万条记录,计算并检查它们是否是只有 1 场游戏破坏了投注票的记录。即使在 C# 中也会很慢。但是,如果我要在“betting_tickets”表中创建一个列来说明错过了多少赌注或类似的东西,这不会极大地提高我正在尝试执行的任务的速度吗?

另外,这个专栏会被认为是多余的吗?即使数据没有出现在多个表中,它仍然是可以访问的数据,而不必占用数据库中自己的列。

如标签中所述,这是 SQL Server 和 C# 的情况。

4

0 回答 0