回答

收藏

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

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

我的朋友正在为不同的独立医疗单位开发一种产品。4 Q3 `. I8 D0 c1 `7 b# h8 O
该数据库存储了不同时间的大量测量,如温度、血压等。/ y! u- |* i3 U) [, p, _, _9 S& P
让我们假设这些都是在表中保持的exams的列temperature,pressure等…(以及id,patient_id和timestamp)。大多数测量结果以浮点数的形式存储,但其他类型(字符串、整数…)0 M3 i( n5 k1 H3 u- ]5 `
虽然许多此类测量都是由其产品处理的,但它们需要允许不同的医疗部门记录和处理其他自定义测量。一个非常漂亮的用户界面允许管理员编辑这些海关字段,指定其名称、类型、可能的值范围等。
0 P5 _: ^3 l1 W5 V. [( c他不确定如何存储这些自定义字段。
) X0 u: y3 L0 R. P他倾向于一个单独的表(custom_exam_data与领域,如exam_id,custom_field_id,float_value,string_value,…)
  P8 g; d2 H, @- u7 o我担心这会使搜索既困难又低效。$ f  ~) u* ?( r: m. b+ t& ~
我倾向于直接修改检查表(同时避免使用某些方案在名称上发生冲突,比如在所有自定义字段下添加下划线或命名它们custom_1,…), e( a. G4 S* \5 E4 t( W
他担心动态修改数据库,每个医疗部门都有不同的结构。' ~) f6 h" k0 H) [6 m
我希望一些有经验的人能在这个问题上有所作为。' l9 v) }6 W2 {8 q0 N+ ~& f8 ?, n
笔记:
$ a* Q2 L$ n+ s& ]- c5 s, @  O他使用的是Ruby on Rails,但我认为这个问题与框架无关,除了他SQL在数据库中寻找解决方案。
- I- d- X0 u6 S: T  s+ G1 p' K由于自定义字段必须用于多个表,我简化了问题,但我相信这并不会真正影响选择的方向。) ?! w7 a% _% i. j2 H7 e
(添加)非常常见的报告模块需要搜索、排序、生成统计信息等。因此,有必要将这些数据存储在适当类型的列中7 M; }; L* F- W+ G) i$ [' g- P
(添加)将过滤标准字段和自定义字段的用户输入。例如,将检查给定范围内的数字(温度不能为-12或 444),等等。因此,转换为适当的SQL类型不是问题。
7 X7 J# \( l6 {
                                                               
- y! g$ e9 s; B- H    解决方案:                                                               
' M0 ], ^) e+ l                                                                多年来,我不得不多次处理这种情况,我同意你最初的想法,即直接修改数据库表并使用动态SQL生成语句。
. N+ Q' k: {% y' P4 n* B首先创建字符串UserAttribute或Key /
2 Z% Y6 D; I7 |- b- g5 |9 P, vValue列听起来很吸引人,但它会导致内部平台效应,最终你必须重新实现外部键、数据类型、约束、事务、验证、排序、分组、计算等。6 ]5 `8 f2 ]0 ^; N  _. ]
al。在您的RDBMS中也可以只使用平面文件而不使用SQL。
3 \& H( ^8 e, }SQL0 N. W2 V* W5 M" P5 }! {- A
Server提供的INFORMATION_SCHEMA操作时可以创建、查询和修改表架构。它有完整的类型检查、约束、事务、计算和所有内置内容,请不要重建。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则