将医疗数据表转换为 MySQL 数据库设计
Converting medical datasheet into MySQL database design
我正在尝试开发一个医学症状检查器应用程序,因此我需要将包含超过 190k 条记录的 excel 数据表转换为 MySQL 数据库。我之前已经问过并阅读了多个相关问题,但我仍然觉得创建 efficient/proper 数据库设计很困难。
请查看应用程序的设计(第 1 张图片)以了解该应用程序的工作原理。
用户检查症状应遵循的步骤
- 用户选择性别、年龄和身体部位
- 应用程序显示所选身体部位的所有(common/less 常见)症状
- 用户选择症状
- Apps 询问是否有更多适用的症状(仅当症状在数据库中有其他症状时)。用户最多可以勾选 2 个附加症状。
- 应用程序显示所有(common/less 常见)所选症状和其他症状的疾病。疾病的顺序(权重)取决于所选的年龄、性别、身体部位、主要症状和所选的附加症状。
- 用户选择疾病
- 应用程序显示疾病信息
属性:
age
、gender
、bodypart
、symptom
、disease
age
:应用程序使用id查询数据库; 0-5为1,6-17为2,18-59为3,60+为4
gender
:应用程序使用id查询数据库;男为1,女为0
bodypart
:应用程序使用id查询数据库; 'Head front' 是 1,'Neck front' 是 2 等等...
symptom
: 姓名,关键。创建 critical 是为了告诉用户 he/she 需要立即联系他们的医生。
disease
:名称、关键、描述、测试和治疗。创建 critical 是为了告诉用户he/she 需要立即联系他们的医生
我已经有一个数据库,其中包含所有数据和 input/output 的可能组合。不幸的是,它并非设计用于应用程序(第二张图片)。
正如您在第二张图片中看到的,疾病的顺序(疾病权重)取决于所选的年龄、性别、身体部位、症状和所选的附加症状(适用的附加症状)。每个症状可能有最多 2 个额外的症状。用户可以检查 0、1 或 2 个附加症状,并且对于这些选项中的每一个,疾病的顺序将不同。
每种症状要么常见 (1),要么不太常见 (0)。这取决于用户输入(年龄、性别、身体部位)。
每种疾病权重<=5即为常见病。权重 > 5 的疾病被认为是不太常见的疾病。当然,这也取决于用户输入(年龄、性别、身体部位、症状、其他症状)。我已经尝试了很多东西,但我仍然不知道如何以正确的方式设计此功能。
谁能帮我设计一个合适的数据库?
更新 1
基本上我们在设计数据库时需要记住3个查询
- 获取属于所选年龄组合的所有症状(symptom.id、symptom.name、symptom.critical、症状群(common/less常见),性别 = $性别 AND 身体部位 = $bp
- 获取所选症状的所有附加症状(symtpom.id symptom.name)
- 获取属于所选年龄、性别、身体部位、主要症状和附加症状组合的所有疾病(disease.id、disease.name、disease.critical疾病权重)。
应用程序设计
Excel 数据表
A Disease
table 相当简单;它包含列 H..O
,并删除了重复项。另外,每一行都有一个唯一的 ID。 (参见 AUTO_INCREMENT
)我不清楚 disease_weight
是否属于疾病 table 或其他地方。
症状可能最好实现为 SET
数据类型。
另一个 table 包含性别、age_range、body_part、症状和 disease_id(可能还有 disease_weight)列。
我看到的主要SELECTs
是
SELECT symptoms FROM table2
WHERE age_range = $ar
AND gender = $gender
AND body_part = $bp
AND FIND_IN_SET(symptoms, $symptom1);
获得可能的次要症状。
(您没有解释用户将如何输入 age_range;我认为这将以您的 cgi 语言结束 $ar
。(等)
SELECT d.name, ...
FROM Table2 t
JOIN Diseases d ON d.disease_id = t.disease_id
WHERE age_range ...
AND symptoms & $symptoms;
(我可能在 SET
运算符上有语法错误。)
如果还有其他SELECTs
,你需要现在考虑他们,而不是以后。
您还没有解释这个数据集将如何更新;这也可能是个问题。
你实际上并没有问如何从Excel到MySQL;让我们先完成数据库设计。
我知道这个问题已经过时了。但根据我的研究,很多症状检查器应用程序都使用 API 来访问某些数据。
来自here,是API使用的其中之一。不确定您是否使用自己创建的数据库,但这是不好的做法,因为您使用的信息可能是错误的和过时的。
我正在尝试开发一个医学症状检查器应用程序,因此我需要将包含超过 190k 条记录的 excel 数据表转换为 MySQL 数据库。我之前已经问过并阅读了多个相关问题,但我仍然觉得创建 efficient/proper 数据库设计很困难。
请查看应用程序的设计(第 1 张图片)以了解该应用程序的工作原理。
用户检查症状应遵循的步骤
- 用户选择性别、年龄和身体部位
- 应用程序显示所选身体部位的所有(common/less 常见)症状
- 用户选择症状
- Apps 询问是否有更多适用的症状(仅当症状在数据库中有其他症状时)。用户最多可以勾选 2 个附加症状。
- 应用程序显示所有(common/less 常见)所选症状和其他症状的疾病。疾病的顺序(权重)取决于所选的年龄、性别、身体部位、主要症状和所选的附加症状。
- 用户选择疾病
- 应用程序显示疾病信息
属性:
age
、gender
、bodypart
、symptom
、disease
age
:应用程序使用id查询数据库; 0-5为1,6-17为2,18-59为3,60+为4gender
:应用程序使用id查询数据库;男为1,女为0bodypart
:应用程序使用id查询数据库; 'Head front' 是 1,'Neck front' 是 2 等等...symptom
: 姓名,关键。创建 critical 是为了告诉用户 he/she 需要立即联系他们的医生。disease
:名称、关键、描述、测试和治疗。创建 critical 是为了告诉用户he/she 需要立即联系他们的医生
我已经有一个数据库,其中包含所有数据和 input/output 的可能组合。不幸的是,它并非设计用于应用程序(第二张图片)。 正如您在第二张图片中看到的,疾病的顺序(疾病权重)取决于所选的年龄、性别、身体部位、症状和所选的附加症状(适用的附加症状)。每个症状可能有最多 2 个额外的症状。用户可以检查 0、1 或 2 个附加症状,并且对于这些选项中的每一个,疾病的顺序将不同。
每种症状要么常见 (1),要么不太常见 (0)。这取决于用户输入(年龄、性别、身体部位)。
每种疾病权重<=5即为常见病。权重 > 5 的疾病被认为是不太常见的疾病。当然,这也取决于用户输入(年龄、性别、身体部位、症状、其他症状)。我已经尝试了很多东西,但我仍然不知道如何以正确的方式设计此功能。
谁能帮我设计一个合适的数据库?
更新 1
基本上我们在设计数据库时需要记住3个查询
- 获取属于所选年龄组合的所有症状(symptom.id、symptom.name、symptom.critical、症状群(common/less常见),性别 = $性别 AND 身体部位 = $bp
- 获取所选症状的所有附加症状(symtpom.id symptom.name)
- 获取属于所选年龄、性别、身体部位、主要症状和附加症状组合的所有疾病(disease.id、disease.name、disease.critical疾病权重)。
应用程序设计
Excel 数据表
A Disease
table 相当简单;它包含列 H..O
,并删除了重复项。另外,每一行都有一个唯一的 ID。 (参见 AUTO_INCREMENT
)我不清楚 disease_weight
是否属于疾病 table 或其他地方。
症状可能最好实现为 SET
数据类型。
另一个 table 包含性别、age_range、body_part、症状和 disease_id(可能还有 disease_weight)列。
我看到的主要SELECTs
是
SELECT symptoms FROM table2
WHERE age_range = $ar
AND gender = $gender
AND body_part = $bp
AND FIND_IN_SET(symptoms, $symptom1);
获得可能的次要症状。
(您没有解释用户将如何输入 age_range;我认为这将以您的 cgi 语言结束 $ar
。(等)
SELECT d.name, ...
FROM Table2 t
JOIN Diseases d ON d.disease_id = t.disease_id
WHERE age_range ...
AND symptoms & $symptoms;
(我可能在 SET
运算符上有语法错误。)
如果还有其他SELECTs
,你需要现在考虑他们,而不是以后。
您还没有解释这个数据集将如何更新;这也可能是个问题。
你实际上并没有问如何从Excel到MySQL;让我们先完成数据库设计。
我知道这个问题已经过时了。但根据我的研究,很多症状检查器应用程序都使用 API 来访问某些数据。 来自here,是API使用的其中之一。不确定您是否使用自己创建的数据库,但这是不好的做法,因为您使用的信息可能是错误的和过时的。