将医疗数据表转换为 MySQL 数据库设计

Converting medical datasheet into MySQL database design

我正在尝试开发一个医学症状检查器应用程序,因此我需要将包含超过 190k 条记录的 excel 数据表转换为 MySQL 数据库。我之前已经问过并阅读了多个相关问题,但我仍然觉得创建 efficient/proper 数据库设计很困难。

请查看应用程序的设计(第 1 张图片)以了解该应用程序的工作原理。

用户检查症状应遵循的步骤

  1. 用户选择性别、年龄和身体部位
  2. 应用程序显示所选身体部位的所有(common/less 常见)症状
  3. 用户选择症状
  4. Apps 询问是否有更多适用的症状(仅当症状在数据库中有其他症状时)。用户最多可以勾选 2 个附加症状。
  5. 应用程序显示所有(common/less 常见)所选症状和其他症状的疾病。疾病的顺序(权重)取决于所选的年龄、性别、身体部位、主要症状和所选的附加症状。
  6. 用户选择疾病
  7. 应用程序显示疾病信息

属性: agegenderbodypartsymptomdisease

我已经有一个数据库,其中包含所有数据和 input/output 的可能组合。不幸的是,它并非设计用于应用程序(第二张图片)。 正如您在第二张图片中看到的,疾病的顺序(疾病权重)取决于所选的年龄、性别、身体部位、症状和所选的附加症状(适用的附加症状)。每个症状可能有最多 2 个额外的症状。用户可以检查 0、1 或 2 个附加症状,并且对于这些选项中的每一个,疾病的顺序将不同。

每种症状要么常见 (1),要么不太常见 (0)。这取决于用户输入(年龄、性别、身体部位)。

每种疾病权重<=5即为常见病。权重 > 5 的疾病被认为是不太常见的疾病。当然,这也取决于用户输入(年龄、性别、身体部位、症状、其他症状)。我已经尝试了很多东西,但我仍然不知道如何以正确的方式设计此功能。

谁能帮我设计一个合适的数据库?

更新 1

基本上我们在设计数据库时需要记住3个查询

  1. 获取属于所选年龄组合的所有症状(symptom.id、symptom.name、symptom.critical、症状群(common/less常见),性别 = $性别 AND 身体部位 = $bp
  2. 获取所选症状的所有附加症状(symtpom.id symptom.name)
  3. 获取属于所选年龄、性别、身体部位、主要症状和附加症状组合的所有疾病(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使用的其中之一。不确定您是否使用自己创建的数据库,但这是不好的做法,因为您使用的信息可能是错误的和过时的。