回答

收藏

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

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

我的朋友正在为不同的独立医疗单位开发一种产品。" y5 `' W, X# Q1 O
该数据库存储了不同时间的大量测量,如温度、血压等。) g% ~0 h/ I1 G8 e7 Z
让我们假设这些都是在表中保持的exams的列temperature,pressure等…(以及id,patient_id和timestamp)。大多数测量结果以浮点数的形式存储,但其他类型(字符串、整数…); K  O8 a: \0 U. ?, i9 b4 g
虽然许多此类测量都是由其产品处理的,但它们需要允许不同的医疗部门记录和处理其他自定义测量。一个非常漂亮的用户界面允许管理员编辑这些海关字段,指定其名称、类型、可能的值范围等。; W( ^1 O' \- p9 X+ a, x: E# {
他不确定如何存储这些自定义字段。
& u4 n  d0 K  Q- q他倾向于一个单独的表(custom_exam_data与领域,如exam_id,custom_field_id,float_value,string_value,…), n* z* |* E/ l: l
我担心这会使搜索既困难又低效。5 j/ K$ V9 T# M- _# W
我倾向于直接修改检查表(同时避免使用某些方案在名称上发生冲突,比如在所有自定义字段下添加下划线或命名它们custom_1,…)/ x7 w- n! j$ ~4 z
他担心动态修改数据库,每个医疗部门都有不同的结构。6 Z7 w$ }  h, I( x, u, s, O$ B
我希望一些有经验的人能在这个问题上有所作为。5 s/ P- S; a9 Z, E0 M
笔记:  j. V6 L; e0 |% O7 \4 o
他使用的是Ruby on Rails,但我认为这个问题与框架无关,除了他SQL在数据库中寻找解决方案。0 z$ y* q0 y  Z0 m; O9 V: n
由于自定义字段必须用于多个表,我简化了问题,但我相信这并不会真正影响选择的方向。/ M2 c, X* j; T6 P
(添加)非常常见的报告模块需要搜索、排序、生成统计信息等。因此,有必要将这些数据存储在适当类型的列中
8 r' T9 f6 W1 Q(添加)将过滤标准字段和自定义字段的用户输入。例如,将检查给定范围内的数字(温度不能为-12或 444),等等。因此,转换为适当的SQL类型不是问题。. z% `$ F% L& ~0 S( E$ h1 ], C
                                                                ( G) l/ D; K; ~& o- }" V* T
    解决方案:                                                               
- `, J8 W( [0 z0 X2 e! ^" ?                                                                多年来,我不得不多次处理这种情况,我同意你最初的想法,即直接修改数据库表并使用动态SQL生成语句。
! T5 i) h( Z$ q; D) u0 x4 l, }9 G- k首先创建字符串UserAttribute或Key /& M* d* ^/ \( v( U3 r
Value列听起来很吸引人,但它会导致内部平台效应,最终你必须重新实现外部键、数据类型、约束、事务、验证、排序、分组、计算等。
7 w( z4 @$ Q: {3 P: v8 J% b9 cal。在您的RDBMS中也可以只使用平面文件而不使用SQL。+ q2 ^% A# l3 P: h
SQL% q) |1 s$ j, _. }+ o0 M1 Z
Server提供的INFORMATION_SCHEMA操作时可以创建、查询和修改表架构。它有完整的类型检查、约束、事务、计算和所有内置内容,请不要重建。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则