首页 > 解决方案 > 将选择字段分隔到单独的表是否对性能很重要?

问题描述

我有患者表它包含吸烟字段它的值将是(吸烟者或非吸烟者或前吸烟者)

我的问题是我应该将值直接保存为患者表中的字符串还是制作另一个吸烟表并在这些表之间建立一对一的关系?

是否会影响查询的性能

标签: laraveldatabase-design

解决方案


当我有这样的三个选项时,我通常使用可为空的位/布尔值。位/布尔列将比字符串列更高效。

因此,在您的情况下,我的表将有一个“吸烟”列,其中 null 表示非吸烟者,0/false 表示前吸烟者,1/true 表示吸烟者。

如果您认为以后可能会添加选项,例如“最近退出”或其他内容,那么可为空的 bool 可能并不理想,因为您必须更改列,然后编写脚本将所有选项转换为适当的字符串。

如果您不想使用可为空的布尔值,那么您需要一个列出每个选项的一对多表:“吸烟者、非吸烟者、前吸烟者”,然后在“吸烟”表中添加一个外键在您的患者表中。这也将提高在列中抛出字符串的性能。


推荐阅读