酷米 发表于 2023-9-14 12:28:14

在SQL存储自定义字段的首选方法是什么?

我的朋友正在为不同的独立医疗单位开发一种产品。
该数据库存储了不同时间的大量测量,如温度、血压等。
让我们假设这些都是在表中保持的exams的列temperature,pressure等…(以及id,patient_id和timestamp)。大多数测量结果以浮点数的形式存储,但其他类型(字符串、整数…)
虽然许多此类测量都是由其产品处理的,但它们需要允许不同的医疗部门记录和处理其他自定义测量。一个非常漂亮的用户界面允许管理员编辑这些海关字段,指定其名称、类型、可能的值范围等。
他不确定如何存储这些自定义字段。
他倾向于一个单独的表(custom_exam_data与领域,如exam_id,custom_field_id,float_value,string_value,…)
我担心这会使搜索既困难又低效。
我倾向于直接修改检查表(同时避免使用某些方案在名称上发生冲突,比如在所有自定义字段下添加下划线或命名它们custom_1,…)
他担心动态修改数据库,每个医疗部门都有不同的结构。
我希望一些有经验的人能在这个问题上有所作为。
笔记:
他使用的是Ruby on Rails,但我认为这个问题与框架无关,除了他SQL在数据库中寻找解决方案。
由于自定义字段必须用于多个表,我简化了问题,但我相信这并不会真正影响选择的方向。
(添加)非常常见的报告模块需要搜索、排序、生成统计信息等。因此,有必要将这些数据存储在适当类型的列中
(添加)将过滤标准字段和自定义字段的用户输入。例如,将检查给定范围内的数字(温度不能为-12或 444),等等。因此,转换为适当的SQL类型不是问题。
                                                               
    解决方案:                                                               
                                                                多年来,我不得不多次处理这种情况,我同意你最初的想法,即直接修改数据库表并使用动态SQL生成语句。
首先创建字符串UserAttribute或Key /
Value列听起来很吸引人,但它会导致内部平台效应,最终你必须重新实现外部键、数据类型、约束、事务、验证、排序、分组、计算等。
al。在您的RDBMS中也可以只使用平面文件而不使用SQL。
SQL
Server提供的INFORMATION_SCHEMA操作时可以创建、查询和修改表架构。它有完整的类型检查、约束、事务、计算和所有内置内容,请不要重建。
页: [1]
查看完整版本: 在SQL存储自定义字段的首选方法是什么?