作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在将纸质系统转换为新的门户网站。当公司(医疗机构)招收新患者时,患者当前会填写一张特定的表格。此表格包含 28 个问题,每个问题有多达 20 个不同的是/否选项。
我的问题是,我应该创建一个包含许多列(可能多达 300 列,主要包含 BIT 字段)的表还是应该以某种方式对其进行规范化?
所有字段都与单个实体关联;病人来这里的原因。
根据我的数据库设计经验,包含 100 多列的大表通常不受欢迎,但我想看看社区对这个示例的看法。
最佳答案
当使用许多 bool 值(BIT
)字段时,有时最好使用一个按位求和的INT
字段。这简化了存储和表定义,但使代码更加复杂。假设您有一张患者表和一些具有不同含义的数值:正在服药,对扑热息痛过敏,是否患有糖尿病等。当您插入打勾的字段时,您只需将相应的数值相加即可。执行 select 语句时,您将进行位与比较:TotalValue & Value = Value
。这是一些代码:
CREATE TABLE #Patients(Id INT, PatientName VARCHAR(50), MiscIssues INT)
DECLARE @IsOnMedication TINYINT = 2
DECLARE @IsParacetamolAllergic TINYINT = 4
DECLARE @IsDiabetic TINYINT = 8
INSERT INTO #Patients
VALUES
(1, 'A', @IsDiabetic + @IsOnMedication)
, (2, 'B', @IsDiabetic + @IsOnMedication + @IsParacetamolAllergic)
SELECT * FROM #Patients WHERE MiscIssues & @IsDiabetic = @IsDiabetic
DROP TABLE #Patients
另一种选择是使用自定义字段,但根据我的经验,当您有大量记录时,这种方法表现不佳。
关于sql - 复制长表条目表设计注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11387616/
我是一名优秀的程序员,十分优秀!