我有一个应用程序,可以在数据库中保存用户的身高和体重。我的表格如下。
unit_type - 此表的值为height
,weight
单位 - 此表格保存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
表用于患者的每月height
和weight
读数。这将包含来自同一患者的多个记录。这将如下所示
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
到目前为止,这种方法很顺利,但我们正面临挑战。我们被告知,height
和weight
应同时保存在所有测量中。例如,如果用户将其体重保存在 kg 中,那么它也应保存在 lb 中。如果他将height
保存在 cm 中,则应将其保存在英寸中。这是因为现在用户可以将他的height
和weight
保存在他的首选测量中(例如:kg),将测量值更改为其他可用度量(例如:lb)并保存另一条记录,同时转换所有前者测量值不会失去单一精度。他可以在他想要的任何次数上下这样做,不会改变精度,我们也不需要每次都从代码转换和更新他在DB中的所有值。
我的问题是,我该如何促进这一点?我能想到两种方式的唯一方法。
为所有相关表格中的每种度量类型创建字段。因此,在patient
表格中,将现有列替换为height_cm
,height_inches
,weight_kg
,weight_lb
。同样适用于measurement
表。这可能适用于这种情况,但不确定是否是最佳做法。 Imgine有1000个用于测量体重/身高的测量值(好的,那是纯粹的想象力......)然后是什么?
为每种测量类型创建新表。例如,我可以创建patient_weight
和patient_height
表,并从{{1}中删除height
,weight
,height_unit
,weight_unit
字段} table。
我的patient
表格如下所示
patient_weight
因此,我可以根据需要插入任意数量的测量值,将相同的记录转换为任意数量的测量值。示例如下
idpatient_weight
idpatient
weight
measurement
您的建议和建议是什么?