回答

收藏

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

技术问答 技术问答 108 人阅读 | 0 人回复 | 2023-09-14

我的朋友正在为不同的独立医疗单位开发一种产品。
, E& d* \( P& B3 S- w该数据库存储了不同时间的大量测量,如温度、血压等。
5 q: B" B5 B5 D让我们假设这些都是在表中保持的exams的列temperature,pressure等…(以及id,patient_id和timestamp)。大多数测量结果以浮点数的形式存储,但其他类型(字符串、整数…)5 t0 v3 ?6 k; v
虽然许多此类测量都是由其产品处理的,但它们需要允许不同的医疗部门记录和处理其他自定义测量。一个非常漂亮的用户界面允许管理员编辑这些海关字段,指定其名称、类型、可能的值范围等。6 u# R) Z+ {) N7 g2 s
他不确定如何存储这些自定义字段。) _2 h  w! J* L4 _& ~. h9 B
他倾向于一个单独的表(custom_exam_data与领域,如exam_id,custom_field_id,float_value,string_value,…)
1 J& H7 ?, D0 x, c我担心这会使搜索既困难又低效。9 z$ M" h6 `8 u' g- h
我倾向于直接修改检查表(同时避免使用某些方案在名称上发生冲突,比如在所有自定义字段下添加下划线或命名它们custom_1,…)
! a  r: [+ p6 Z他担心动态修改数据库,每个医疗部门都有不同的结构。" ^8 ~' o1 ^) V, @: T& z
我希望一些有经验的人能在这个问题上有所作为。
# W/ D% A3 }# X* u. [笔记:
# n7 p$ E) L6 F4 u! @他使用的是Ruby on Rails,但我认为这个问题与框架无关,除了他SQL在数据库中寻找解决方案。
9 `! m+ ?" n% t! u+ X' a由于自定义字段必须用于多个表,我简化了问题,但我相信这并不会真正影响选择的方向。- y7 O% [/ X8 p' L1 Z+ V; b& N0 G
(添加)非常常见的报告模块需要搜索、排序、生成统计信息等。因此,有必要将这些数据存储在适当类型的列中
- i( Z4 H! T7 E) J# k(添加)将过滤标准字段和自定义字段的用户输入。例如,将检查给定范围内的数字(温度不能为-12或 444),等等。因此,转换为适当的SQL类型不是问题。
1 E& }8 W" k* |' C
                                                               
& Z3 b$ N) {# O' X0 k& R' O; u" H    解决方案:                                                                1 k0 |. U9 L5 }) Q* l  F, K- E
                                                                多年来,我不得不多次处理这种情况,我同意你最初的想法,即直接修改数据库表并使用动态SQL生成语句。
/ a7 Z2 L2 a6 i) B( X* F首先创建字符串UserAttribute或Key /$ @2 J+ \& z5 W2 W
Value列听起来很吸引人,但它会导致内部平台效应,最终你必须重新实现外部键、数据类型、约束、事务、验证、排序、分组、计算等。
; p# x0 j# x  V5 ^" Bal。在您的RDBMS中也可以只使用平面文件而不使用SQL。! y8 v8 u. w3 g' h+ x9 {" y+ `% s
SQL
, c" H2 Y3 ^2 MServer提供的INFORMATION_SCHEMA操作时可以创建、查询和修改表架构。它有完整的类型检查、约束、事务、计算和所有内置内容,请不要重建。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则