回答

收藏

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

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

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

本版积分规则