我试图在数据库中模拟赛马,并且已经提供了两个备选的ERD。我不是,数据库设计方面的专家,并且希望有人可以为我提供备选方案A与备选方案B的优点/缺点。是否一个人绝对优先于另一个人,或者在某些情况下是优先的(那些情况是什么?在其他情况下B更好。
从我非常缺乏经验的角度来看,似乎更容易查询备选方案B.
答案 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.
通过这种结构,比赛是在特定时间发生的事件,涉及特定的马匹和骑手。这有意义吗?