在ERD中使用历史表有什么好处?

时间:2018-03-01 23:35:12

标签: database database-design erd

我试图在数据库中模拟赛马,并且已经提供了两个备选的ERD。我不是,数据库设计方面的专家,并且希望有人可以为我提供备选方案A与备选方案B的优点/缺点。是否一个人绝对优先于另一个人,或者在某些情况下是优先的(那些情况是什么?在其他情况下B更好。

从我非常缺乏经验的角度来看,似乎更容易查询备选方案B.

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

工业数据库往往有很多历史(记录,审计,跟踪等)表格。通常,这些表格中的表格多于其他任何表格。

真实世界的应用程序往往需要这些信息。通常需要审核(谁做了什么,何时,如何以及为什么等)。通常需要撤消'功能,需要历史数据来解开事物。有时需要分析过去的表现等等。

我注意到商业数据库通常没有删除数据。记录只是改变状态(例如,通过设置历史'标志)。我还注意到商业和工业数据库往往有大量的表格,其中许多不再使用或需要(但没有人有时间清除)。

或许值得一提的是,越早开始收集历史数据,就越需要它。

我认为这就是为什么多TB的磁盘像热饼一样销售的原因。

我建议您在陷入危机之前尽早考虑如何将旧数据存档(或删除)。

另一点需要提及的是,数据保护法可能要求您及时(彻底)删除某些数据。

答案 1 :(得分:2)

辩论者提出了一些你应该考虑的优点。

根据您对我的问题的回复,我建议使用以下结构(您将看到它与“B”非常相似)。我几乎凭空掠过马场和骑师桌的田地 - 如果它们不符合你的需要,显然你会忽略它们并储存你需要的东西。

Horse
    ID    primary key (in each table)
    Name
    Age
    Gender
    etc.

Jockey
    ID
    Name
    Height
    Weight
    etc.

Race
    ID
    Post_Time
    Distance
    etc.

Starter
    ID
    Race_ID    foreign key to Race
    Horse_ID   foreign key to Horse
    Jockey_ID  foreign key to Jockey
    Gate
    Finish_Position
    etc.

通过这种结构,比赛是在特定时间发生的事件,涉及特定的马匹和骑手。这有意义吗?