Database design 这意味着您只希望保留历史信息以用于报告目的。在这种情况下,我建议图表B更清晰,尽管您可能应该标记问题与历史、州与历史之间的一对多关系 关于实用性,如果情况如上,我将把历史插入功能封装到问题的插入/更新触发器中,如果问题表的体积和/或状态改变的数量将是显著的,我会考虑将历史表放入不同的数据库中。这只是简化了以后的数据库管理。通常情况下,我会对触发器保持警惕,因为过度使用会导致难以维护数据库(因为现在还不清楚发生了什么),但这是一个很明显的情况,在这种情况下,触发器非常适合,是使用应用程序逻辑的最佳选择 顺便说一下,你的两个图表都暗示一个问题只能从你的PK中进入每一个状态——你应该考虑如果这是正确的,就像在现实世界中的大多数应用程序一样,错误会发生,状态会被颠倒。在这种情况下,我建议图表B更清晰,尽管您可能应该标记问题与历史、州与历史之间的一对多关系 关于实用性,如果情况如上,我将把历史插入功能封装到问题的插入/更新触发器中,如果问题表的体积和/或状态改变的数量将是显著的,我会考虑将历史表放入不同的数据库中。这只是简化了以后的数据库管理。通常情况下,我会对触发器保持警惕,因为过度使用会导致难以维护数据库(因为现在还不清楚发生了什么),但这是一个很明显的情况,在这种情况下,触发器非常适合,是使用应用程序逻辑的最佳选择 顺便说一下,你的两个图表都暗示一个问题只能从你的PK中进入每一个状态——你应该考虑如果这是正确的,就像在现实世界中的大多数应用程序一样,错误会发生,状态会被颠倒。 < P>你可能想在“时态数据库”的主题上搜索网络。基本上,存储任何变量的变化历史都会引发相同的问题,不管该变量是否捕获了问题状态或人的体重或其他信息

Database design 这意味着您只希望保留历史信息以用于报告目的。在这种情况下,我建议图表B更清晰,尽管您可能应该标记问题与历史、州与历史之间的一对多关系 关于实用性,如果情况如上,我将把历史插入功能封装到问题的插入/更新触发器中,如果问题表的体积和/或状态改变的数量将是显著的,我会考虑将历史表放入不同的数据库中。这只是简化了以后的数据库管理。通常情况下,我会对触发器保持警惕,因为过度使用会导致难以维护数据库(因为现在还不清楚发生了什么),但这是一个很明显的情况,在这种情况下,触发器非常适合,是使用应用程序逻辑的最佳选择 顺便说一下,你的两个图表都暗示一个问题只能从你的PK中进入每一个状态——你应该考虑如果这是正确的,就像在现实世界中的大多数应用程序一样,错误会发生,状态会被颠倒。在这种情况下,我建议图表B更清晰,尽管您可能应该标记问题与历史、州与历史之间的一对多关系 关于实用性,如果情况如上,我将把历史插入功能封装到问题的插入/更新触发器中,如果问题表的体积和/或状态改变的数量将是显著的,我会考虑将历史表放入不同的数据库中。这只是简化了以后的数据库管理。通常情况下,我会对触发器保持警惕,因为过度使用会导致难以维护数据库(因为现在还不清楚发生了什么),但这是一个很明显的情况,在这种情况下,触发器非常适合,是使用应用程序逻辑的最佳选择 顺便说一下,你的两个图表都暗示一个问题只能从你的PK中进入每一个状态——你应该考虑如果这是正确的,就像在现实世界中的大多数应用程序一样,错误会发生,状态会被颠倒。 < P>你可能想在“时态数据库”的主题上搜索网络。基本上,存储任何变量的变化历史都会引发相同的问题,不管该变量是否捕获了问题状态或人的体重或其他信息,database-design,relational,Database Design,Relational,第二,我认为您的问题与数据库设计有关,而与概念数据建模无关。如果我理解你的意思,你是在问哪种桌子设计更好 第三,我更喜欢选项B,但这实际上取决于您将如何处理数据 我之所以询问数据库设计与概念建模,是因为我很久以前就采用了使用“实体和关系”进行与数据分析相关的概念数据建模的做法。在讨论逻辑数据库设计时,我使用术语“表、列和行”。在大型项目中,将分析和设计分开是非常有价值的。而且这并不像听起来那么容易 您确实应该在选项B的图表中的历史表和状态表之间添加一个箭头。按照图表的显示方式,历史表看起来几乎是

第二,我认为您的问题与数据库设计有关,而与概念数据建模无关。如果我理解你的意思,你是在问哪种桌子设计更好

第三,我更喜欢选项B,但这实际上取决于您将如何处理数据

我之所以询问数据库设计与概念建模,是因为我很久以前就采用了使用“实体和关系”进行与数据分析相关的概念数据建模的做法。在讨论逻辑数据库设计时,我使用术语“表、列和行”。在大型项目中,将分析和设计分开是非常有价值的。而且这并不像听起来那么容易


您确实应该在选项B的图表中的历史表和状态表之间添加一个箭头。按照图表的显示方式,历史表看起来几乎是一个不相交的表。在这个简单的例子中,这不是问题,但是如果在扩展到包含几十个表的数据库时保持相同的做法,那么最终会让每个查看图表的人都感到困惑。

您可能想在web上搜索“时态数据库”这一主题。基本上,存储任何变量的变化历史都会引发相同的问题,不管该变量是否捕获了问题状态或人的体重或其他信息

第二,我认为您的问题与数据库设计有关,而与概念数据建模无关。如果我理解你的意思,你是在问哪种桌子设计更好

第三,我更喜欢选项B,但这实际上取决于您将如何处理数据

我之所以询问数据库设计与概念建模,是因为我很久以前就采用了使用“实体和关系”进行与数据分析相关的概念数据建模的做法。在讨论逻辑数据库设计时,我使用术语“表、列和行”。在大型项目中,将分析和设计分开是非常有价值的。而且这并不像听起来那么容易


您确实应该在选项B的图表中的历史表和状态表之间添加一个箭头。按照图表的显示方式,历史表看起来几乎是一个不相交的表。在这个简单的例子中,这不是问题,但是如果你在扩展到包含几十个表的数据库时保持相同的做法,你最终会让每个查看图表的人都感到困惑。

我不理解,像布弗斯一样,在问题表中有一个state\u id字段的意思

在我们自己的应用程序中,我一直在大量使用这种“状态”概念。在大多数复杂情况下,我们必须跟踪完整的状态历史记录,并且在一个对象可以有多个状态的情况下,我们使用以下模型:

对于多个状态的情况,检查end_date值是否为null(另一个想法是在表中有一个布尔字段isActiveState)。不要低估这种“多状态”配置的重要性。例如:

一个问题可以是

  • 关闭并解决

  • 已关闭且未解决
这可能对应于两种不同的状态:

  • “封闭和解决”状态

  • “关闭且未解决”状态