当您有两种类型的记录时,此表的最佳数据库设计是什么

时间:2010-03-07 20:49:06

标签: sql database-design

我正在跟踪练习。我有锻炼

  • ID
  • exercise_id (外键进入练习表)

现在,像体重训练这样的练习会有以下几个方面: 体重,代表(我刚刚举起10次@ 100磅。)

和其他类似的运动会有以下字段:时间,距离(我跑了5英里就需要1小时)

我应该将这些全部存储在同一个表中,只是让一些记录中填写了2个字段,其他字段为空或者应该分解为多个表。

在一天结束时,我想查询一天中的所有练习(包括两种类型的练习),所以我必须在某处“切换”以区分不同类型的练习

针对这种情况的最佳数据库设计是什么

3 个答案:

答案 0 :(得分:3)

在数据库表中建模面向对象的继承有一些不同的模式。最简单的是Single table inheritance,在这种情况下可能会很好用。

实施它主要是根据您自己的建议填写一些字段,其他字段为空白。

答案 1 :(得分:0)

这样做的一种方法是拥有一个带有“type”字段的“exercise”表,该字段命名另一个表格,其中包含特定于练习的详细信息,以及该表中的外键。

答案 2 :(得分:0)

如果您打算只保留2种类型,只需exercise_id, value1, value2, type

你可以在where子句中过滤练习的类型,并在同一个参数中对列名进行别名,这样结果就不会说value1和value2,而是重量和代表或时间和距离