数据库:在多次测量中保存`weight`和`height`?

时间:2017-01-02 19:19:42

标签: mysql database database-design relational-database

我有一个应用程序,可以在数据库中保存用户的身高和体重。我的表格如下。

enter image description here

unit_type - 此表的值为heightweight

单位 - 此表格保存unit_type相关测量值的相关patient。例如,patient id 1可能更喜欢 kg 来衡量体重, cm 更适合身高。在这种情况下,units表将包含如下所示的行

idunits - 1
patient_idpatient - 1
unit_type_idunit_type - 1
unit_measurement - kg

idunits - 1
patient_idpatient - 1
unit_type_idunit_type - 2
unit_measurement - cm

我没有将units映射到任何表,而是运行搜索查询以查找用户的首选度量并在其他表中插入数据。

例如,patient表包含patinet s 固定高度和重量,这是一次性输入(一个患者只有一个记录)。因此,如果我在此表中添加一行,它将如下所示

idpatient - 1
height - 230
weight - 70
height_unit - cm
weight_unit - kg

另一个例子,measurement表用于患者的每月heightweight读数。这将包含来自同一患者的多个记录。这将如下所示

idmeasurements - 1
idpatient - 1
weight - 70
weight_measurement - kg

idmeasurements - 2
idpatient - 1
weight - 70
weight_measurement - kg

idmeasurements - 3
idpatient - 1
weight - 72
weight_measurement - kg

到目前为止,这种方法很顺利,但我们正面临挑战。我们被告知,heightweight应同时保存在所有测量中。例如,如果用户将其体重保存在 kg 中,那么它也应保存在 lb 中。如果他将height保存在 cm 中,则应将其保存在英寸中。这是因为现在用户可以将他的heightweight保存在他的首选测量中(例如:kg),将测量值更改为其他可用度量(例如:lb)并保存另一条记录,同时转换所有前者测量值不会失去单一精度。他可以在他想要的任何次数上下这样做,不会改变精度,我们也不需要每次都从代码转换和更新他在DB中的所有值。

我的问题是,我该如何促进这一点?我能想到两种方式的唯一方法。

  1. 为所有相关表格中的每种度量类型创建字段。因此,在patient表格中,将现有列替换为height_cmheight_inchesweight_kgweight_lb。同样适用于measurement表。这可能适用于这种情况,但不确定是否是最佳做法。 Imgine有1000个用于测量体重/身高的测量值(好的,那是纯粹的想象力......)然后是什么?

  2. 为每种测量类型创建新表。例如,我可以创建patient_weightpatient_height表,并从{{1}中删除heightweightheight_unitweight_unit字段} table。

  3. 我的patient表格如下所示

    patient_weight

    因此,我可以根据需要插入任意数量的测量值,将相同的记录转换为任意数量的测量值。示例如下

    idpatient_weight
    idpatient
    weight
    measurement
    

    您的建议和建议是什么?

0 个答案:

没有答案