在 ERD 中包含历史表有什么好处?
What are the benefits of having history tables in an ERD?
我试图在数据库中模拟赛马,并收到了两个可供选择的 ERD。我不是,数据库设计专家,希望有人能为我列出备选方案 A 与备选方案 B 的 advantages/disadvantages。这是一个绝对优于另一个的情况,还是在某些情况下更可取(那些情况是什么)在其他情况下 B 更好。
从我经验不足的角度来看,似乎查询备选方案B会更容易。
对比
工业数据库中往往有很多历史记录(日志记录、审计、跟踪等)table。通常,这类 table 比其他任何东西都多。
Real-world 应用程序往往需要此信息。通常需要进行审计(谁做了什么、何时、如何以及为什么等)。通常需要一个 'undo' 函数,它需要历史数据来理清事情。有时需要分析过往业绩等。
我注意到商业数据库经常没有删除数据。记录只是改变状态(例如通过设置 'Historical' 标志)。我还注意到商业和工业数据库往往有大量 table,其中许多不再使用或不再需要(但没有人有时间清除)。
也许值得一提的是,越早开始收集历史数据,当您需要它时,您拥有的就越多。
我想这就是 multi-terabyte 磁盘热销的原因。
我建议您在陷入危机之前尽早考虑如何归档(或删除)旧数据。
另一点要提到的是,数据保护法可能要求您及时(彻底)删除一些数据。
辩论者提出了一些您当然应该考虑的好点。
根据您对我的问题的答复,我建议采用以下结构(您会发现它与 "B" 非常相似)。我几乎是凭空拉出 Horse 和 Jockey 桌子的字段 - 如果它们不符合您的需求,显然您会忽略它们并存储您需要的任何东西。
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.
在这种结构下,比赛是在特定时间发生并涉及特定马匹和骑手的事件。这有意义吗?
我试图在数据库中模拟赛马,并收到了两个可供选择的 ERD。我不是,数据库设计专家,希望有人能为我列出备选方案 A 与备选方案 B 的 advantages/disadvantages。这是一个绝对优于另一个的情况,还是在某些情况下更可取(那些情况是什么)在其他情况下 B 更好。
从我经验不足的角度来看,似乎查询备选方案B会更容易。
对比
工业数据库中往往有很多历史记录(日志记录、审计、跟踪等)table。通常,这类 table 比其他任何东西都多。
Real-world 应用程序往往需要此信息。通常需要进行审计(谁做了什么、何时、如何以及为什么等)。通常需要一个 'undo' 函数,它需要历史数据来理清事情。有时需要分析过往业绩等。
我注意到商业数据库经常没有删除数据。记录只是改变状态(例如通过设置 'Historical' 标志)。我还注意到商业和工业数据库往往有大量 table,其中许多不再使用或不再需要(但没有人有时间清除)。
也许值得一提的是,越早开始收集历史数据,当您需要它时,您拥有的就越多。
我想这就是 multi-terabyte 磁盘热销的原因。
我建议您在陷入危机之前尽早考虑如何归档(或删除)旧数据。
另一点要提到的是,数据保护法可能要求您及时(彻底)删除一些数据。
辩论者提出了一些您当然应该考虑的好点。
根据您对我的问题的答复,我建议采用以下结构(您会发现它与 "B" 非常相似)。我几乎是凭空拉出 Horse 和 Jockey 桌子的字段 - 如果它们不符合您的需求,显然您会忽略它们并存储您需要的任何东西。
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.
在这种结构下,比赛是在特定时间发生并涉及特定马匹和骑手的事件。这有意义吗?