在这种情况下,数据库标准在消除数据冗余方面。首先,在这种情况下,我不确定如何定义数据冗余。它通常定义为出现在多个表中的相同数据。但是,如果不将其显式保存到数据库冗余中,是否可以访问任何数据?请看以下示例:
有一个足球博彩数据库。有2个表:
“betting_tickets”表用于保存整个投注票。 “投注”表用于保存比赛中的每个单独投注,因此该表中的每个单独投注(行)在“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 |
------------------------------
现在让我们说“赌注”表中有超过一百万条记录,“bet_tickets”大约有五分之一。如果我想知道因为只有1次错过的赌注错过了多少投注票,我必须循环超过一百万条记录,计算并检查它们是否只有1个游戏破坏了投注票。即使在C#中也会很慢的东西。但是,如果我要在“betting_tickets”表中列出一个列,其中列出了错过了多少投注或类似的投注,那么这不会大大提高我正在尝试执行的任务的速度吗?
此外,此列是否会被视为多余?即使数据没有出现在多个表中,它仍然是可以访问的数据,而不必占用数据库中自己的列。
如标签中所述,这是SQL Server和C#的情况。