【问题标题】:Is there a way to store multiple records rather than using multiple rows in MySQL?有没有办法存储多条记录而不是在 MySQL 中使用多行?
【发布时间】:2020-12-06 03:04:00
【问题描述】:

我想充分利用 MySQL 来开发我为脊医开发的(网络)应用程序。

到目前为止,我 [每年] 都将所谓的进度笔记存储在一行中。表结构看起来像这样(progress_note_id、patient_id、date (Y-0-0)、progress_note)。当客户希望添加当前进度注释的年份时,他只需单击我使用 TinyMCE JavaScript 库的文本区域 (html) 的顶部,以创建新的输入日期以及速记注释。列的开头 (progress_note)。到目前为止,它工作正常,如果有 900 多个客户(估计),那么自申请开始(2018 年)以来每年可能有 1300 多个进度说明。

现在客户希望能够看到以前的进度笔记(历史),但无法修改任何以前的笔记,但仍然能够编写新的笔记。我想出的解决方案是在 textarea 中使用 XML,并使用 PHP 从旧注释中破译新注释。

但是,我的问题是,如果我必须将整个表格从一年转换为一天,那么将多个笔记转换为每一行可能会占用大量时间和精力,(估计 10 倍)这可能最终有 13,000 多行。我意识到,无论我选择哪种方法,都会有很多工作要做。我可能发现的另一种解决方法是在 MySQL 中使用 XML 列类型来潜在地存储多条记录,如果我想附加它,我只需要 PHP 来解释整个 XML 并在开头添加一个新的子节点.每个进度说明为 255 - 500 个字符。而在最坏的情况下,如果患者一年要 52 次(每周 1 次),那么开销应该不够大。

这是解决此问题的正确方法吗?我确实希望继续使用 MySQL DB,并且我意识到 MySQL 不适合 XML。澄清一下,我希望完成的事情与我打算对当前进度说明做的事情相同,但使用 XML。我相信升序(新 -> 最旧)。

<xml_result>
  <progress_note>
    <date>2020-08-16</date>
    <content></content>
  </progress_note>
<xml_result>

感谢您的宝贵时间和任何建议。

【问题讨论】:

  • 使用 XML 的好处是我可以创建一个临时文件。 MySQL 表并使用 XML 数据集中的内容填充它。因此,我可以搜索最后 3-5 个笔记,填充文本区域并使用 XML 将新笔记与旧笔记分开。
  • 13000 是很小的行数。不要害怕。
  • 我支持在一个表中包含 十亿 行的数据库。

标签: php mysql xml dataset


【解决方案1】:

首先,13000+对于mysql来说不是问题。在大多数情况下,对于 Web 应用程序,mysql 可以为单个实例处理超过 10m+ 的记录,具有良好的性能。

其次,您可以在文本字段中使用 XML 或 JSON 格式并在应用程序中处理解码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    相关资源
    最近更新 更多